]> 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:14:52 +0000 (11:14 +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 85ec391988c6feca38a84cc2e43ec9777cc2374e..73a008c0db903cb19b30d713e68eef74feb99ca8 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 88d9cf53c0c87a41f928c6b6bd8a2a419d640f32..75538e3bd9601fdb28124001b925bb4cbef5b025 100644 (file)
@@ -477,7 +477,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 43b954f04578d89066f521d7bc788ce2b50bb524..70dc690a5bc4f67cb27ab0ab5137f09b203c324f 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;