]> granicus.if.org Git - postgresql/commitdiff
ECPG: Fix searching for quoted cursor names case-sensitively.
authorMichael Meskes <meskes@postgresql.org>
Wed, 27 Nov 2013 10:02:13 +0000 (11:02 +0100)
committerMichael Meskes <meskes@postgresql.org>
Wed, 27 Nov 2013 10:02:13 +0000 (11:02 +0100)
Patch by Böszörményi Zoltán <zb@cybertec.at>

src/interfaces/ecpg/preproc/ecpg.addons
src/interfaces/ecpg/preproc/ecpg.header
src/interfaces/ecpg/preproc/ecpg.trailer

index 0682287c76522ddc53ae79f528f1e2c769649e8b..b3b36cf72da85b4fecb12df2b2b670fa366b44da 100644 (file)
@@ -290,7 +290,7 @@ ECPG: DeclareCursorStmtDECLAREcursor_namecursor_optionsCURSORopt_holdFORSelectSt
                struct cursor *ptr, *this;
                char *cursor_marker = $2[0] == ':' ? mm_strdup("$0") : mm_strdup($2);
                char *comment, *c1, *c2;
-               int (* strcmp_fn)(const char *, const char *) = ($2[0] == ':' ? strcmp : pg_strcasecmp);
+               int (* strcmp_fn)(const char *, const char *) = (($2[0] == ':' || $2[0] == '"') ? strcmp : pg_strcasecmp);
 
                for (ptr = cur; ptr != NULL; ptr = ptr->next)
                {
index 71b11f41e0dd5e1430c685dcbff4be7cfc5b0d3d..64e7600a8cbaad25be0988e3f76bc2506d8f5dfc 100644 (file)
@@ -492,7 +492,7 @@ add_additional_variables(char *name, bool insert)
 {
        struct cursor *ptr;
        struct arguments *p;
-       int (* strcmp_fn)(const char *, const char *) = (name[0] == ':' ? strcmp : pg_strcasecmp);
+       int (* strcmp_fn)(const char *, const char *) = ((name[0] == ':' || name[0] == '"') ? strcmp : pg_strcasecmp);
 
        for (ptr = cur; ptr != NULL; ptr=ptr->next)
        {
index 173fd08587cc71056a065903e08ef934f96cdf39..3b6d1e51924baca98c536d76fe3ef73bdfbd6c17 100644 (file)
@@ -291,7 +291,7 @@ ECPGCursorStmt:  DECLARE cursor_name cursor_options CURSOR opt_hold FOR prepared
                {
                        struct cursor *ptr, *this;
                        char *cursor_marker = $2[0] == ':' ? mm_strdup("$0") : mm_strdup($2);
-                       int (* strcmp_fn)(const char *, const char *) = ($2[0] == ':' ? strcmp : pg_strcasecmp);
+                       int (* strcmp_fn)(const char *, const char *) = (($2[0] == ':' || $2[0] == '"') ? strcmp : pg_strcasecmp);
                        struct variable *thisquery = (struct variable *)mm_alloc(sizeof(struct variable));
                        const char *con = connection ? connection : "NULL";
                        char *comment;