Re: [Fwd: [PORTS] Port Bug Report: parse error not detected on unterminated quote] - Mailing list pgsql-ports

From Bruce Momjian
Subject Re: [Fwd: [PORTS] Port Bug Report: parse error not detected on unterminated quote]
Date
Msg-id 199911292243.RAA16001@candle.pha.pa.us
Whole thread Raw
In response to [Fwd: [PORTS] Port Bug Report: parse error not detected on unterminated quote]  (Thomas Lockhart <lockhart@alumni.caltech.edu>)
List pgsql-ports
Seems this bug still exists.


> (back on list)
>
> Bruce, the problem is revealed with the "single-line input" mode of
> psql. I'm a bit suprised that the backend parser doesn't catch this,
> but I see why now: scan.l goes into a "string accumulate" mode when it
> sees a single quote, and doesn't actually send a token back to gram.y
> until it sees the closing quote. If EOT comes first, then there is no
> flag to tell gram.y (or whatever is the right thing) that there is
> still an active token being worked on.
>
> Not certain yet how to fix this; the "string accumulator" is currently
> local to scan.l and I'm not sure if scan.l can provide code to check
> this after it runs out of characters to process. I do have a lex/yacc
> book, but if anyone has some hints...
>
>                    - Thomas
>
> --
> Thomas Lockhart                lockhart@alumni.caltech.edu
> South Pasadena, California

-- Start of included mail From:  Kyle Bateman <kyle@actarg.com>

> Sender:  kyle@actarg.com
> Date:  Wed, 30 Jun 1999 08:38:10 -0600
> Organization:  Action Target Inc
> X-Accept-Language:  en
> To:  Thomas Lockhart <lockhart@alumni.caltech.edu>
> Subject:  Re: [PORTS] Port Bug Report: parse error not detected on unterminated
>     quote
> X-Mozilla-Status2:  00000000

> Thomas Lockhart wrote:
>
> > > Problem Description:
> > > --------------------
> > > If a single quote is left unmatched in the query, the parser
> > > seems to throw away the rest of the line without detecting
> > > an error.
> > > Test Case:
> > > ----------
> > > Enter a select like this:
> > > select * from mytable where id = 1234;
> > > You should get only one record.
> > >
> > > Now put in an errant single quote:
> > > select * from mytable' where id = 1234;
> > > Now you get the whole table.  This should really be a
> > > syntax error of some kind.
> >
> > And seems to be:
> >
> > postgres=> select * from mytable' where id = 1234;
> > postgres'> '
> > postgres-> ;
> > ERROR:  parser: parse error at or near "'"
> > postgres=>
> >
> > This is on a RH5.2 system with with the cvs distribution of Postgres
> > (rather than v6.5 exactly). But the parsing behavior should be the
> > same. I'm not sure what could be different in our installations...
> >
> >                      - Thomas
> >
> > --
> > Thomas Lockhart                         lockhart@alumni.caltech.edu
> > South Pasadena, California
>
> Yup, it seems to be OK in psql interactive mode.  The problem only shows
> up if I type:
>
> psql mydb -c "select * from mytable' where id = 1234;"
>
> --
>  ----------------------------------------------------
>  Kyle Bateman       President, Action Target Inc.
>  "Viva Yo!"         kyle@actarg.com (801)377-8033x101
>  ----------------------------------------------------
>
>
-- End of included mail.


--
  Bruce Momjian                        |  http://www.op.net/~candle
  maillist@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

pgsql-ports by date:

Previous
From: Joe Brenner
Date:
Subject: libpq.so.1 is needed by perl-DBD-Pg-0.91-1
Next
From: Bruce Momjian
Date:
Subject: Re: [PORTS] Re: [HACKERS] RedHat6.0 & Alpha