Tom Lane wrote:
> Rod Taylor <[EMAIL PROTECTED]> writes:
> > Updated to tag REL7_2_4 on FreeBSD 4.7 and cannot compile it.  gram.y
> > errors complaining: invalid character: ','.
> 
> > bash-2.05b$ bison --version
> > bison (GNU Bison) 1.75
> 
> We just had that discussion on pgcore.  The 7.2 grammar was developed
> against bison 1.28; it works with warnings against bison 1.35, but bison
> 1.75 just flat rejects it (not for any significant reason, but just
> because they decided to get anal-retentive about whether they'd allow
> commas in keyword lists).
> 
> We could update the 7.2 grammar and compile it with the latest bison,
> but we were worried about whether we might introduce any subtle problems
> if we did.  The 7.2 branch has received zero testing with bison 1.75.
> 
> ISTM that the eve of what'll probably be our last dot-release for 7.2
> is not the time to drop a new bison into its toolchain.

Ooops.  Last patch wasn't done using CVS diff.  This one is, in case
it matters...


-- 
Kevin Brown                                           [EMAIL PROTECTED]
Index: gram.y
===================================================================
RCS file: /projects/cvsroot/pgsql-server/src/backend/parser/gram.y,v
retrieving revision 2.276.2.1
diff -u -d -r2.276.2.1 gram.y
--- gram.y      2002/03/09 17:41:04     2.276.2.1
+++ gram.y      2003/01/30 06:55:25
@@ -129,33 +129,33 @@
        InsertStmt                      *istmt;
 }
 
-%type <node>   stmt,
-               AlterGroupStmt, AlterSchemaStmt, AlterTableStmt, AlterUserStmt,
-               AnalyzeStmt,
-               ClosePortalStmt, ClusterStmt, CommentStmt, ConstraintsSetStmt,
-               CopyStmt, CreateAsStmt, CreateGroupStmt, CreatePLangStmt,
-               CreateSchemaStmt, CreateSeqStmt, CreateStmt, CreateTrigStmt,
-               CreateUserStmt, CreatedbStmt, CursorStmt, DefineStmt, DeleteStmt,
-               DropGroupStmt, DropPLangStmt, DropSchemaStmt, DropStmt, DropTrigStmt,
-               DropUserStmt, DropdbStmt, ExplainStmt, FetchStmt,
-               GrantStmt, IndexStmt, InsertStmt, ListenStmt, LoadStmt, LockStmt,
-               NotifyStmt, OptimizableStmt, ProcedureStmt, ReindexStmt,
-               RemoveAggrStmt, RemoveFuncStmt, RemoveOperStmt,
-               RenameStmt, RevokeStmt, RuleActionStmt, RuleActionStmtOrEmpty,
-               RuleStmt, SelectStmt, TransactionStmt, TruncateStmt,
-               UnlistenStmt, UpdateStmt, VacuumStmt, VariableResetStmt,
-               VariableSetStmt, VariableShowStmt, ViewStmt, CheckPointStmt
+%type <node>   stmt
+               AlterGroupStmt AlterSchemaStmt AlterTableStmt AlterUserStmt
+               AnalyzeStmt
+               ClosePortalStmt ClusterStmt CommentStmt ConstraintsSetStmt
+               CopyStmt CreateAsStmt CreateGroupStmt CreatePLangStmt
+               CreateSchemaStmt CreateSeqStmt CreateStmt CreateTrigStmt
+               CreateUserStmt CreatedbStmt CursorStmt DefineStmt DeleteStmt
+               DropGroupStmt DropPLangStmt DropSchemaStmt DropStmt DropTrigStmt
+               DropUserStmt DropdbStmt ExplainStmt FetchStmt
+               GrantStmt IndexStmt InsertStmt ListenStmt LoadStmt LockStmt
+               NotifyStmt OptimizableStmt ProcedureStmt ReindexStmt
+               RemoveAggrStmt RemoveFuncStmt RemoveOperStmt
+               RenameStmt RevokeStmt RuleActionStmt RuleActionStmtOrEmpty
+               RuleStmt SelectStmt TransactionStmt TruncateStmt
+               UnlistenStmt UpdateStmt VacuumStmt VariableResetStmt
+               VariableSetStmt VariableShowStmt ViewStmt CheckPointStmt
 
-%type <node>   select_no_parens, select_with_parens, select_clause,
+%type <node>   select_no_parens select_with_parens select_clause
                                simple_select
 
 %type <node>    alter_column_default
 %type <ival>    drop_behavior
 
-%type <list>   createdb_opt_list, createdb_opt_item
+%type <list>   createdb_opt_list createdb_opt_item
 
-%type <ival>   opt_lock, lock_type
-%type <boolean>        opt_force, opt_or_replace
+%type <ival>   opt_lock lock_type
+%type <boolean>        opt_force opt_or_replace
 
 %type <list>   user_list
 
@@ -165,7 +165,7 @@
 %type <list>   OptUserList
 %type <defelt> OptUserElem
 
-%type <boolean>        TriggerActionTime, TriggerForSpec, opt_trusted, opt_procedural
+%type <boolean>        TriggerActionTime TriggerForSpec opt_trusted opt_procedural
 %type <str>            opt_lancompiler
 
 %type <str>            OptConstrFromTable
@@ -173,111 +173,111 @@
 %type <str>            TriggerEvents
 %type <value>  TriggerFuncArg
 
-%type <str>            relation_name, copy_file_name, copy_delimiter, copy_null,
-               database_name, access_method_clause, access_method, attr_name,
-               class, index_name, name, func_name, file_name
+%type <str>            relation_name copy_file_name copy_delimiter copy_null
+               database_name access_method_clause access_method attr_name
+               class index_name name func_name file_name
 
-%type <str>            opt_id,
-               all_Op, MathOp, opt_name,
-               OptUseOp, opt_class, SpecialRuleRelation
+%type <str>            opt_id
+               all_Op MathOp opt_name
+               OptUseOp opt_class SpecialRuleRelation
 
-%type <str>            opt_level, opt_encoding
-%type <str>            privileges, operation_commalist
+%type <str>            opt_level opt_encoding
+%type <str>            privileges operation_commalist
 %type <node>   grantee
 %type <list>   grantee_list
-%type <chr>            operation, TriggerOneEvent
+%type <chr>            operation TriggerOneEvent
 
-%type <list>   stmtblock, stmtmulti,
-               into_clause, OptTempTableName, relation_name_list,
-               OptTableElementList, OptInherit, definition, opt_distinct,
-               opt_with, func_args, func_args_list, func_as,
-               oper_argtypes, RuleActionList, RuleActionMulti,
-               opt_column_list, columnList, opt_name_list,
-               sort_clause, sortby_list, index_params, index_list, name_list,
-               from_clause, from_list, opt_array_bounds,
-               expr_list, attrs, target_list, update_target_list,
-               def_list, opt_indirection, group_clause, TriggerFuncArgs,
-               select_limit, opt_select_limit
+%type <list>   stmtblock stmtmulti
+               into_clause OptTempTableName relation_name_list
+               OptTableElementList OptInherit definition opt_distinct
+               opt_with func_args func_args_list func_as
+               oper_argtypes RuleActionList RuleActionMulti
+               opt_column_list columnList opt_name_list
+               sort_clause sortby_list index_params index_list name_list
+               from_clause from_list opt_array_bounds
+               expr_list attrs target_list update_target_list
+               def_list opt_indirection group_clause TriggerFuncArgs
+               select_limit opt_select_limit
 
-%type <typnam> func_arg, func_return, func_type, aggr_argtype
+%type <typnam> func_arg func_return func_type aggr_argtype
 
-%type <boolean>        opt_arg, TriggerForOpt, TriggerForType, OptTemp, OptWithOids
+%type <boolean>        opt_arg TriggerForOpt TriggerForType OptTemp OptWithOids
 
-%type <list>   for_update_clause, opt_for_update_clause, update_list
+%type <list>   for_update_clause opt_for_update_clause update_list
 %type <boolean>        opt_all
 %type <boolean>        opt_table
-%type <boolean>        opt_chain, opt_trans
+%type <boolean>        opt_chain opt_trans
 
-%type <node>   join_outer, join_qual
+%type <node>   join_outer join_qual
 %type <jtype>  join_type
 
-%type <list>   extract_list, position_list
-%type <list>   substr_list, trim_list
+%type <list>   extract_list position_list
+%type <list>   substr_list trim_list
 %type <ival>   opt_interval
-%type <node>   substr_from, substr_for
+%type <node>   substr_from substr_for
 
-%type <boolean>        opt_binary, opt_using, opt_instead, opt_cursor
-%type <boolean>        opt_with_copy, index_opt_unique, opt_verbose, opt_full
-%type <boolean>        opt_freeze, analyze_keyword
+%type <boolean>        opt_binary opt_using opt_instead opt_cursor
+%type <boolean>        opt_with_copy index_opt_unique opt_verbose opt_full
+%type <boolean>        opt_freeze analyze_keyword
 
-%type <ival>   copy_dirn, direction, reindex_type, drop_type,
-               opt_column, event, comment_type
+%type <ival>   copy_dirn direction reindex_type drop_type
+               opt_column event comment_type
 
 %type <ival>   fetch_how_many
 
-%type <node>   select_limit_value, select_offset_value
+%type <node>   select_limit_value select_offset_value
 
 %type <list>   OptSeqList
 %type <defelt> OptSeqElem
 
 %type <istmt>  insert_rest
 
-%type <node>   OptTableElement, ConstraintElem
+%type <node>   OptTableElement ConstraintElem
 %type <node>   columnDef
 %type <defelt> def_elem
-%type <node>   def_arg, columnElem, where_clause,
-                               a_expr, b_expr, c_expr, AexprConst,
-                               in_expr, having_clause
-%type <list>   row_descriptor, row_list, in_expr_nodes
+%type <node>   def_arg columnElem where_clause
+                               a_expr b_expr c_expr AexprConst
+                               in_expr having_clause
+%type <list>   row_descriptor row_list in_expr_nodes
 %type <node>   row_expr
-%type <node>   case_expr, case_arg, when_clause, case_default
+%type <node>   case_expr case_arg when_clause case_default
 %type <boolean>        opt_empty_parentheses
 %type <list>   when_clause_list
 %type <ival>   sub_type
-%type <list>   OptCreateAs, CreateAsList
+%type <list>   OptCreateAs CreateAsList
 %type <node>   CreateAsElement
-%type <value>  NumericOnly, FloatOnly, IntegerOnly
-%type <attr>   event_object, attr, alias_clause
+%type <value>  NumericOnly FloatOnly IntegerOnly
+%type <attr>   event_object attr alias_clause
 %type <sortgroupby>            sortby
-%type <ielem>  index_elem, func_index
+%type <ielem>  index_elem func_index
 %type <node>   table_ref
 %type <jexpr>  joined_table
 %type <range>  relation_expr
-%type <target> target_el, update_target_el
+%type <target> target_el update_target_el
 %type <paramno> ParamNo
 
-%type <typnam> Typename, SimpleTypename, ConstTypename
-                               GenericType, Numeric, Character, ConstDatetime, 
ConstInterval, Bit
-%type <str>            character, bit
+%type <typnam> Typename SimpleTypename ConstTypename
+                               GenericType Numeric Character ConstDatetime 
+ConstInterval Bit
+%type <str>            character bit
 %type <str>            extract_arg
-%type <str>            opt_charset, opt_collate
+%type <str>            opt_charset opt_collate
 %type <str>            opt_float
-%type <ival>   opt_numeric, opt_decimal
-%type <boolean>        opt_varying, opt_timezone, opt_timezone_x
+%type <ival>   opt_numeric opt_decimal
+%type <boolean>        opt_varying opt_timezone opt_timezone_x
 
 %type <ival>   Iconst
-%type <str>            Sconst, comment_text
-%type <str>            UserId, opt_boolean, var_value, ColId_or_Sconst
-%type <str>            ColId, ColLabel, type_name, func_name_keyword
-%type <str>            col_name_keyword, unreserved_keyword, reserved_keyword
+%type <str>            Sconst comment_text
+%type <str>            UserId opt_boolean var_value ColId_or_Sconst
+%type <str>            ColId ColLabel type_name func_name_keyword
+%type <str>            col_name_keyword unreserved_keyword reserved_keyword
 %type <node>   zone_value
 
 %type <node>   TableConstraint
 %type <list>   ColQualList
-%type <node>   ColConstraint, ColConstraintElem, ConstraintAttr
-%type <ival>   key_actions, key_delete, key_update, key_reference
+%type <node>   ColConstraint ColConstraintElem ConstraintAttr
+%type <ival>   key_actions key_delete key_update key_reference
 %type <str>            key_match
-%type <ival>   ConstraintAttributeSpec, ConstraintDeferrabilitySpec,
+%type <ival>   ConstraintAttributeSpec ConstraintDeferrabilitySpec
                                ConstraintTimeSpec
 
 %type <list>   constraints_set_list
@@ -302,43 +302,43 @@
  */
 
 /* Keywords (in SQL92 reserved words) */
-%token ABSOLUTE, ACTION, ADD, ALL, ALTER, AND, ANY, AS, ASC, AT, AUTHORIZATION,
-               BEGIN_TRANS, BETWEEN, BOTH, BY,
-               CASCADE, CASE, CAST, CHAR, CHARACTER, CHECK, CLOSE, 
-               COALESCE, COLLATE, COLUMN, COMMIT,
-               CONSTRAINT, CONSTRAINTS, CREATE, CROSS, CURRENT_DATE,
-               CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_USER, CURSOR,
-               DAY_P, DEC, DECIMAL, DECLARE, DEFAULT, DELETE, DESC,
-               DISTINCT, DOUBLE, DROP,
-               ELSE, ENCRYPTED, END_TRANS, ESCAPE, EXCEPT, EXECUTE, EXISTS, EXTRACT,
-               FALSE_P, FETCH, FLOAT, FOR, FOREIGN, FROM, FULL,
-               GLOBAL, GRANT, GROUP, HAVING, HOUR_P,
-               IN, INNER_P, INSENSITIVE, INSERT, INTERSECT, INTERVAL, INTO, IS,
-               ISOLATION, JOIN, KEY, LANGUAGE, LEADING, LEFT, LEVEL, LIKE, LOCAL,
-               MATCH, MINUTE_P, MONTH_P, NAMES,
-               NATIONAL, NATURAL, NCHAR, NEXT, NO, NOT, NULLIF, NULL_P, NUMERIC,
-               OF, OLD, ON, ONLY, OPTION, OR, ORDER, OUTER_P, OVERLAPS,
-               PARTIAL, POSITION, PRECISION, PRIMARY, PRIOR, PRIVILEGES, PROCEDURE, 
PUBLIC,
-               READ, REFERENCES, RELATIVE, REVOKE, RIGHT, ROLLBACK,
-               SCHEMA, SCROLL, SECOND_P, SELECT, SESSION, SESSION_USER, SET, SOME, 
SUBSTRING,
-               TABLE, TEMPORARY, THEN, TIME, TIMESTAMP,
-               TO, TRAILING, TRANSACTION, TRIM, TRUE_P,
-               UNENCRYPTED, UNION, UNIQUE, UNKNOWN, UPDATE, USER, USING,
-               VALUES, VARCHAR, VARYING, VIEW,
-               WHEN, WHERE, WITH, WORK, YEAR_P, ZONE
+%token ABSOLUTE ACTION ADD ALL ALTER AND ANY AS ASC AT AUTHORIZATION
+               BEGIN_TRANS BETWEEN BOTH BY
+               CASCADE CASE CAST CHAR CHARACTER CHECK CLOSE 
+               COALESCE COLLATE COLUMN COMMIT
+               CONSTRAINT CONSTRAINTS CREATE CROSS CURRENT_DATE
+               CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURSOR
+               DAY_P DEC DECIMAL DECLARE DEFAULT DELETE DESC
+               DISTINCT DOUBLE DROP
+               ELSE ENCRYPTED END_TRANS ESCAPE EXCEPT EXECUTE EXISTS EXTRACT
+               FALSE_P FETCH FLOAT FOR FOREIGN FROM FULL
+               GLOBAL GRANT GROUP HAVING HOUR_P
+               IN INNER_P INSENSITIVE INSERT INTERSECT INTERVAL INTO IS
+               ISOLATION JOIN KEY LANGUAGE LEADING LEFT LEVEL LIKE LOCAL
+               MATCH MINUTE_P MONTH_P NAMES
+               NATIONAL NATURAL NCHAR NEXT NO NOT NULLIF NULL_P NUMERIC
+               OF OLD ON ONLY OPTION OR ORDER OUTER_P OVERLAPS
+               PARTIAL POSITION PRECISION PRIMARY PRIOR PRIVILEGES PROCEDURE PUBLIC
+               READ REFERENCES RELATIVE REVOKE RIGHT ROLLBACK
+               SCHEMA SCROLL SECOND_P SELECT SESSION SESSION_USER SET SOME SUBSTRING
+               TABLE TEMPORARY THEN TIME TIMESTAMP
+               TO TRAILING TRANSACTION TRIM TRUE_P
+               UNENCRYPTED UNION UNIQUE UNKNOWN UPDATE USER USING
+               VALUES VARCHAR VARYING VIEW
+               WHEN WHERE WITH WORK YEAR_P ZONE
 
 /* Keywords (in SQL99 reserved words) */
-%token CHAIN, CHARACTERISTICS,
-               DEFERRABLE, DEFERRED,
-               IMMEDIATE, INITIALLY, INOUT,
-               OFF, OUT,
-               PATH_P, PENDANT,
-               REPLACE, RESTRICT,
-        TRIGGER,
+%token CHAIN CHARACTERISTICS
+               DEFERRABLE DEFERRED
+               IMMEDIATE INITIALLY INOUT
+               OFF OUT
+               PATH_P PENDANT
+               REPLACE RESTRICT
+        TRIGGER
                WITHOUT
 
 /* Keywords (in SQL92 non-reserved words) */
-%token COMMITTED, SERIALIZABLE, TYPE_P
+%token COMMITTED SERIALIZABLE TYPE_P
 
 /* Keywords for Postgres support (not in SQL92 reserved words)
  *
@@ -346,22 +346,22 @@
  * when some sort of pg_privileges relation is introduced.
  * - Todd A. Brandys 1998-01-01?
  */
-%token ABORT_TRANS, ACCESS, AFTER, AGGREGATE, ANALYSE, ANALYZE,
-               BACKWARD, BEFORE, BINARY, BIT,
-               CACHE, CHECKPOINT, CLUSTER, COMMENT, COPY, CREATEDB, CREATEUSER, CYCLE,
-               DATABASE, DELIMITERS, DO,
-               EACH, ENCODING, EXCLUSIVE, EXPLAIN,
-               FORCE, FORWARD, FREEZE, FUNCTION, HANDLER,
-               ILIKE, INCREMENT, INDEX, INHERITS, INSTEAD, ISNULL,
-               LANCOMPILER, LIMIT, LISTEN, LOAD, LOCATION, LOCK_P,
-               MAXVALUE, MINVALUE, MODE, MOVE,
-               NEW, NOCREATEDB, NOCREATEUSER, NONE, NOTHING, NOTIFY, NOTNULL,
-               OFFSET, OIDS, OPERATOR, OWNER, PASSWORD, PROCEDURAL,
-               REINDEX, RENAME, RESET, RETURNS, ROW, RULE,
-               SEQUENCE, SETOF, SHARE, SHOW, START, STATEMENT,
-               STATISTICS, STDIN, STDOUT, SYSID,
-               TEMP, TEMPLATE, TOAST, TRUNCATE, TRUSTED, 
-               UNLISTEN, UNTIL, VACUUM, VALID, VERBOSE, VERSION
+%token ABORT_TRANS ACCESS AFTER AGGREGATE ANALYSE ANALYZE
+               BACKWARD BEFORE BINARY BIT
+               CACHE CHECKPOINT CLUSTER COMMENT COPY CREATEDB CREATEUSER CYCLE
+               DATABASE DELIMITERS DO
+               EACH ENCODING EXCLUSIVE EXPLAIN
+               FORCE FORWARD FREEZE FUNCTION HANDLER
+               ILIKE INCREMENT INDEX INHERITS INSTEAD ISNULL
+               LANCOMPILER LIMIT LISTEN LOAD LOCATION LOCK_P
+               MAXVALUE MINVALUE MODE MOVE
+               NEW NOCREATEDB NOCREATEUSER NONE NOTHING NOTIFY NOTNULL
+               OFFSET OIDS OPERATOR OWNER PASSWORD PROCEDURAL
+               REINDEX RENAME RESET RETURNS ROW RULE
+               SEQUENCE SETOF SHARE SHOW START STATEMENT
+               STATISTICS STDIN STDOUT SYSID
+               TEMP TEMPLATE TOAST TRUNCATE TRUSTED 
+               UNLISTEN UNTIL VACUUM VALID VERBOSE VERSION
 
 /* The grammar thinks these are keywords, but they are not in the keywords.c
  * list and so can never be entered directly.  The filter in parser.c
@@ -370,8 +370,8 @@
 %token                 UNIONJOIN
 
 /* Special keywords, not in the query language - see the "lex" file */
-%token <str>   IDENT, FCONST, SCONST, BITCONST, Op
-%token <ival>  ICONST, PARAM
+%token <str>   IDENT FCONST SCONST BITCONST Op
+%token <ival>  ICONST PARAM
 
 /* these are not real. they are here so that they get generated as #define's*/
 %token                 OP
@@ -748,7 +748,7 @@
                                        n->dbname = $3;
                                        $$ = (Node *)n;
                                }
-
+               ;
 
 /*****************************************************************************
  *
@@ -945,6 +945,7 @@
 
 ColId_or_Sconst: ColId                                         { $$ = $1; }
                | SCONST                                                        { $$ = 
$1; }
+               ;
 
 
 VariableShowStmt:  SHOW ColId
@@ -1242,6 +1243,7 @@
 
 copy_null:      WITH NULL_P AS Sconst                  { $$ = $4; }
                 | /*EMPTY*/                                            { $$ = "\\N"; }
+               ;
 
 /*****************************************************************************
  *
@@ -1716,6 +1718,7 @@
 
 NumericOnly:  FloatOnly                                        { $$ = $1; }
                        | IntegerOnly                           { $$ = $1; }
+               ;
 
 FloatOnly:  FCONST
                                {
@@ -1765,6 +1768,7 @@
 
 opt_lancompiler: LANCOMPILER Sconst { $$ = $2; }
                        | /*EMPTY*/                     { $$ = ""; }
+               ;
 
 DropPLangStmt:  DROP opt_procedural LANGUAGE ColId_or_Sconst
                        {
@@ -2424,6 +2428,7 @@
 
 grantee_list: grantee                                  { $$ = makeList1($1); }
                | grantee_list ',' grantee              { $$ = lappend($1, $3); }
+               ;
 
 
 opt_with_grant:  WITH GRANT OPTION
@@ -4238,6 +4243,7 @@
                                        else type = xlateSqlType("bit");
                                        $$ = type;
                                }
+               ;
 
 
 /*
@@ -5478,6 +5484,7 @@
 
 opt_empty_parentheses: '(' ')' { $$ = TRUE; }
                                        | /*EMPTY*/ { $$ = TRUE; }
+               ;
 
 /*****************************************************************************
  *
---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to