From: Heikki Linnakangas Date: Thu, 10 Mar 2011 07:01:27 +0000 (+0200) Subject: Fix bugs in the isolation tester flex rules. X-Git-Tag: REL9_1_ALPHA5~134 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=74a09d92101f36a5fe66f4f74253708931546e4c;p=thirdparty%2Fpostgresql.git Fix bugs in the isolation tester flex rules. Tom Lane pointed out that it was giving a warning: "-s option given but default rule can be matched". That was because there was no rule to handle newline in a quoted string. I made that throw an error. Also, line number tracking was broken, giving incorrect line number on error. Fixed that too. --- diff --git a/src/test/isolation/specscanner.l b/src/test/isolation/specscanner.l index 6752aca82d4..c3193917c03 100644 --- a/src/test/isolation/specscanner.l +++ b/src/test/isolation/specscanner.l @@ -32,10 +32,9 @@ static void addlitchar(const char c); %x qstr non_newline [^\n\r] -space [ \t\n\r\f] +space [ \t\r\f] comment ("#"{non_newline}*) -whitespace ({space}+|{comment}) %% @@ -46,10 +45,10 @@ step { return(STEP); } teardown { return(TEARDOWN); } [\n] { yyline++; } -{whitespace} { - /* ignore */ - } +{comment} { /* ignore */ } +{space} { /* ignore */ } + /* Quoted strings: "foo" */ \" { litbufpos = 0; BEGIN(qstr); @@ -61,27 +60,36 @@ teardown { return(TEARDOWN); } return(string); } . { addlitchar(yytext[0]); } +\n { yyerror("unexpected newline in quoted string"); } +<> { yyerror("unterminated quoted string"); } + /* SQL blocks: { UPDATE ... } */ "{" { litbufpos = 0; BEGIN(sql); } - "}" { litbuf[litbufpos] = '\0'; yylval.str = strdup(litbuf); BEGIN(INITIAL); return(sqlblock); } -[^}] { addlitchar(yytext[0]);} - +. { + addlitchar(yytext[0]); + } +\n { + yyline++; + addlitchar(yytext[0]); + } +<> { + yyerror("unterminated sql block"); + } . { fprintf(stderr, "syntax error at line %d: unexpected character \"%s\"\n", yyline, yytext); exit(1); } - %% static void