aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/libpq/fe-exec.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaces/libpq/fe-exec.c')
-rw-r--r--src/interfaces/libpq/fe-exec.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c
index 483644e7457..2f1b55fbd12 100644
--- a/src/interfaces/libpq/fe-exec.c
+++ b/src/interfaces/libpq/fe-exec.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.39 1997/11/03 04:21:49 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.40 1997/11/10 05:10:50 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -17,6 +17,7 @@
#include <signal.h>
#include <string.h>
#include <errno.h>
+#include <ctype.h>
#include "postgres.h"
#include "libpq/pqcomm.h"
#include "libpq/pqsignal.h"
@@ -31,12 +32,14 @@
#ifdef TIOCGWINSZ
struct winsize screen_size;
+
#else
struct winsize
{
int ws_row;
int ws_col;
} screen_size;
+
#endif
/* the rows array in a PGresGroup has to grow to accommodate the rows */
@@ -1674,6 +1677,7 @@ int
PQfnumber(PGresult *res, const char *field_name)
{
int i;
+ char *field_case;
if (!res)
{
@@ -1686,13 +1690,27 @@ PQfnumber(PGresult *res, const char *field_name)
res->attDescs == NULL)
return -1;
+ field_case = strdup(field_name);
+ if (*field_case == '"')
+ {
+ strcpy(field_case, field_case + 1);
+ *(field_case + strlen(field_case) - 1) = '\0';
+ }
+ else
+ for (i = 0; field_case; i++)
+ if (isupper(field_case[i]))
+ field_case[i] = tolower(field_case[i]);
+
for (i = 0; i < res->numAttributes; i++)
{
- if (strcasecmp(field_name, res->attDescs[i].name) == 0)
+ if (strcmp(field_name, res->attDescs[i].name) == 0)
+ {
+ free(field_case);
return i;
+ }
}
+ free(field_case);
return -1;
-
}
Oid