Thread: Syntax of LOCK TABLE ...
Hello, I'am trying CVS snapshor of postgres and on web page (new features of postgres 6.5) is: [...] New LOCK TABLE IN ... MODE(Vadim) [...] I'am using similar statement on Oracle. But postgres doesn't accept keyword 'IN'. Example: => lock table t row share mode; LOCK TABLE... this works but: => lock table t IN row share mode; ERROR: parser: parse error at or near "in" .... but this not It is mistake in grammar, or is there all OK ? thanks, David -- * David Sauer, student of Czech Technical University * electronic mail: davids@orfinet.cz (mime compatible)
> Hello, > > I'am trying CVS snapshor of postgres and on web page (new features of > postgres 6.5) is: > > [...] > New LOCK TABLE IN ... MODE(Vadim) > [...] > > I'am using similar statement on Oracle. But postgres doesn't accept > keyword 'IN'. > > Example: > > => lock table t row share mode; > LOCK TABLE > ... this works > > but: > > => lock table t IN row share mode; > ERROR: parser: parse error at or near "in" > .... but this not > > It is mistake in grammar, or is there all OK ? Works here: test=> lock table pg_class IN row share mode;LOCK TABLE -- 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, Pennsylvania19026
David Sauer <davids@orfinet.cz> writes: > => lock table t row share mode; > LOCK TABLE > ... this works > but: > => lock table t IN row share mode; > ERROR: parser: parse error at or near "in" > .... but this not > It is mistake in grammar, or is there all OK ? I see this behavior too, and a quick look at gram.y shows that indeed it is not expecting IN in a LOCK statement. I do not know whether the standard permits (or requires?) the IN keyword, so I don't know whether to make the change... regards, tom lane
Tom Lane wrote: > > David Sauer <davids@orfinet.cz> writes: > > => lock table t row share mode; > > LOCK TABLE > > ... this works > > but: > > => lock table t IN row share mode; > > ERROR: parser: parse error at or near "in" > > .... but this not > > > It is mistake in grammar, or is there all OK ? > > I see this behavior too, and a quick look at gram.y shows that indeed > it is not expecting IN in a LOCK statement. I do not know whether the > standard permits (or requires?) the IN keyword, so I don't know whether > to make the change... IN is required... Vadim
> Tom Lane wrote: > > > > David Sauer <davids@orfinet.cz> writes: > > > => lock table t row share mode; > > > LOCK TABLE > > > ... this works > > > but: > > > => lock table t IN row share mode; > > > ERROR: parser: parse error at or near "in" > > > .... but this not > > > > > It is mistake in grammar, or is there all OK ? > > > > I see this behavior too, and a quick look at gram.y shows that indeed > > it is not expecting IN in a LOCK statement. I do not know whether the > > standard permits (or requires?) the IN keyword, so I don't know whether > > to make the change... > > IN is required... I have modified the grammar to require IN. Looks like someone cleaned up the LOCK grammar options recently, but forgot the IN. -- 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, Pennsylvania19026
> I have modified the grammar to require IN. Looks like someone cleaned > up the LOCK grammar options recently, but forgot the IN. 'Twas me. I don't recall seeing IN in the first place, but the original gram.y support code did not actually use the normal yacc grammar, but rather read most fields as IDENTS and then did strcmp()'s to build the parse tree. There were lots of hidden behaviors in that. Sorry, and thanks for fixing it. - Tom -- Thomas Lockhart lockhart@alumni.caltech.edu South Pasadena, California