Thread: create view bug
The follwoing statement does not work: create view testview (primary) as select 'true'; The error I get is: ERROR: parser: parse error at or near "primary" Using PostgerSQL 7.1 on linux redhat kernel 2.2.19 intel. > Jefim Matskin > > >
Jefim Matskin <mjefim@sphera.com> writes: > The follwoing statement does not work: > create view testview (primary) as select 'true'; > The error I get is: > ERROR: parser: parse error at or near "primary" This is not a bug --- the syntax of CREATE VIEW has no provision for a column name list after the view name. You can control the view column names like this: play=> create view testview as select 'true'::bool as primary; CREATE 4581172 1 play=> \d testview View "testview" Attribute | Type | Modifier -----------+---------+---------- primary | boolean | View definition: SELECT 't'::bool AS "primary"; play=> Note also the cast to ensure the column has a well-defined data type... regards, tom lane
> My problem is that the ErWin generates the following syntax > create view [view name] ( [col1] , [col2] ) as select [s1], [s2] from > [table name]; > and as far as I know this is SQL92. (checks spec...) You're right, SQL92 does require this syntax. Okay, I'll put it on the to-do list. regards, tom lane
Jefim Matskin <mjefim@sphera.com> wrote: > My problem is that the ErWin generates the following syntax > create view [view name] ( [col1] , [col2] ) as select [s1], [s2] from > [table name]; > and as far as I know this is SQL92. On looking more closely, we *do* support this syntax, and have since release 7.0. I was misled by the fact that the on-line documentation failed to mention it. (Docs fixed now.) > One of the column names I need is > 'primary' - and the creation of the view fails. The problem here is that PRIMARY is a reserved word in Postgres. I realize that SQL92 describes it as a non-reserved keyword, but trying to make it so creates ambiguities in our grammar. You'll need to pick a different column name. Sorry. regards, tom lane
Bruce Momjian <pgman@candle.pha.pa.us> writes: > This feature will appear in 7.2: > test=> create view aaa (x) as select relname from pg_class; It's already there in 7.1. IIRC, the real problem was that Jefim was trying to use a reserved word as a column name. regards, tom lane
This feature will appear in 7.2: test=> create view aaa (x) as select relname from pg_class; CREATE test=> select * from aaa; x --------------------------------- pg_type pg_attribute > > My problem is that the ErWin generates the following syntax > > create view [view name] ( [col1] , [col2] ) as select [s1], [s2] from > > [table name]; > > and as far as I know this is SQL92. > > (checks spec...) You're right, SQL92 does require this syntax. Okay, > I'll put it on the to-do list. > > regards, tom lane > > ---------------------------(end of broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to majordomo@postgresql.org so that your > message can get through to the mailing list cleanly > -- Bruce Momjian | http://candle.pha.pa.us pgman@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