On Sun, 18 Aug 2002, Tom Lane wrote:

> Peter Eisentraut <[EMAIL PROTECTED]> writes:
> > In strings.sql:
> 
> > -- illegal string continuation syntax
> > 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
> 
> > Character 89 is the end of the "third line" line, but the parse error is
> > at the beginning of that line.
> 
> This is fixed as of my later commit.
> 
> > In create_function_1.sql:
> 
> > CREATE FUNCTION test1 (int) RETURNS int LANGUAGE sql
> >     AS 'not even SQL';
> > ERROR:  parser: parse error at or near "not" at character 1
> 
> > Clearly confusing.
> 
> "Character 1" is correct as of the context that the parser is working
> in, namely the function body.  I don't think we can do much to change
> that, but perhaps we could make the message read like
> ERROR:  parser: parse error at or near "not" at character 1 of function body
> This would require giving the parser some sort of context-identifying
> string to tack onto the message, but that doesn't seem too hard.

Tom,

Reworking the code to taken into account token_start seems to work.

        elog(ERROR, "parser: %s at or near \"%s\" at character %i",
            message,token_start ? token_start : yytext,
            token_start ? (unsigned int)(token_start - scanbuf + 1) :
                          (unsigned int)(yytext - scanbuf + 1));

I will submit a patch once I do some more testing to find other possible
situations where this plays up.

Gavin


---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org

Reply via email to