Remove */ characters from declare cursor statements before putting them into a
authorMichael Meskes <[email protected]>
Fri, 27 Nov 2009 16:11:50 +0000 (16:11 +0000)
committerMichael Meskes <[email protected]>
Fri, 27 Nov 2009 16:11:50 +0000 (16:11 +0000)
comment.

src/interfaces/ecpg/preproc/ecpg.addons

index d864dfbdf7a37ee1f2fe7f6d566db60baceb7bd1..757200c410cc85e407429a8e6ebd262a97c90172 100644 (file)
@@ -1,4 +1,4 @@
-/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.addons,v 1.4 2009/01/30 12:53:43 petere Exp $ */
+/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.addons,v 1.4.2.1 2009/11/27 16:11:50 meskes Exp $ */
 
 ECPG: stmtClosePortalStmt block
    {
@@ -238,6 +238,7 @@ ECPG: ExecuteStmtEXECUTEprepared_nameexecute_param_clauseexecute_rest block
 ECPG: DeclareCursorStmtDECLAREnamecursor_optionsCURSORopt_holdFORSelectStmt block
    {
        struct cursor *ptr, *this;
+       char *c1, *c2;
 
        for (ptr = cur; ptr != NULL; ptr = ptr->next)
        {
@@ -257,10 +258,18 @@ ECPG: DeclareCursorStmtDECLAREnamecursor_optionsCURSORopt_holdFORSelectStmt bloc
        argsinsert = argsresult = NULL;
        cur = this;
 
+       c1 = mm_strdup(this->command);
+       if ((c2 = strstr(c1, "*/")) != NULL)
+       {
+           /* We put this text into a comment, so we better remove [*][/]. */
+           c2[0] = '.';
+           c2[1] = '.';
+       }
+
        if (INFORMIX_MODE)
-           $$ = cat_str(5, adjust_informix(this->argsinsert), adjust_informix(this->argsresult), make_str("/*"), mm_strdup(this->command), make_str("*/"));
+           $$ = cat_str(5, adjust_informix(this->argsinsert), adjust_informix(this->argsresult), make_str("/*"), c1, make_str("*/"));
        else
-           $$ = cat_str(3, make_str("/*"), mm_strdup(this->command), make_str("*/"));
+           $$ = cat_str(3, make_str("/*"), c1, make_str("*/"));
    }
 ECPG: opt_hold block
    {