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: