Patch for "Bug of PL/pgSQL parser"
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; }
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 ofdatabases,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
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 ofdatabases,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