mirror of
https://github.com/postgres/postgres.git
synced 2025-04-24 10:47:04 +03:00
Synced preproc.y and keywords.c.
This commit is contained in:
parent
3c184d18ef
commit
75c33220ad
@ -1237,6 +1237,11 @@ Sun Apr 14 10:53:14 CEST 2002
|
|||||||
- Fixed one bug in structure handling resulting in using sizeof
|
- Fixed one bug in structure handling resulting in using sizeof
|
||||||
indicator instead of variable.
|
indicator instead of variable.
|
||||||
- Synced preproc.y with gram.y.
|
- Synced preproc.y with gram.y.
|
||||||
|
|
||||||
|
Mon Apr 22 20:44:56 CEST 2002
|
||||||
|
|
||||||
|
- Synced preproc.y with gram.y.
|
||||||
|
- Synced keywords.c.
|
||||||
- Set ecpg version to 2.10.0.
|
- Set ecpg version to 2.10.0.
|
||||||
- Set library version to 3.4.0.
|
- Set library version to 3.4.0.
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/keywords.c,v 1.46 2001/10/15 00:06:04 tgl Exp $
|
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/keywords.c,v 1.47 2002/04/22 18:54:43 meskes Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -43,6 +43,7 @@ static ScanKeyword ScanKeywords[] = {
|
|||||||
{"any", ANY},
|
{"any", ANY},
|
||||||
{"as", AS},
|
{"as", AS},
|
||||||
{"asc", ASC},
|
{"asc", ASC},
|
||||||
|
{"assertion", ASSERTION},
|
||||||
{"at", AT},
|
{"at", AT},
|
||||||
{"authorization", AUTHORIZATION},
|
{"authorization", AUTHORIZATION},
|
||||||
{"backward", BACKWARD},
|
{"backward", BACKWARD},
|
||||||
@ -97,6 +98,7 @@ static ScanKeyword ScanKeywords[] = {
|
|||||||
{"desc", DESC},
|
{"desc", DESC},
|
||||||
{"distinct", DISTINCT},
|
{"distinct", DISTINCT},
|
||||||
{"do", DO},
|
{"do", DO},
|
||||||
|
{"domain", DOMAIN_P},
|
||||||
{"double", DOUBLE},
|
{"double", DOUBLE},
|
||||||
{"drop", DROP},
|
{"drop", DROP},
|
||||||
{"each", EACH},
|
{"each", EACH},
|
||||||
@ -210,7 +212,6 @@ static ScanKeyword ScanKeywords[] = {
|
|||||||
{"privileges", PRIVILEGES},
|
{"privileges", PRIVILEGES},
|
||||||
{"procedural", PROCEDURAL},
|
{"procedural", PROCEDURAL},
|
||||||
{"procedure", PROCEDURE},
|
{"procedure", PROCEDURE},
|
||||||
{"public", PUBLIC},
|
|
||||||
{"read", READ},
|
{"read", READ},
|
||||||
{"references", REFERENCES},
|
{"references", REFERENCES},
|
||||||
{"reindex", REINDEX},
|
{"reindex", REINDEX},
|
||||||
@ -243,6 +244,7 @@ static ScanKeyword ScanKeywords[] = {
|
|||||||
{"statistics", STATISTICS},
|
{"statistics", STATISTICS},
|
||||||
{"stdin", STDIN},
|
{"stdin", STDIN},
|
||||||
{"stdout", STDOUT},
|
{"stdout", STDOUT},
|
||||||
|
{"storage", STORAGE},
|
||||||
{"substring", SUBSTRING},
|
{"substring", SUBSTRING},
|
||||||
{"sysid", SYSID},
|
{"sysid", SYSID},
|
||||||
{"table", TABLE},
|
{"table", TABLE},
|
||||||
@ -269,6 +271,7 @@ static ScanKeyword ScanKeywords[] = {
|
|||||||
{"unlisten", UNLISTEN},
|
{"unlisten", UNLISTEN},
|
||||||
{"until", UNTIL},
|
{"until", UNTIL},
|
||||||
{"update", UPDATE},
|
{"update", UPDATE},
|
||||||
|
{"usage", USAGE},
|
||||||
{"user", USER},
|
{"user", USER},
|
||||||
{"using", USING},
|
{"using", USING},
|
||||||
{"vacuum", VACUUM},
|
{"vacuum", VACUUM},
|
||||||
|
@ -177,8 +177,8 @@ make_name(void)
|
|||||||
/* Keywords (in SQL92 reserved words) */
|
/* Keywords (in SQL92 reserved words) */
|
||||||
%token ABSOLUTE, ACTION, ADD, ALL, ALTER, AND, ANY, AS, ASC,
|
%token ABSOLUTE, ACTION, ADD, ALL, ALTER, AND, ANY, AS, ASC,
|
||||||
AT, AUTHORIZATION, BEGIN_TRANS, BETWEEN, BOTH, BY,
|
AT, AUTHORIZATION, BEGIN_TRANS, BETWEEN, BOTH, BY,
|
||||||
CASCADE, CASE, CAST, CHAIN, CHAR, CHARACTER,
|
CASCADE, CASE, CAST, CHAR, CHARACTER,
|
||||||
CHARACTERISTICS, CHECK, CLOSE, COALESCE, COLLATE,
|
CHECK, CLOSE, COALESCE, COLLATE,
|
||||||
COLUMN, COMMIT, CONSTRAINT, CONSTRAINTS, CREATE, CROSS,
|
COLUMN, COMMIT, CONSTRAINT, CONSTRAINTS, CREATE, CROSS,
|
||||||
CURRENT, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP,
|
CURRENT, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP,
|
||||||
CURRENT_USER, CURSOR, DAY_P, DEC, DECIMAL, DECLARE,
|
CURRENT_USER, CURSOR, DAY_P, DEC, DECIMAL, DECLARE,
|
||||||
@ -193,7 +193,7 @@ make_name(void)
|
|||||||
NULL_P, NUMERIC, OF, OFF, OLD, ON, ONLY, OPTION, OR,
|
NULL_P, NUMERIC, OF, OFF, OLD, ON, ONLY, OPTION, OR,
|
||||||
ORDER, OUT, OUTER_P, OVERLAPS, PARTIAL, PATH_P,
|
ORDER, OUT, OUTER_P, OVERLAPS, PARTIAL, PATH_P,
|
||||||
POSITION, PRECISION, PRIMARY, PRIOR, PRIVILEGES,
|
POSITION, PRECISION, PRIMARY, PRIOR, PRIVILEGES,
|
||||||
PROCEDURE, PUBLIC, READ, REFERENCES, RELATIVE, REVOKE,
|
PROCEDURE, READ, REFERENCES, RELATIVE, REVOKE,
|
||||||
RIGHT, ROLLBACK, SCHEMA, SCROLL, SECOND_P, SELECT,
|
RIGHT, ROLLBACK, SCHEMA, SCROLL, SECOND_P, SELECT,
|
||||||
SESSION, SESSION_USER, SET, SOME, SUBSTRING, TABLE,
|
SESSION, SESSION_USER, SET, SOME, SUBSTRING, TABLE,
|
||||||
TEMPORARY, THEN, TIME, TIMESTAMP TO, TRAILING,
|
TEMPORARY, THEN, TIME, TIMESTAMP TO, TRAILING,
|
||||||
@ -202,8 +202,9 @@ make_name(void)
|
|||||||
VARYING, VIEW, WHEN, WHERE, WITH, WITHOUT, WORK,
|
VARYING, VIEW, WHEN, WHERE, WITH, WITHOUT, WORK,
|
||||||
YEAR_P, ZONE
|
YEAR_P, ZONE
|
||||||
|
|
||||||
/* Keywords (in SQL3 reserved words) */
|
/* Keywords (in SQL99 reserved words) */
|
||||||
%token DEFERRABLE, DEFERRED, IMMEDIATE, INITIALLY, PENDANT,
|
%token ASSERTION, CHAIN, CHARACTERISTICS,
|
||||||
|
DEFERRABLE, DEFERRED, IMMEDIATE, INITIALLY, PENDANT,
|
||||||
REPLACE, RESTRICT, TRIGGER
|
REPLACE, RESTRICT, TRIGGER
|
||||||
|
|
||||||
/* Keywords (in SQL92 non-reserved words) */
|
/* Keywords (in SQL92 non-reserved words) */
|
||||||
@ -284,8 +285,8 @@ make_name(void)
|
|||||||
%type <str> ConstraintElem key_actions ColQualList type_name DropSchemaStmt
|
%type <str> ConstraintElem key_actions ColQualList type_name DropSchemaStmt
|
||||||
%type <str> target_list target_el update_target_list alias_clause
|
%type <str> target_list target_el update_target_list alias_clause
|
||||||
%type <str> update_target_el opt_id qualified_name database_name
|
%type <str> update_target_el opt_id qualified_name database_name
|
||||||
%type <str> access_method attr_name class index_name name func_name
|
%type <str> access_method attr_name index_name name func_name
|
||||||
%type <str> file_name AexprConst c_expr ConstTypename
|
%type <str> file_name AexprConst c_expr ConstTypename var_list
|
||||||
%type <str> in_expr_nodes a_expr b_expr TruncateStmt CommentStmt
|
%type <str> in_expr_nodes a_expr b_expr TruncateStmt CommentStmt
|
||||||
%type <str> opt_indirection expr_list extract_list extract_arg
|
%type <str> opt_indirection expr_list extract_list extract_arg
|
||||||
%type <str> position_list substr_list substr_from alter_column_default
|
%type <str> position_list substr_list substr_from alter_column_default
|
||||||
@ -311,7 +312,7 @@ make_name(void)
|
|||||||
%type <str> index_opt_unique IndexStmt func_return ConstInterval
|
%type <str> index_opt_unique IndexStmt func_return ConstInterval
|
||||||
%type <str> func_args_list func_args opt_with ProcedureStmt def_arg
|
%type <str> func_args_list func_args opt_with ProcedureStmt def_arg
|
||||||
%type <str> def_elem def_list definition DefineStmt select_with_parens
|
%type <str> def_elem def_list definition DefineStmt select_with_parens
|
||||||
%type <str> opt_instead event RuleActionList opt_using
|
%type <str> opt_instead event RuleActionList opt_using CreateAssertStmt
|
||||||
%type <str> RuleActionStmtOrEmpty RuleActionMulti func_as reindex_type
|
%type <str> RuleActionStmtOrEmpty RuleActionMulti func_as reindex_type
|
||||||
%type <str> RuleStmt opt_column opt_name oper_argtypes NumConst
|
%type <str> RuleStmt opt_column opt_name oper_argtypes NumConst
|
||||||
%type <str> MathOp RemoveFuncStmt aggr_argtype for_update_clause
|
%type <str> MathOp RemoveFuncStmt aggr_argtype for_update_clause
|
||||||
@ -335,7 +336,7 @@ make_name(void)
|
|||||||
%type <str> opt_cursor ConstraintsSetStmt AllConst CreateDomainStmt
|
%type <str> opt_cursor ConstraintsSetStmt AllConst CreateDomainStmt
|
||||||
%type <str> case_expr when_clause_list case_default case_arg when_clause
|
%type <str> case_expr when_clause_list case_default case_arg when_clause
|
||||||
%type <str> select_clause opt_select_limit select_limit_value
|
%type <str> select_clause opt_select_limit select_limit_value
|
||||||
%type <str> ConstraintTimeSpec AlterDatabaseSetStmt
|
%type <str> ConstraintTimeSpec AlterDatabaseSetStmt DropAssertStmt
|
||||||
%type <str> select_offset_value ReindexStmt join_type opt_boolean
|
%type <str> select_offset_value ReindexStmt join_type opt_boolean
|
||||||
%type <str> join_qual update_list AlterSchemaStmt joined_table
|
%type <str> join_qual update_list AlterSchemaStmt joined_table
|
||||||
%type <str> opt_level opt_lock lock_type OptGroupList OptGroupElem
|
%type <str> opt_level opt_lock lock_type OptGroupList OptGroupElem
|
||||||
@ -348,7 +349,7 @@ make_name(void)
|
|||||||
%type <str> OptSchemaName OptSchemaEltList schema_stmt opt_drop_behavior
|
%type <str> OptSchemaName OptSchemaEltList schema_stmt opt_drop_behavior
|
||||||
%type <str> handler_name any_name_list any_name opt_as insert_column_list
|
%type <str> handler_name any_name_list any_name opt_as insert_column_list
|
||||||
%type <str> columnref dotted_name function_name insert_target_el
|
%type <str> columnref dotted_name function_name insert_target_el
|
||||||
%type <str> insert_target_list insert_column_item
|
%type <str> insert_target_list insert_column_item DropRuleStmt
|
||||||
|
|
||||||
%type <str> ECPGWhenever ECPGConnect connection_target ECPGOpen
|
%type <str> ECPGWhenever ECPGConnect connection_target ECPGOpen
|
||||||
%type <str> indicator ECPGExecute ECPGPrepare ecpg_using ecpg_into
|
%type <str> indicator ECPGExecute ECPGPrepare ecpg_using ecpg_into
|
||||||
@ -431,6 +432,7 @@ stmt: AlterDatabaseSetStmt { output_statement($1, 0, connection); }
|
|||||||
| CreateGroupStmt { output_statement($1, 0, connection); }
|
| CreateGroupStmt { output_statement($1, 0, connection); }
|
||||||
| CreateSeqStmt { output_statement($1, 0, connection); }
|
| CreateSeqStmt { output_statement($1, 0, connection); }
|
||||||
| CreatePLangStmt { output_statement($1, 0, connection); }
|
| CreatePLangStmt { output_statement($1, 0, connection); }
|
||||||
|
| CreateAssertStmt { output_statement($1, 0, connection); }
|
||||||
| CreateTrigStmt { output_statement($1, 0, connection); }
|
| CreateTrigStmt { output_statement($1, 0, connection); }
|
||||||
| CreateUserStmt { output_statement($1, 0, connection); }
|
| CreateUserStmt { output_statement($1, 0, connection); }
|
||||||
| ClusterStmt { output_statement($1, 0, connection); }
|
| ClusterStmt { output_statement($1, 0, connection); }
|
||||||
@ -440,7 +442,9 @@ stmt: AlterDatabaseSetStmt { output_statement($1, 0, connection); }
|
|||||||
| TruncateStmt { output_statement($1, 0, connection); }
|
| TruncateStmt { output_statement($1, 0, connection); }
|
||||||
| DropGroupStmt { output_statement($1, 0, connection); }
|
| DropGroupStmt { output_statement($1, 0, connection); }
|
||||||
| DropPLangStmt { output_statement($1, 0, connection); }
|
| DropPLangStmt { output_statement($1, 0, connection); }
|
||||||
|
| DropAssertStmt { output_statement($1, 0, connection); }
|
||||||
| DropTrigStmt { output_statement($1, 0, connection); }
|
| DropTrigStmt { output_statement($1, 0, connection); }
|
||||||
|
| DropRuleStmt { output_statement($1, 0, connection); }
|
||||||
| DropUserStmt { output_statement($1, 0, connection); }
|
| DropUserStmt { output_statement($1, 0, connection); }
|
||||||
| ExplainStmt { output_statement($1, 0, connection); }
|
| ExplainStmt { output_statement($1, 0, connection); }
|
||||||
| FetchStmt { output_statement($1, 1, connection); }
|
| FetchStmt { output_statement($1, 1, connection); }
|
||||||
@ -808,9 +812,9 @@ schema_stmt: CreateStmt { $$ = $1; }
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
VariableSetStmt: SET ColId TO var_value
|
VariableSetStmt: SET ColId TO var_list
|
||||||
{ $$ = cat_str(4, make_str("set"), $2, make_str("to"), $4); }
|
{ $$ = cat_str(4, make_str("set"), $2, make_str("to"), $4); }
|
||||||
| SET ColId '=' var_value
|
| SET ColId '=' var_list
|
||||||
{ $$ = cat_str(4, make_str("set"), $2, make_str("="), $4); }
|
{ $$ = cat_str(4, make_str("set"), $2, make_str("="), $4); }
|
||||||
| SET TIME ZONE zone_value
|
| SET TIME ZONE zone_value
|
||||||
{ $$ = cat2_str(make_str("set time zone"), $4); }
|
{ $$ = cat2_str(make_str("set time zone"), $4); }
|
||||||
@ -824,21 +828,22 @@ VariableSetStmt: SET ColId TO var_value
|
|||||||
{ $$ = cat2_str(make_str("set session authorization"), $4); }
|
{ $$ = cat2_str(make_str("set session authorization"), $4); }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
var_list: var_value
|
||||||
|
{ $$ = $1; }
|
||||||
|
| var_list ',' var_value
|
||||||
|
{ $$ = cat_str(3, $1, make_str(","), $3); }
|
||||||
|
| DEFAULT
|
||||||
|
{ $$ = make_str("default"); }
|
||||||
|
;
|
||||||
|
|
||||||
opt_level: READ COMMITTED { $$ = make_str("read committed"); }
|
opt_level: READ COMMITTED { $$ = make_str("read committed"); }
|
||||||
| SERIALIZABLE { $$ = make_str("serializable"); }
|
| SERIALIZABLE { $$ = make_str("serializable"); }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
var_value: opt_boolean { $$ = $1; }
|
var_value: opt_boolean { $$ = $1; }
|
||||||
| AllConst { $$ = $1; }
|
| NumConst { $$ = $1; }
|
||||||
| name_list
|
| ColId_or_Sconst { $$ = $1; }
|
||||||
{
|
|
||||||
if (strlen($1) == 0)
|
|
||||||
mmerror(PARSE_ERROR, ET_ERROR, "SET must have at least one argument.");
|
|
||||||
|
|
||||||
$$ = $1;
|
|
||||||
}
|
|
||||||
| DEFAULT { $$ = make_str("default"); }
|
|
||||||
;
|
;
|
||||||
|
|
||||||
opt_boolean: TRUE_P { $$ = make_str("true"); }
|
opt_boolean: TRUE_P { $$ = make_str("true"); }
|
||||||
@ -848,11 +853,15 @@ opt_boolean: TRUE_P { $$ = make_str("true"); }
|
|||||||
;
|
;
|
||||||
|
|
||||||
/* Timezone values can be:
|
/* Timezone values can be:
|
||||||
* - a string such as 'pst8pdt'
|
* - a string such as 'pst8pdt'
|
||||||
* - an integer or floating point number
|
* - a column identifier such as "pst8pdt"
|
||||||
* - a time interval per SQL99
|
* - an integer or floating point number
|
||||||
*/
|
* - a time interval per SQL99
|
||||||
|
* ConstInterval and ColId give shift/reduce errors,
|
||||||
|
* so use IDENT and reject anything which is a reserved word.
|
||||||
|
*/
|
||||||
zone_value: AllConst { $$ = $1; }
|
zone_value: AllConst { $$ = $1; }
|
||||||
|
| IDENT { $$ = $1; }
|
||||||
| ConstInterval StringConst opt_interval
|
| ConstInterval StringConst opt_interval
|
||||||
{ $$ = cat_str(3, $1, $2, $3); }
|
{ $$ = cat_str(3, $1, $2, $3); }
|
||||||
| ConstInterval '(' PosIntConst ')' StringConst opt_interval
|
| ConstInterval '(' PosIntConst ')' StringConst opt_interval
|
||||||
@ -1427,6 +1436,29 @@ DropTrigStmt: DROP TRIGGER name ON qualified_name
|
|||||||
{ $$ = cat_str(4, make_str("drop trigger"), $3, make_str("on"), $5); }
|
{ $$ = cat_str(4, make_str("drop trigger"), $3, make_str("on"), $5); }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
*
|
||||||
|
* QUERIES :
|
||||||
|
* CREATE ASSERTION ...
|
||||||
|
* DROP ASSERTION ...
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
CreateAssertStmt: CREATE ASSERTION name
|
||||||
|
CHECK '(' a_expr ')' ConstraintAttributeSpec
|
||||||
|
{
|
||||||
|
mmerror(PARSE_ERROR, ET_ERROR, "CREATE ASSERTION is not yet supported");
|
||||||
|
$$ = cat_str(6, make_str("create assertion"), $3, make_str("check ("), $6, make_str(")"), $8);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
DropAssertStmt: DROP ASSERTION name
|
||||||
|
{
|
||||||
|
mmerror(PARSE_ERROR, ET_ERROR, "DROP ASSERTION is not yet supported");
|
||||||
|
$$ = cat2_str(make_str("drop assertion"), $3);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* QUERY :
|
* QUERY :
|
||||||
@ -1476,7 +1508,6 @@ drop_type: TABLE { $$ = make_str("table"); }
|
|||||||
| SEQUENCE { $$ = make_str("sequence"); }
|
| SEQUENCE { $$ = make_str("sequence"); }
|
||||||
| VIEW { $$ = make_str("view"); }
|
| VIEW { $$ = make_str("view"); }
|
||||||
| INDEX { $$ = make_str("index"); }
|
| INDEX { $$ = make_str("index"); }
|
||||||
| RULE { $$ = make_str("rule"); }
|
|
||||||
| TYPE_P { $$ = make_str("type"); }
|
| TYPE_P { $$ = make_str("type"); }
|
||||||
| DOMAIN_P { $$ = make_str("domain"); }
|
| DOMAIN_P { $$ = make_str("domain"); }
|
||||||
;
|
;
|
||||||
@ -1563,11 +1594,11 @@ from_in: IN { $$ = make_str("in"); }
|
|||||||
* The COMMENT ON statement can take different forms based upon the type of
|
* The COMMENT ON statement can take different forms based upon the type of
|
||||||
* the object associated with the comment. The form of the statement is:
|
* the object associated with the comment. The form of the statement is:
|
||||||
*
|
*
|
||||||
* COMMENT ON [ [ DATABASE | DOMAIN | INDEX | RULE | SEQUENCE | TABLE | TYPE | VIEW ]
|
* COMMENT ON [ [ DATABASE | DOMAIN | INDEX | SEQUENCE | TABLE | TYPE | VIEW ]
|
||||||
* <objname> | AGGREGATE <aggname> (<aggtype>) | FUNCTION
|
* <objname> | AGGREGATE <aggname> (<aggtype>) | FUNCTION
|
||||||
* <funcname> (arg1, arg2, ...) | OPERATOR <op>
|
* <funcname> (arg1, arg2, ...) | OPERATOR <op>
|
||||||
* (leftoperand_typ rightoperand_typ) | TRIGGER <triggername> ON
|
* (leftoperand_typ rightoperand_typ) | TRIGGER <triggername> ON
|
||||||
* <relname> ] IS 'text'
|
* <relname> | RULE <rulename> ON <relname> ] IS 'text'
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
CommentStmt: COMMENT ON comment_type name IS comment_text
|
CommentStmt: COMMENT ON comment_type name IS comment_text
|
||||||
@ -1584,11 +1615,14 @@ CommentStmt: COMMENT ON comment_type name IS comment_text
|
|||||||
{ $$ = cat_str(6, make_str("comment on operator"), $4, make_str("("), $6, make_str(") is"), $9); }
|
{ $$ = cat_str(6, make_str("comment on operator"), $4, make_str("("), $6, make_str(") is"), $9); }
|
||||||
| COMMENT ON TRIGGER name ON qualified_name IS comment_text
|
| COMMENT ON TRIGGER name ON qualified_name IS comment_text
|
||||||
{ $$ = cat_str(6, make_str("comment on trigger"), $4, make_str("on"), $6, make_str("is"), $8); }
|
{ $$ = cat_str(6, make_str("comment on trigger"), $4, make_str("on"), $6, make_str("is"), $8); }
|
||||||
|
| COMMENT ON RULE name ON any_name IS comment_text
|
||||||
|
{ $$ = cat_str(6, make_str("comment on rule"), $4, make_str("on"), $6, make_str("is"), $8); }
|
||||||
|
| COMMENT ON RULE name IS comment_text
|
||||||
|
{ $$ = cat_str(4, make_str("comment on rule"), $4, make_str("is"), $6); }
|
||||||
;
|
;
|
||||||
|
|
||||||
comment_type: DATABASE { $$ = make_str("database"); }
|
comment_type: DATABASE { $$ = make_str("database"); }
|
||||||
| INDEX { $$ = make_str("idnex"); }
|
| INDEX { $$ = make_str("idnex"); }
|
||||||
| RULE { $$ = make_str("rule"); }
|
|
||||||
| SEQUENCE { $$ = make_str("sequence"); }
|
| SEQUENCE { $$ = make_str("sequence"); }
|
||||||
| TABLE { $$ = make_str("table"); }
|
| TABLE { $$ = make_str("table"); }
|
||||||
| DOMAIN_P { $$ = make_str("domain"); }
|
| DOMAIN_P { $$ = make_str("domain"); }
|
||||||
@ -1635,6 +1669,9 @@ privilege: SELECT { $$ = make_str("select"); }
|
|||||||
| TRIGGER { $$ = make_str("trigger"); }
|
| TRIGGER { $$ = make_str("trigger"); }
|
||||||
| EXECUTE { $$ = make_str("execute"); }
|
| EXECUTE { $$ = make_str("execute"); }
|
||||||
| USAGE { $$ = make_str("usage"); }
|
| USAGE { $$ = make_str("usage"); }
|
||||||
|
| CREATE { $$ = make_str("create"); }
|
||||||
|
| TEMPORARY { $$ = make_str("temporary"); }
|
||||||
|
| TEMP { $$ = make_str("temp"); }
|
||||||
;
|
;
|
||||||
|
|
||||||
privilege_target: qualified_name_list
|
privilege_target: qualified_name_list
|
||||||
@ -1643,8 +1680,12 @@ privilege_target: qualified_name_list
|
|||||||
{ $$ = cat2_str(make_str("table"), $2); }
|
{ $$ = cat2_str(make_str("table"), $2); }
|
||||||
| FUNCTION function_with_argtypes_list
|
| FUNCTION function_with_argtypes_list
|
||||||
{ $$ = cat2_str(make_str("function"), $2); }
|
{ $$ = cat2_str(make_str("function"), $2); }
|
||||||
|
| DATABASE name_list
|
||||||
|
{ $$ = cat2_str(make_str("database"), $2); }
|
||||||
| LANGUAGE name_list
|
| LANGUAGE name_list
|
||||||
{ $$ = cat2_str(make_str("language") , $2); }
|
{ $$ = cat2_str(make_str("language") , $2); }
|
||||||
|
| SCHEMA name_list
|
||||||
|
{ $$ = cat2_str(make_str("schema") , $2); }
|
||||||
;
|
;
|
||||||
|
|
||||||
grantee_list: grantee
|
grantee_list: grantee
|
||||||
@ -1653,9 +1694,8 @@ grantee_list: grantee
|
|||||||
{ $$ = cat_str(3, $1, make_str(","), $3); }
|
{ $$ = cat_str(3, $1, make_str(","), $3); }
|
||||||
;
|
;
|
||||||
|
|
||||||
grantee: PUBLIC { $$ = make_str("public"); }
|
grantee: ColId { $$ = $1; }
|
||||||
| GROUP ColId { $$ = cat2_str(make_str("group"), $2); }
|
| GROUP ColId { $$ = cat2_str(make_str("group"), $2); }
|
||||||
| ColId { $$ = $1; }
|
|
||||||
;
|
;
|
||||||
|
|
||||||
opt_grant_grant_option: WITH GRANT OPTION
|
opt_grant_grant_option: WITH GRANT OPTION
|
||||||
@ -1724,26 +1764,8 @@ index_elem: attr_name opt_class
|
|||||||
{ $$ = cat2_str($1, $2); }
|
{ $$ = cat2_str($1, $2); }
|
||||||
;
|
;
|
||||||
|
|
||||||
opt_class: class
|
opt_class: any_name { $$ = $1; }
|
||||||
{
|
| USING any_name { $$ = cat2_str(make_str("using"), $2); }
|
||||||
/*
|
|
||||||
* Release 7.0 removed network_ops, timespan_ops, and
|
|
||||||
* datetime_ops, so we suppress it from being passed to
|
|
||||||
* the parser so the default *_ops is used. This can be
|
|
||||||
* removed in some later release. bjm 2000/02/07
|
|
||||||
*
|
|
||||||
* Release 7.1 removes lztext_ops, so suppress that too
|
|
||||||
* for a while. tgl 2000/07/30
|
|
||||||
*/
|
|
||||||
if (strcmp($1, "network_ops") != 0 &&
|
|
||||||
strcmp($1, "timespan_ops") != 0 &&
|
|
||||||
strcmp($1, "datetime_ops") != 0 &&
|
|
||||||
strcmp($1, "lztext_ops") != 0)
|
|
||||||
$$ = $1;
|
|
||||||
else
|
|
||||||
$$ = EMPTY;
|
|
||||||
}
|
|
||||||
| USING class { $$ = cat2_str(make_str("using"), $2); }
|
|
||||||
| /*EMPTY*/ { $$ = EMPTY; }
|
| /*EMPTY*/ { $$ = EMPTY; }
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -1974,6 +1996,9 @@ opt_instead: INSTEAD { $$ = make_str("instead"); }
|
|||||||
| /*EMPTY*/ { $$ = EMPTY; }
|
| /*EMPTY*/ { $$ = EMPTY; }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
DropRuleStmt: DROP RULE name ON qualified_name
|
||||||
|
{ $$ = cat_str(4, make_str("drop rule"), $3, make_str("on"), $5);}
|
||||||
|
;
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
@ -3398,7 +3423,6 @@ name: ColId { $$ = $1; };
|
|||||||
database_name: ColId { $$ = $1; };
|
database_name: ColId { $$ = $1; };
|
||||||
access_method: ColId { $$ = $1; };
|
access_method: ColId { $$ = $1; };
|
||||||
attr_name: ColId { $$ = $1; };
|
attr_name: ColId { $$ = $1; };
|
||||||
class: ColId { $$ = $1; };
|
|
||||||
index_name: ColId { $$ = $1; };
|
index_name: ColId { $$ = $1; };
|
||||||
|
|
||||||
file_name: StringConst { $$ = $1; };
|
file_name: StringConst { $$ = $1; };
|
||||||
@ -4780,6 +4804,7 @@ unreserved_keyword:
|
|||||||
| AFTER { $$ = make_str("after"); }
|
| AFTER { $$ = make_str("after"); }
|
||||||
| AGGREGATE { $$ = make_str("aggregate"); }
|
| AGGREGATE { $$ = make_str("aggregate"); }
|
||||||
| ALTER { $$ = make_str("alter"); }
|
| ALTER { $$ = make_str("alter"); }
|
||||||
|
| ASSERTION { $$ = make_str("assertion"); }
|
||||||
| AT { $$ = make_str("at"); }
|
| AT { $$ = make_str("at"); }
|
||||||
| BACKWARD { $$ = make_str("backward"); }
|
| BACKWARD { $$ = make_str("backward"); }
|
||||||
| BEFORE { $$ = make_str("before"); }
|
| BEFORE { $$ = make_str("before"); }
|
||||||
@ -4993,7 +5018,6 @@ func_name_keyword:
|
|||||||
| NOTNULL { $$ = make_str("notnull"); }
|
| NOTNULL { $$ = make_str("notnull"); }
|
||||||
| OUTER_P { $$ = make_str("outer"); }
|
| OUTER_P { $$ = make_str("outer"); }
|
||||||
| OVERLAPS { $$ = make_str("overlaps"); }
|
| OVERLAPS { $$ = make_str("overlaps"); }
|
||||||
| PUBLIC { $$ = make_str("public"); }
|
|
||||||
| RIGHT { $$ = make_str("right"); }
|
| RIGHT { $$ = make_str("right"); }
|
||||||
| VERBOSE { $$ = make_str("verbose"); }
|
| VERBOSE { $$ = make_str("verbose"); }
|
||||||
;
|
;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user