Patch for "Bug of PL/pgSQL parser"

Started by eutmover 23 years ago3 messages
#1eutm
eutm@yandex.ru
1 attachment(s)

Some weeks ago i wrote about one problem(called as
"Bug of PL/pgSQL parser"):

"eutm" <eutm@yandex.ru> writes:

Dear Sirs!:)I encounted one small problem,working with
PostgreSQL 7.3devel.It can look a
bit strange,but i have to use whitespaces in names of

databases,tables,fields

and so on(like "roomno jk").It's possible to create them all and work

with them

(INSERT,DELETE,UPDATE),but PL/pgSQL parser(compiler ?) can't execute such
statements...

Today i send a simple patch(my first:)).
Regards,Eugene.

Attachments:

plpgsql.dquote.patchapplication/octet-stream; name=plpgsql.dquote.patchDownload
--- src/pl/plpgsql/src/scan.l	Thu Mar  7 07:52:15 2002
+++ ../DONE/scan.l	Mon Jul 22 06:53:14 2002
@@ -57,9 +57,9 @@
 
 %option yylineno
 
-
-WS    [\200-\377_A-Za-z"]
-WC    [\200-\377_A-Za-z0-9"]
+DQUOTE	\"([^\"])*\"
+WS    [\200-\377_A-Za-z]
+WC    [\200-\377_A-Za-z0-9]
 
 %x	IN_STRING IN_COMMENT
 
@@ -151,17 +151,48 @@
      * ----------
      */
 {WS}{WC}*		{ return plpgsql_parse_word(yytext);	}
+{DQUOTE}*		{ return plpgsql_parse_word(yytext);	}
+
 {WS}{WC}*\.{WS}{WC}*	{ return plpgsql_parse_dblword(yytext);	}
+{WS}{WC}*\.{DQUOTE}*	{ return plpgsql_parse_dblword(yytext);	}
+{DQUOTE}*\.{WS}{WC}*	{ return plpgsql_parse_dblword(yytext);	}
+{DQUOTE}*\.{DQUOTE}*	{ return plpgsql_parse_dblword(yytext);	}
+
 {WS}{WC}*\.{WS}{WC}*\.{WS}{WC}*	{ return plpgsql_parse_tripword(yytext); }
+{WS}{WC}*\.{WS}{WC}*\.{DQUOTE}*	{ return plpgsql_parse_tripword(yytext); }
+{WS}{WC}*\.{DQUOTE}*\.{WS}{WC}*	{ return plpgsql_parse_tripword(yytext); }
+{WS}{WC}*\.{DQUOTE}*\.{DQUOTE}*	{ return plpgsql_parse_tripword(yytext); }
+{DQUOTE}*\.{WS}{WC}*\.{WS}{WC}*	{ return plpgsql_parse_tripword(yytext); }
+{DQUOTE}*\.{WS}{WC}*\.{DQUOTE}*	{ return plpgsql_parse_tripword(yytext); }
+{DQUOTE}*\.{DQUOTE}*\.{WS}{WC}*	{ return plpgsql_parse_tripword(yytext); }
+{DQUOTE}*\.{DQUOTE}*\.{DQUOTE}*	{ return plpgsql_parse_tripword(yytext); }
+
 {WS}{WC}*%TYPE		{ return plpgsql_parse_wordtype(yytext);	}
+{DQUOTE}*%TYPE		{ return plpgsql_parse_wordtype(yytext);	}
+
 {WS}{WC}*\.{WS}{WC}*%TYPE	{ return plpgsql_parse_dblwordtype(yytext); }
+{WS}{WC}*\.{DQUOTE}*%TYPE	{ return plpgsql_parse_dblwordtype(yytext); }
+{DQUOTE}*\.{WS}{WC}*%TYPE	{ return plpgsql_parse_dblwordtype(yytext); }
+{DQUOTE}*\.{DQUOTE}*%TYPE	{ return plpgsql_parse_dblwordtype(yytext); }
+
 {WS}{WC}*%ROWTYPE	{ return plpgsql_parse_wordrowtype(yytext);	}
+{DQUOTE}*%ROWTYPE	{ return plpgsql_parse_wordrowtype(yytext);	}
 
 \$[0-9]+		{ return plpgsql_parse_word(yytext);	}
+
 \$[0-9]+\.{WS}{WC}*	{ return plpgsql_parse_dblword(yytext);	}
+\$[0-9]+\.{DQUOTE}*	{ return plpgsql_parse_dblword(yytext);	}
+
 \$[0-9]+\.{WS}{WC}*\.{WS}{WC}*	{ return plpgsql_parse_tripword(yytext); }
+\$[0-9]+\.{WS}{WC}*\.{DQUOTE}*	{ return plpgsql_parse_tripword(yytext); }
+\$[0-9]+\.{DQUOTE}*\.{WS}{WC}*	{ return plpgsql_parse_tripword(yytext); }
+\$[0-9]+\.{DQUOTE}*\.{DQUOTE}*	{ return plpgsql_parse_tripword(yytext); }
+
 \$[0-9]+%TYPE		{ return plpgsql_parse_wordtype(yytext);	}
+
 \$[0-9]+\.{WS}{WC}*%TYPE	{ return plpgsql_parse_dblwordtype(yytext); }
+\$[0-9]+\.{DQUOTE}*%TYPE	{ return plpgsql_parse_dblwordtype(yytext); }
+
 \$[0-9]+%ROWTYPE	{ return plpgsql_parse_wordrowtype(yytext);	}
 
 [0-9]+			{ return T_NUMBER;			}
#2Bruce Momjian
pgman@candle.pha.pa.us
In reply to: eutm (#1)
Re: Patch for "Bug of PL/pgSQL parser"

Patch rejected. Tom Lane pointed out some mistakes in this patch, and
the patch does not show any corrections.

---------------------------------------------------------------------------

eutm wrote:

Some weeks ago i wrote about one problem(called as
"Bug of PL/pgSQL parser"):

"eutm" <eutm@yandex.ru> writes:

Dear Sirs!:)I encounted one small problem,working with
PostgreSQL 7.3devel.It can look a
bit strange,but i have to use whitespaces in names of

databases,tables,fields

and so on(like "roomno jk").It's possible to create them all and work

with them

(INSERT,DELETE,UPDATE),but PL/pgSQL parser(compiler ?) can't execute such
statements...

Today i send a simple patch(my first:)).
Regards,Eugene.

[ Attachment, skipping... ]

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026
#3Bruce Momjian
pgman@candle.pha.pa.us
In reply to: eutm (#1)
Re: Patch for "Bug of PL/pgSQL parser"

This has been fixed in the current sources. You can test it if you
download the snapshot from our ftp site.

---------------------------------------------------------------------------

eutm wrote:

Some weeks ago i wrote about one problem(called as
"Bug of PL/pgSQL parser"):

"eutm" <eutm@yandex.ru> writes:

Dear Sirs!:)I encounted one small problem,working with
PostgreSQL 7.3devel.It can look a
bit strange,but i have to use whitespaces in names of

databases,tables,fields

and so on(like "roomno jk").It's possible to create them all and work

with them

(INSERT,DELETE,UPDATE),but PL/pgSQL parser(compiler ?) can't execute such
statements...

Today i send a simple patch(my first:)).
Regards,Eugene.

[ Attachment, skipping... ]

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073