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]