Am Mittwoch, 24. Mai 2006 20:42 schrieb Tom Lane: > Peter Eisentraut <[EMAIL PROTECTED]> writes: > > I have spent some time figuring out how to resolve the parsing conflicts > > in Bernd Helmle's updatable views patch. The problem has now been > > reduced to specifically this situation: > > Could we see the proposed patches for gram.y?
Here it is. $ make -W gram.y gram.c bison -y -d gram.y conflicts: 4 shift/reduce These are basically for instances of the same problem. -- Peter Eisentraut http://developer.postgresql.org/~petere/
--- /home/pei/devel/pg82/pgsql/src/backend/parser/gram.y 2006-05-22 09:05:13.000000000 +0200 +++ gram.y 2006-05-26 09:41:21.000000000 +0200 @@ -339,7 +339,8 @@ %type <list> constraints_set_list %type <boolean> constraints_set_mode %type <str> OptTableSpace OptConsTableSpace OptTableSpaceOwner - +%type <list> opt_check_option +%type <node> opt_check_mode /* * If you make any token changes, update the keyword table in @@ -356,7 +357,7 @@ BACKWARD BEFORE BEGIN_P BETWEEN BIGINT BINARY BIT BOOLEAN_P BOTH BY - CACHE CALLED CASCADE CASE CAST CHAIN CHAR_P + CACHE CALLED CASCADE CASCADED CASE CAST CHAIN CHAR_P CHARACTER CHARACTERISTICS CHECK CHECKPOINT CLASS CLOSE CLUSTER COALESCE COLLATE COLUMN COMMENT COMMIT COMMITTED CONNECTION CONSTRAINT CONSTRAINTS CONVERSION_P CONVERT COPY CREATE CREATEDB @@ -4618,12 +4619,12 @@ /***************************************************************************** * * QUERY: - * CREATE [ OR REPLACE ] [ TEMP ] VIEW <viewname> '('target-list ')' AS <query> + * CREATE [ OR REPLACE ] [ TEMP ] VIEW <viewname> '('target-list ')' AS <query> [ WITH [ CASCADED | LOCAL ] CHECK OPTION ] * *****************************************************************************/ ViewStmt: CREATE OptTemp VIEW qualified_name opt_column_list - AS SelectStmt + AS SelectStmt opt_check_option { ViewStmt *n = makeNode(ViewStmt); n->replace = false; @@ -4631,10 +4632,11 @@ n->view->istemp = $2; n->aliases = $5; n->query = (Query *) $7; + n->options = (List *) $8; $$ = (Node *) n; } | CREATE OR REPLACE OptTemp VIEW qualified_name opt_column_list - AS SelectStmt + AS SelectStmt opt_check_option { ViewStmt *n = makeNode(ViewStmt); n->replace = true; @@ -4642,10 +4644,25 @@ n->view->istemp = $4; n->aliases = $7; n->query = (Query *) $9; + n->options = (List *) $10; $$ = (Node *) n; } ; +opt_check_option: + WITH opt_check_mode CHECK OPTION + { + $$ = list_make1( $2 ); + } + | /* EMPTY */ { $$ = NIL; } + ; + +opt_check_mode: + CASCADED { $$ = (Node *)makeString("cascaded"); } + | LOCAL { $$ = (Node *)makeString("local"); } + | /* EMPTY */ { $$ = (Node *)makeString("cascaded"); } + ; + /***************************************************************************** * * QUERY: @@ -8500,7 +8517,6 @@ | VARYING | VIEW | VOLATILE - | WITH | WITHOUT | WORK | WRITE @@ -8551,8 +8567,6 @@ | SETOF | SMALLINT | SUBSTRING - | TIME - | TIMESTAMP | TREAT | TRIM | VARCHAR @@ -8608,6 +8622,7 @@ | ASC | ASYMMETRIC | BOTH + | CASCADED | CASE | CAST | CHECK @@ -8662,6 +8677,8 @@ | SYMMETRIC | TABLE | THEN + | TIME + | TIMESTAMP | TO | TRAILING | TRUE_P @@ -8671,6 +8688,7 @@ | USING | WHEN | WHERE + | WITH ;
---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match