Обсуждение: Is level a reserved keyword?
We've been running a customer telephone service, and we've been storing the customers subscription as levels; ie, we have a table, named customer with the column "level". INSERT and SELECT have worked on this table, just as they should; but now, after moving between two databases of the same version, both the psql client, and the pg python adapter complains near the word "level". Any ideas? Seems like a bug? Regards, Morten ------------------------------------------------------------- How to reply to email: http://home.sol.no/~vidaandr/news/OBSquoting.html (norsk) http://home.sol.no/~vidaandr/news/FAQquoting.html (english) Who is the bigger fool? The fool or the fool who follows him?
> the word "level". Any ideas? Seems like a bug? This is PostgreSQL 6.5 btw. Regards, Morten
> > the word "level". Any ideas? Seems like a bug? > > This is PostgreSQL 6.5 btw. > I found the error. The original (accepting level db) was version 6.5.3, while the non-accepting was 6.5.0 Regards, Morten
"Morten W. Petersen" <morten@src.no> writes: >> the word "level". Any ideas? Seems like a bug? > This is PostgreSQL 6.5 btw. > Regards, Morten
"Morten W. Petersen" <morten@src.no> writes:
> We've been running a customer telephone service, and we've been storing
> the customers subscription as levels; ie, we have a table, named customer
> with the column "level". INSERT and SELECT have worked on this table, just
> as they should; but now, after moving between two databases of the same
> version, both the psql client, and the pg python adapter complains near
> the word "level". Any ideas? Seems like a bug?
LEVEL is a keyword, but it should not be a reserved word, and it's not
in 7.0:
regression=# create table f1 (level int);
CREATE
I believe 6.5 was missing a whole bunch of entries from the parser's
list of keywords-that-can-also-be-column-names, so it doesn't surprise
me that you see this problem in 6.5.
You could update to 7.0 (recommended solution ;-)), or put double
quotes around "level" in all your queries, or rename the column,
or modify src/backend/parser/gram.y to add a production for LEVEL
to the ColId list.
regards, tom lane
Morten W. Petersen writes: > > > the word "level". Any ideas? Seems like a bug? > > > > This is PostgreSQL 6.5 btw. > > > > I found the error. The original (accepting level db) was version 6.5.3, > while the non-accepting was 6.5.0 "level", as in `set transaction isolation level serializable', is in general "subject to being a keyword". It might not be in some versions, but parsers are so subtle that could be again in the future. -- Peter Eisentraut Sernanders väg 10:115 peter_e@gmx.net 75262 Uppsala http://yi.org/peter-e/ Sweden