aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>1999-11-28 22:02:17 +0000
committerTom Lane <tgl@sss.pgh.pa.us>1999-11-28 22:02:17 +0000
commit66dbcd47ed3c5f8ca7ae8748fa6eed540ebfd18d (patch)
tree3748fd3ab498dc34f44f87e468f53e57046b064d /src
parentfb55fa04786a759befb356e404b29a25c72d0f8a (diff)
downloadpostgresql-66dbcd47ed3c5f8ca7ae8748fa6eed540ebfd18d.tar.gz
postgresql-66dbcd47ed3c5f8ca7ae8748fa6eed540ebfd18d.zip
Fix "Unable to identify an operator =$" problem that occurred when pgsql
expressions were written without spaces between operators and operands. Problem was that something like "if new.f1=new.f2 then" would be translated to "if $1=$2 then", and the Postgres lexer would tokenize that the wrong way. Fix is to emit spaces around $paramno constructs to ensure they are seen as separate tokens.
Diffstat (limited to 'src')
-rw-r--r--src/pl/plpgsql/src/gram.y32
1 files changed, 16 insertions, 16 deletions
diff --git a/src/pl/plpgsql/src/gram.y b/src/pl/plpgsql/src/gram.y
index 22f28c575e7..0a435b59147 100644
--- a/src/pl/plpgsql/src/gram.y
+++ b/src/pl/plpgsql/src/gram.y
@@ -4,7 +4,7 @@
* procedural language
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/gram.y,v 1.7 1999/08/16 19:57:21 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/gram.y,v 1.8 1999/11/28 22:02:17 tgl Exp $
*
* This software is copyrighted by Jan Wieck - Hamburg.
*
@@ -776,19 +776,19 @@ fori_lower :
switch (tok) {
case T_VARIABLE:
params[nparams] = yylval.var->varno;
- sprintf(buf, "$%d", ++nparams);
+ sprintf(buf, " $%d ", ++nparams);
plpgsql_dstring_append(&ds, buf);
break;
case T_RECFIELD:
params[nparams] = yylval.recfield->rfno;
- sprintf(buf, "$%d", ++nparams);
+ sprintf(buf, " $%d ", ++nparams);
plpgsql_dstring_append(&ds, buf);
break;
case T_TGARGV:
params[nparams] = yylval.trigarg->dno;
- sprintf(buf, "$%d", ++nparams);
+ sprintf(buf, " $%d ", ++nparams);
plpgsql_dstring_append(&ds, buf);
break;
@@ -1118,19 +1118,19 @@ read_sqlstmt (int until, char *s, char *sqlstart)
switch (tok) {
case T_VARIABLE:
params[nparams] = yylval.var->varno;
- sprintf(buf, "$%d", ++nparams);
+ sprintf(buf, " $%d ", ++nparams);
plpgsql_dstring_append(&ds, buf);
break;
case T_RECFIELD:
params[nparams] = yylval.recfield->rfno;
- sprintf(buf, "$%d", ++nparams);
+ sprintf(buf, " $%d ", ++nparams);
plpgsql_dstring_append(&ds, buf);
break;
case T_TGARGV:
params[nparams] = yylval.trigarg->dno;
- sprintf(buf, "$%d", ++nparams);
+ sprintf(buf, " $%d ", ++nparams);
plpgsql_dstring_append(&ds, buf);
break;
@@ -1205,19 +1205,19 @@ make_select_stmt()
switch (tok) {
case T_VARIABLE:
params[nparams] = yylval.var->varno;
- sprintf(buf, "$%d", ++nparams);
+ sprintf(buf, " $%d ", ++nparams);
plpgsql_dstring_append(&ds, buf);
break;
case T_RECFIELD:
params[nparams] = yylval.recfield->rfno;
- sprintf(buf, "$%d", ++nparams);
+ sprintf(buf, " $%d ", ++nparams);
plpgsql_dstring_append(&ds, buf);
break;
case T_TGARGV:
params[nparams] = yylval.trigarg->dno;
- sprintf(buf, "$%d", ++nparams);
+ sprintf(buf, " $%d ", ++nparams);
plpgsql_dstring_append(&ds, buf);
break;
@@ -1338,19 +1338,19 @@ make_select_stmt()
switch (tok) {
case T_VARIABLE:
params[nparams] = yylval.var->varno;
- sprintf(buf, "$%d", ++nparams);
+ sprintf(buf, " $%d ", ++nparams);
plpgsql_dstring_append(&ds, buf);
break;
case T_RECFIELD:
params[nparams] = yylval.recfield->rfno;
- sprintf(buf, "$%d", ++nparams);
+ sprintf(buf, " $%d ", ++nparams);
plpgsql_dstring_append(&ds, buf);
break;
case T_TGARGV:
params[nparams] = yylval.trigarg->dno;
- sprintf(buf, "$%d", ++nparams);
+ sprintf(buf, " $%d ", ++nparams);
plpgsql_dstring_append(&ds, buf);
break;
@@ -1385,19 +1385,19 @@ make_select_stmt()
switch (tok) {
case T_VARIABLE:
params[nparams] = yylval.var->varno;
- sprintf(buf, "$%d", ++nparams);
+ sprintf(buf, " $%d ", ++nparams);
plpgsql_dstring_append(&ds, buf);
break;
case T_RECFIELD:
params[nparams] = yylval.recfield->rfno;
- sprintf(buf, "$%d", ++nparams);
+ sprintf(buf, " $%d ", ++nparams);
plpgsql_dstring_append(&ds, buf);
break;
case T_TGARGV:
params[nparams] = yylval.trigarg->dno;
- sprintf(buf, "$%d", ++nparams);
+ sprintf(buf, " $%d ", ++nparams);
plpgsql_dstring_append(&ds, buf);
break;