diff --git a/src/backend/parser/scan.l b/src/backend/parser/scan.l
index c8e13c382e54572be3735969665c56eaad8b2e35..51e1aa4be8eb9e40c064ff4406c9cda303e1af7b 100644
--- a/src/backend/parser/scan.l
+++ b/src/backend/parser/scan.l
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.98 2002/08/04 06:36:18 thomas Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.99 2002/08/17 13:06:50 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -582,8 +582,12 @@ other			.
 void
 yyerror(const char *message)
 {
-	elog(ERROR, "parser: %s at or near \"%s\"", message,
-		 token_start ? token_start : yytext);
+      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));
 }