]> granicus.if.org Git - postgresql/commitdiff
Code review for 'at character n' patch --- point at proper end of
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 18 Aug 2002 03:35:08 +0000 (03:35 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 18 Aug 2002 03:35:08 +0000 (03:35 +0000)
a token scanned by multiple lex rules.

src/backend/parser/scan.l
src/test/regress/expected/strings.out

index 51e1aa4be8eb9e40c064ff4406c9cda303e1af7b..5092f82e5e01bced287ce2ee750a48aa64a795eb 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.99 2002/08/17 13:06:50 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.100 2002/08/18 03:35:08 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -582,12 +582,13 @@ other                     .
 void
 yyerror(const char *message)
 {
-      if(yyleng == 1 && *yytext == YY_END_OF_BUFFER_CHAR)
-              elog(ERROR, "parser: %s at end of input",message);
-      else
-              elog(ERROR, "parser: %s at or near \"%s\" at character %i",
-                      message,token_start ? token_start : yytext,
-                      (unsigned int)(yytext - scanbuf + 1));
+       const char *loc = token_start ? token_start : yytext;
+
+       if (*loc == YY_END_OF_BUFFER_CHAR)
+               elog(ERROR, "parser: %s at end of input", message);
+       else
+               elog(ERROR, "parser: %s at or near \"%s\" at character %d",
+                        message, loc, (loc - scanbuf + 1));
 }
 
 
index b275df2ff8680dc24dba0b68d599a48fbbe0bd35..67dbd1a2d922d1efb5557dd20a66f9b3190fc406 100644 (file)
@@ -18,7 +18,7 @@ SELECT 'first line'
 ' - next line' /* this comment is not allowed here */
 ' - third line'
        AS "Illegal comment within continuation";
-ERROR:  parser: parse error at or near "' - third line'" at character 89
+ERROR:  parser: parse error at or near "' - third line'" at character 75
 --
 -- test conversions between various string types
 -- E021-10 implicit casting among the character data types