]> 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:15:34 +0000 (11:15 +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 9f0168611567c8ca06f6a3bea89ec00531e4d945..4753c1ed6f5a3f136d577ff38058efdb6f997fc8 100644 (file)
@@ -296,7 +296,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 1710ef55d791dcd4609cef26e125a84c04190dd8..80c90feb6a682f0fd8b78c53062158e6f0ef0fc4 100644 (file)
@@ -377,7 +377,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 6d126f7300e62d8440c9c77da862b27e07a194d8..37e8dbb7eb917b8a5c210d4bd0a7c1f982fa30e7 100644 (file)
@@ -289,7 +289,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;