aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/parser/gram.y443
1 files changed, 278 insertions, 165 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 8affd233ed9..f7e6fb84e21 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -11,7 +11,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.329 2002/06/18 17:27:57 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.330 2002/06/18 17:56:41 momjian Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
@@ -132,21 +132,26 @@ static void doNegateFloat(Value *v);
}
%type <node> stmt, schema_stmt,
- AlterDatabaseSetStmt, AlterGroupStmt, AlterSchemaStmt, AlterTableStmt,
- AlterUserStmt, AlterUserSetStmt, AnalyzeStmt,
- ClosePortalStmt, ClusterStmt, CommentStmt, ConstraintsSetStmt,
- CopyStmt, CreateAsStmt, CreateDomainStmt, CreateGroupStmt, CreatePLangStmt,
- CreateSchemaStmt, CreateSeqStmt, CreateStmt, CreateAssertStmt, CreateTrigStmt,
- CreateUserStmt, CreatedbStmt, CursorStmt, DefineStmt, DeleteStmt,
- DropGroupStmt, DropPLangStmt, DropSchemaStmt, DropStmt, DropAssertStmt, DropTrigStmt,
- DropRuleStmt, DropUserStmt, DropdbStmt, ExplainStmt, FetchStmt,
- GrantStmt, IndexStmt, InsertStmt, ListenStmt, LoadStmt, LockStmt,
- NotifyStmt, OptimizableStmt, CreateFunctionStmt, ReindexStmt,
- RemoveAggrStmt, RemoveFuncStmt, RemoveOperStmt,
- RenameStmt, RevokeStmt, RuleActionStmt, RuleActionStmtOrEmpty,
- RuleStmt, SelectStmt, TransactionStmt, TruncateStmt,
- UnlistenStmt, UpdateStmt, VacuumStmt, VariableResetStmt,
- VariableSetStmt, VariableShowStmt, ViewStmt, CheckPointStmt
+ AlterDatabaseSetStmt, AlterGroupStmt, AlterSchemaStmt,
+ AlterTableStmt, AlterUserStmt, AlterUserSetStmt,
+ AnalyzeStmt, ClosePortalStmt, ClusterStmt, CommentStmt,
+ ConstraintsSetStmt, CopyStmt, CreateAsStmt,
+ CreateDomainStmt, CreateGroupStmt, CreatePLangStmt,
+ CreateSchemaStmt, CreateSeqStmt, CreateStmt,
+ CreateAssertStmt, CreateTrigStmt, CreateUserStmt,
+ CreatedbStmt, CursorStmt, DefineStmt, DeleteStmt,
+ DropGroupStmt, DropPLangStmt, DropSchemaStmt, DropStmt,
+ DropAssertStmt, DropTrigStmt, DropRuleStmt,
+ DropUserStmt, DropdbStmt, ExplainStmt, FetchStmt,
+ GrantStmt, IndexStmt, InsertStmt, ListenStmt, LoadStmt,
+ LockStmt, NotifyStmt, OptimizableStmt,
+ CreateFunctionStmt, 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,
simple_select
@@ -316,69 +321,82 @@ static void doNegateFloat(Value *v);
/* ordinary key words in alphabetical order */
%token <keyword> ABORT_TRANS, ABSOLUTE, ACCESS, ACTION, ADD, AFTER,
- AGGREGATE, ALL, ALTER, ANALYSE, ANALYZE, AND, ANY, AS, ASC, ASSERTION,
- AT, AUTHORIZATION,
+ AGGREGATE, ALL, ALTER, ANALYSE, ANALYZE, AND, ANY, AS, ASC,
+ ASSERTION, AT, AUTHORIZATION,
BACKWARD, BEFORE, BEGIN_TRANS, BETWEEN, BIGINT, BINARY, BIT, BOTH,
BOOLEAN, BY,
- CACHE, CALLED, CASCADE, CASE, CAST, CHAIN, CHAR_P, CHARACTER,
- CHARACTERISTICS, CHECK, CHECKPOINT, CLOSE, CLUSTER, COALESCE, COLLATE,
- COLUMN, COMMENT, COMMIT, COMMITTED, CONSTRAINT, CONSTRAINTS, COPY,
- CREATE, CREATEDB, CREATEUSER, CROSS, CURRENT_DATE, CURRENT_TIME,
+ CACHE, CALLED, CASCADE, CASE, CAST, CHAIN, CHAR_P,
+ CHARACTER, CHARACTERISTICS, CHECK, CHECKPOINT, CLOSE,
+ CLUSTER, COALESCE, COLLATE, COLUMN, COMMENT, COMMIT,
+ COMMITTED, CONSTRAINT, CONSTRAINTS, COPY, CREATE, CREATEDB,
+ CREATEUSER, CROSS, CURRENT_DATE, CURRENT_TIME,
CURRENT_TIMESTAMP, CURRENT_USER, CURSOR, CYCLE,
- DATABASE, DAY_P, DEC, DECIMAL, DECLARE, DEFAULT, DEFERRABLE, DEFERRED,
- DEFINER, DELETE_P, DELIMITERS, DESC, DISTINCT, DO, DOMAIN_P, DOUBLE, DROP,
+ DATABASE, DAY_P, DEC, DECIMAL, DECLARE, DEFAULT,
+ DEFERRABLE, DEFERRED, DEFINER, DELETE_P, DELIMITERS, DESC,
+ DISTINCT, DO, DOMAIN_P, DOUBLE, DROP,
- EACH, ELSE, ENCODING, ENCRYPTED, END_TRANS, ESCAPE, EXCEPT, EXCLUSIVE,
- EXECUTE, EXISTS, EXPLAIN, EXTERNAL, EXTRACT,
+ EACH, ELSE, ENCODING, ENCRYPTED, END_TRANS, ESCAPE, EXCEPT,
+ EXCLUSIVE, EXECUTE, EXISTS, EXPLAIN, EXTERNAL, EXTRACT,
- FALSE_P, FETCH, FLOAT_P, FOR, FORCE, FOREIGN, FORWARD, FREEZE, FROM,
- FULL, FUNCTION,
+ FALSE_P, FETCH, FLOAT_P, FOR, FORCE, FOREIGN, FORWARD,
+ FREEZE, FROM, FULL, FUNCTION,
GET, GLOBAL, GRANT, GROUP_P,
+
HANDLER, HAVING, HOUR_P,
- ILIKE, IMMEDIATE, IMMUTABLE, IMPLICIT, IN_P, INCREMENT, INDEX, INHERITS,
- INITIALLY, INNER_P, INOUT, INPUT, INSENSITIVE, INSERT, INSTEAD, INT,
- INTEGER, INTERSECT, INTERVAL, INTO, INVOKER, IS, ISNULL, ISOLATION,
+ ILIKE, IMMEDIATE, IMMUTABLE, IMPLICIT, IN_P, INCREMENT,
+ INDEX, INHERITS, INITIALLY, INNER_P, INOUT, INPUT,
+ INSENSITIVE, INSERT, INSTEAD, INT, INTEGER, INTERSECT,
+ INTERVAL, INTO, INVOKER, IS, ISNULL, ISOLATION,
JOIN,
KEY,
- LANCOMPILER, LANGUAGE, LEADING, LEFT, LEVEL, LIKE, LIMIT, LISTEN,
- LOAD, LOCAL, LOCALTIME, LOCALTIMESTAMP, LOCATION, LOCK_P,
+ LANCOMPILER, LANGUAGE, LEADING, LEFT, LEVEL, LIKE, LIMIT,
+ LISTEN, LOAD, LOCAL, LOCALTIME, LOCALTIMESTAMP, LOCATION,
+ LOCK_P,
MATCH, MAXVALUE, MINUTE_P, MINVALUE, MODE, MONTH_P, MOVE,
NAMES, NATIONAL, NATURAL, NCHAR, NEW, NEXT, NO, NOCREATEDB,
- NOCREATEUSER, NONE, NOT, NOTHING, NOTIFY, NOTNULL, NULL_P, NULLIF,
- NUMERIC,
+ NOCREATEUSER, NONE, NOT, NOTHING, NOTIFY, NOTNULL, NULL_P,
+ NULLIF, NUMERIC,
+
+ OF, OFF, OFFSET, OIDS, OLD, ON, ONLY, OPERATOR, OPTION, OR,
+ ORDER, OUT_P, OUTER_P, OVERLAPS, OVERLAY, OWNER,
- OF, OFF, OFFSET, OIDS, OLD, ON, ONLY, OPERATOR, OPTION, OR, ORDER,
- OUT_P, OUTER_P, OVERLAPS, OVERLAY, OWNER,
+ PARTIAL, PASSWORD, PATH_P, PENDANT, PLACING, POSITION,
+ PRECISION, PRIMARY, PRIOR, PRIVILEGES, PROCEDURE,
+ PROCEDURAL,
- PARTIAL, PASSWORD, PATH_P, PENDANT, PLACING, POSITION, PRECISION, PRIMARY,
- PRIOR, PRIVILEGES, PROCEDURE, PROCEDURAL,
+ READ, REAL, REFERENCES, REINDEX, RELATIVE, RENAME, REPLACE,
+ RESET, RESTRICT, RETURNS, REVOKE, RIGHT, ROLLBACK, ROW,
+ RULE,
- READ, REAL, REFERENCES, REINDEX, RELATIVE, RENAME, REPLACE, RESET,
- RESTRICT, RETURNS, REVOKE, RIGHT, ROLLBACK, ROW, RULE,
+ SCHEMA, SCROLL, SECOND_P, SECURITY, SELECT, SEQUENCE,
+ SERIALIZABLE, SESSION, SESSION_USER, SET, SETOF, SHARE,
+ SHOW, SIMILAR, SMALLINT, SOME, STABLE, START, STATEMENT,
+ STATISTICS, STDIN, STDOUT, STORAGE, STRICT, SUBSTRING,
+ SYSID,
- SCHEMA, SCROLL, SECOND_P, SECURITY, SELECT, SEQUENCE, SERIALIZABLE,
- SESSION, SESSION_USER, SET, SETOF, SHARE, SHOW, SIMILAR, SMALLINT, SOME,
- STABLE, START, STATEMENT, STATISTICS, STDIN, STDOUT, STORAGE, STRICT,
- SUBSTRING, SYSID,
+ TABLE, TEMP, TEMPLATE, TEMPORARY, THEN, TIME, TIMESTAMP,
+ TO, TOAST, TRAILING, TRANSACTION, TRIGGER, TRIM, TRUE_P,
+ TRUNCATE, TRUSTED, TYPE_P,
- TABLE, TEMP, TEMPLATE, TEMPORARY, THEN, TIME, TIMESTAMP, TO, TOAST,
- TRAILING, TRANSACTION, TRIGGER, TRIM, TRUE_P, TRUNCATE, TRUSTED, TYPE_P,
+ UNENCRYPTED, UNION, UNIQUE, UNKNOWN, UNLISTEN, UNTIL,
+ UPDATE, USAGE, USER, USING,
- UNENCRYPTED, UNION, UNIQUE, UNKNOWN, UNLISTEN, UNTIL, UPDATE, USAGE,
- USER, USING,
+ VACUUM, VALID, VALIDATOR, VALUES, VARCHAR, VARYING,
+ VERBOSE, VERSION, VIEW, VOLATILE,
- VACUUM, VALID, VALIDATOR, VALUES, VARCHAR, VARYING, VERBOSE, VERSION, VIEW, VOLATILE,
WHEN, WHERE, WITH, WITHOUT, WORK,
+
YEAR_P,
+
ZONE
/* The grammar thinks these are keywords, but they are not in the keywords.c
@@ -412,7 +430,7 @@ static void doNegateFloat(Value *v);
%left Op OPERATOR /* multi-character ops and user-defined operators */
%nonassoc NOTNULL
%nonassoc ISNULL
-%nonassoc IS NULL_P TRUE_P FALSE_P UNKNOWN /* sets precedence for IS NULL, etc */
+%nonassoc IS NULL_P TRUE_P FALSE_P UNKNOWN /* sets precedence for IS NULL, etc */
%left '+' '-'
%left '*' '/' '%'
%left '^'
@@ -758,7 +776,7 @@ CreateSchemaStmt:
CREATE SCHEMA OptSchemaName AUTHORIZATION UserId OptSchemaEltList
{
CreateSchemaStmt *n = makeNode(CreateSchemaStmt);
- /* One can omit the schema name or the authorization id... */
+ /* One can omit the schema name or the authorization id. */
if ($3 != NULL)
n->schemaname = $3;
else
@@ -955,7 +973,7 @@ zone_value:
{
if (($3 & ~(MASK(HOUR) | MASK(MINUTE))) != 0)
elog(ERROR,
- "Time zone interval must be HOUR or HOUR TO MINUTE");
+ "Time zone interval must be HOUR or HOUR TO MINUTE");
n->typename->typmod = ((($3 & 0x7FFF) << 16) | 0xFFFF);
}
$$ = (Node *)n;
@@ -971,7 +989,7 @@ zone_value:
{
if (($6 & ~(MASK(HOUR) | MASK(MINUTE))) != 0)
elog(ERROR,
- "Time zone interval must be HOUR or HOUR TO MINUTE");
+ "Time zone interval must be HOUR or HOUR TO MINUTE");
n->typename->typmod = ((($6 & 0x7FFF) << 16) | $3);
}
else
@@ -1114,8 +1132,11 @@ AlterTableStmt:
n->def = $6;
$$ = (Node *)n;
}
- /* ALTER TABLE <relation> ALTER [COLUMN] <colname> {SET DEFAULT <expr>|DROP DEFAULT} */
- | ALTER TABLE relation_expr ALTER opt_column ColId alter_column_default
+ /* ALTER TABLE <relation> ALTER [COLUMN] <colname>
+ * {SET DEFAULT <expr>|DROP DEFAULT}
+ */
+ | ALTER TABLE relation_expr ALTER opt_column
+ ColId alter_column_default
{
AlterTableStmt *n = makeNode(AlterTableStmt);
n->subtype = 'T';
@@ -1124,8 +1145,11 @@ AlterTableStmt:
n->def = $7;
$$ = (Node *)n;
}
- /* ALTER TABLE <relation> ALTER [COLUMN] <colname> DROP NOT NULL */
- | ALTER TABLE relation_expr ALTER opt_column ColId DROP NOT NULL_P
+ /* ALTER TABLE <relation> ALTER [COLUMN] <colname>
+ * DROP NOT NULL
+ */
+ | ALTER TABLE relation_expr ALTER opt_column
+ ColId DROP NOT NULL_P
{
AlterTableStmt *n = makeNode(AlterTableStmt);
n->subtype = 'N';
@@ -1133,8 +1157,11 @@ AlterTableStmt:
n->name = $6;
$$ = (Node *)n;
}
- /* ALTER TABLE <relation> ALTER [COLUMN] <colname> SET NOT NULL */
- | ALTER TABLE relation_expr ALTER opt_column ColId SET NOT NULL_P
+ /* ALTER TABLE <relation> ALTER [COLUMN] <colname>
+ * SET NOT NULL
+ */
+ | ALTER TABLE relation_expr ALTER opt_column ColId
+ SET NOT NULL_P
{
AlterTableStmt *n = makeNode(AlterTableStmt);
n->subtype = 'O';
@@ -1142,8 +1169,11 @@ AlterTableStmt:
n->name = $6;
$$ = (Node *)n;
}
- /* ALTER TABLE <relation> ALTER [COLUMN] <colname> SET STATISTICS <Iconst> */
- | ALTER TABLE relation_expr ALTER opt_column ColId SET STATISTICS Iconst
+ /* ALTER TABLE <relation> ALTER [COLUMN] <colname>
+ * SET STATISTICS <Iconst>
+ */
+ | ALTER TABLE relation_expr ALTER opt_column ColId
+ SET STATISTICS Iconst
{
AlterTableStmt *n = makeNode(AlterTableStmt);
n->subtype = 'S';
@@ -1152,8 +1182,11 @@ AlterTableStmt:
n->def = (Node *) makeInteger($9);
$$ = (Node *)n;
}
- /* ALTER TABLE <relation> ALTER [COLUMN] <colname> SET STORAGE <storagemode> */
- | ALTER TABLE relation_expr ALTER opt_column ColId SET STORAGE ColId
+ /* ALTER TABLE <relation> ALTER [COLUMN] <colname>
+ * SET STORAGE <storagemode>
+ */
+ | ALTER TABLE relation_expr ALTER opt_column ColId
+ SET STORAGE ColId
{
AlterTableStmt *n = makeNode(AlterTableStmt);
n->subtype = 'M';
@@ -1162,7 +1195,9 @@ AlterTableStmt:
n->def = (Node *) makeString($9);
$$ = (Node *)n;
}
- /* ALTER TABLE <relation> DROP [COLUMN] <colname> {RESTRICT|CASCADE} */
+ /* ALTER TABLE <relation> DROP [COLUMN] <colname>
+ * {RESTRICT|CASCADE}
+ */
| ALTER TABLE relation_expr DROP opt_column ColId drop_behavior
{
AlterTableStmt *n = makeNode(AlterTableStmt);
@@ -1181,7 +1216,9 @@ AlterTableStmt:
n->def = $5;
$$ = (Node *)n;
}
- /* ALTER TABLE <relation> DROP CONSTRAINT <name> {RESTRICT|CASCADE} */
+ /* ALTER TABLE <relation> DROP CONSTRAINT <name>
+ * {RESTRICT|CASCADE}
+ */
| ALTER TABLE relation_expr DROP CONSTRAINT name drop_behavior
{
AlterTableStmt *n = makeNode(AlterTableStmt);
@@ -1327,7 +1364,8 @@ copy_null: WITH NULL_P AS Sconst { $$ = $4; }
*
*****************************************************************************/
-CreateStmt: CREATE OptTemp TABLE qualified_name '(' OptTableElementList ')' OptInherit OptWithOids
+CreateStmt: CREATE OptTemp TABLE qualified_name '(' OptTableElementList ')'
+ OptInherit OptWithOids
{
CreateStmt *n = makeNode(CreateStmt);
$4->istemp = $2;
@@ -1350,12 +1388,14 @@ OptTemp: TEMPORARY { $$ = TRUE; }
| LOCAL TEMP { $$ = TRUE; }
| GLOBAL TEMPORARY
{
- elog(ERROR, "GLOBAL TEMPORARY TABLE is not currently supported");
+ elog(ERROR,
+ "GLOBAL TEMPORARY TABLE is not currently supported");
$$ = TRUE;
}
| GLOBAL TEMP
{
- elog(ERROR, "GLOBAL TEMPORARY TABLE is not currently supported");
+ elog(ERROR,
+ "GLOBAL TEMPORARY TABLE is not currently supported");
$$ = TRUE;
}
| /*EMPTY*/ { $$ = FALSE; }
@@ -1392,8 +1432,9 @@ columnDef: ColId Typename ColQualList opt_collate
n->constraints = $3;
if ($4 != NULL)
- elog(NOTICE, "CREATE TABLE / COLLATE %s not yet implemented"
- "; clause ignored", $4);
+ elog(NOTICE,
+ "CREATE TABLE / COLLATE %s not yet implemented; "
+ "clause ignored", $4);
$$ = (Node *)n;
}
@@ -1627,7 +1668,8 @@ ConstraintElem:
n->keys = $4;
$$ = (Node *)n;
}
- | FOREIGN KEY '(' columnList ')' REFERENCES qualified_name opt_column_list
+ | FOREIGN KEY '(' columnList ')' REFERENCES qualified_name
+ opt_column_list
key_match key_actions ConstraintAttributeSpec
{
FkConstraint *n = makeNode(FkConstraint);
@@ -1681,18 +1723,20 @@ key_actions:
| /*EMPTY*/ { $$ = 0; }
;
-key_delete: ON DELETE_P key_reference { $$ = $3 << FKCONSTR_ON_DELETE_SHIFT; }
+key_delete: ON DELETE_P key_reference
+ { $$ = $3 << FKCONSTR_ON_DELETE_SHIFT; }
;
-key_update: ON UPDATE key_reference { $$ = $3 << FKCONSTR_ON_UPDATE_SHIFT; }
+key_update: ON UPDATE key_reference
+ { $$ = $3 << FKCONSTR_ON_UPDATE_SHIFT; }
;
key_reference:
- NO ACTION { $$ = FKCONSTR_ON_KEY_NOACTION; }
- | RESTRICT { $$ = FKCONSTR_ON_KEY_RESTRICT; }
- | CASCADE { $$ = FKCONSTR_ON_KEY_CASCADE; }
- | SET NULL_P { $$ = FKCONSTR_ON_KEY_SETNULL; }
- | SET DEFAULT { $$ = FKCONSTR_ON_KEY_SETDEFAULT; }
+ NO ACTION { $$ = FKCONSTR_ON_KEY_NOACTION; }
+ | RESTRICT { $$ = FKCONSTR_ON_KEY_RESTRICT; }
+ | CASCADE { $$ = FKCONSTR_ON_KEY_CASCADE; }
+ | SET NULL_P { $$ = FKCONSTR_ON_KEY_SETNULL; }
+ | SET DEFAULT { $$ = FKCONSTR_ON_KEY_SETDEFAULT; }
;
OptInherit: INHERITS '(' qualified_name_list ')' { $$ = $3; }
@@ -1873,7 +1917,8 @@ opt_trusted:
* Work around by using name and dotted_name separately.
*/
handler_name:
- name { $$ = makeList1(makeString($1)); }
+ name
+ { $$ = makeList1(makeString($1)); }
| dotted_name { $$ = $1; }
;
@@ -2038,7 +2083,8 @@ ConstraintAttributeSpec:
| ConstraintDeferrabilitySpec ConstraintTimeSpec
{
if ($1 == 0 && $2 != 0)
- elog(ERROR, "INITIALLY DEFERRED constraint must be DEFERRABLE");
+ elog(ERROR,
+ "INITIALLY DEFERRED constraint must be DEFERRABLE");
$$ = $1 | $2;
}
| ConstraintTimeSpec
@@ -2051,7 +2097,8 @@ ConstraintAttributeSpec:
| ConstraintTimeSpec ConstraintDeferrabilitySpec
{
if ($2 == 0 && $1 != 0)
- elog(ERROR, "INITIALLY DEFERRED constraint must be DEFERRABLE");
+ elog(ERROR,
+ "INITIALLY DEFERRED constraint must be DEFERRABLE");
$$ = $1 | $2;
}
| /*EMPTY*/
@@ -2090,7 +2137,8 @@ DropTrigStmt:
*****************************************************************************/
CreateAssertStmt:
- CREATE ASSERTION name CHECK '(' a_expr ')' ConstraintAttributeSpec
+ CREATE ASSERTION name CHECK '(' a_expr ')'
+ ConstraintAttributeSpec
{
CreateTrigStmt *n = makeNode(CreateTrigStmt);
n->trigname = $3;
@@ -2182,10 +2230,10 @@ def_elem: ColLabel '=' def_arg
;
/* Note: any simple identifier will be returned as a type name! */
-def_arg: func_return { $$ = (Node *)$1; }
- | all_Op { $$ = (Node *)makeString($1); }
- | NumericOnly { $$ = (Node *)$1; }
- | Sconst { $$ = (Node *)makeString($1); }
+def_arg: func_return { $$ = (Node *)$1; }
+ | all_Op { $$ = (Node *)makeString($1); }
+ | NumericOnly { $$ = (Node *)$1; }
+ | Sconst { $$ = (Node *)makeString($1); }
;
@@ -2220,8 +2268,8 @@ any_name_list:
| any_name_list ',' any_name { $$ = lappend($1, $3); }
;
-any_name: ColId { $$ = makeList1(makeString($1)); }
- | dotted_name { $$ = $1; }
+any_name: ColId { $$ = makeList1(makeString($1)); }
+ | dotted_name { $$ = $1; }
;
/*****************************************************************************
@@ -2263,7 +2311,8 @@ CommentStmt:
n->comment = $6;
$$ = (Node *) n;
}
- | COMMENT ON AGGREGATE func_name '(' aggr_argtype ')' IS comment_text
+ | COMMENT ON AGGREGATE func_name '(' aggr_argtype ')'
+ IS comment_text
{
CommentStmt *n = makeNode(CommentStmt);
n->objtype = AGGREGATE;
@@ -2281,7 +2330,8 @@ CommentStmt:
n->comment = $7;
$$ = (Node *) n;
}
- | COMMENT ON OPERATOR any_operator '(' oper_argtypes ')' IS comment_text
+ | COMMENT ON OPERATOR any_operator '(' oper_argtypes ')'
+ IS comment_text
{
CommentStmt *n = makeNode(CommentStmt);
n->objtype = OPERATOR;
@@ -2352,7 +2402,8 @@ FetchStmt: FETCH direction fetch_how_many from_in name
if ($2 == RELATIVE)
{
if ($3 == 0)
- elog(ERROR,"FETCH / RELATIVE at current position is not supported");
+ elog(ERROR,
+ "FETCH / RELATIVE at current position is not supported");
$2 = FORWARD;
}
if ($3 < 0)
@@ -2479,7 +2530,8 @@ direction: FORWARD { $$ = FORWARD; }
| RELATIVE { $$ = RELATIVE; }
| ABSOLUTE
{
- elog(NOTICE,"FETCH / ABSOLUTE not supported, using RELATIVE");
+ elog(NOTICE,
+ "FETCH / ABSOLUTE not supported, using RELATIVE");
$$ = RELATIVE;
}
;
@@ -2487,7 +2539,8 @@ direction: FORWARD { $$ = FORWARD; }
fetch_how_many:
Iconst { $$ = $1; }
| '-' Iconst { $$ = - $2; }
- | ALL { $$ = 0; /* 0 means fetch all tuples*/ }
+ /* 0 means fetch all tuples*/
+ | ALL { $$ = 0; }
| NEXT { $$ = 1; }
| PRIOR { $$ = -1; }
;
@@ -2503,7 +2556,8 @@ from_in: IN_P {}
*
*****************************************************************************/
-GrantStmt: GRANT privileges ON privilege_target TO grantee_list opt_grant_grant_option
+GrantStmt: GRANT privileges ON privilege_target TO grantee_list
+ opt_grant_grant_option
{
GrantStmt *n = makeNode(GrantStmt);
n->is_grant = true;
@@ -2515,7 +2569,8 @@ GrantStmt: GRANT privileges ON privilege_target TO grantee_list opt_grant_grant_
}
;
-RevokeStmt: REVOKE opt_revoke_grant_option privileges ON privilege_target FROM grantee_list
+RevokeStmt: REVOKE opt_revoke_grant_option privileges ON privilege_target
+ FROM grantee_list
{
GrantStmt *n = makeNode(GrantStmt);
n->is_grant = false;
@@ -2529,9 +2584,9 @@ RevokeStmt: REVOKE opt_revoke_grant_option privileges ON privilege_target FROM g
/* either ALL [PRIVILEGES] or a list of individual privileges */
-privileges: privilege_list { $$ = $1; }
- | ALL { $$ = makeListi1(ACL_ALL_RIGHTS); }
- | ALL PRIVILEGES { $$ = makeListi1(ACL_ALL_RIGHTS); }
+privileges: privilege_list { $$ = $1; }
+ | ALL { $$ = makeListi1(ACL_ALL_RIGHTS); }
+ | ALL PRIVILEGES { $$ = makeListi1(ACL_ALL_RIGHTS); }
;
privilege_list:
@@ -2613,7 +2668,7 @@ grantee_list:
grantee: ColId
{
PrivGrantee *n = makeNode(PrivGrantee);
- /* This hack lets us avoid reserving PUBLIC as a keyword */
+ /* This hack lets us avoid reserving PUBLIC as a keyword*/
if (strcmp($1, "public") == 0)
n->username = NULL;
else
@@ -2838,12 +2893,14 @@ func_arg: opt_arg func_type
opt_arg: IN_P { $$ = FALSE; }
| OUT_P
{
- elog(ERROR, "CREATE FUNCTION / OUT parameters are not supported");
+ elog(ERROR,
+ "CREATE FUNCTION / OUT parameters are not supported");
$$ = TRUE;
}
| INOUT
{
- elog(ERROR, "CREATE FUNCTION / INOUT parameters are not supported");
+ elog(ERROR,
+ "CREATE FUNCTION / INOUT parameters are not supported");
$$ = FALSE;
}
;
@@ -2961,8 +3018,11 @@ createfunc_opt_item:
}
;
-func_as: Sconst { $$ = makeList1(makeString($1)); }
- | Sconst ',' Sconst { $$ = makeList2(makeString($1), makeString($3)); }
+func_as: Sconst { $$ = makeList1(makeString($1)); }
+ | Sconst ',' Sconst
+ {
+ $$ = makeList2(makeString($1), makeString($3));
+ }
;
opt_definition:
@@ -3021,14 +3081,19 @@ oper_argtypes:
{
elog(ERROR,"parser: argument type missing (use NONE for unary operators)");
}
- | Typename ',' Typename { $$ = makeList2($1, $3); }
- | NONE ',' Typename /* left unary */ { $$ = makeList2(NULL, $3); }
- | Typename ',' NONE /* right unary */ { $$ = makeList2($1, NULL); }
+ | Typename ',' Typename
+ { $$ = makeList2($1, $3); }
+ | NONE ',' Typename /* left unary */
+ { $$ = makeList2(NULL, $3); }
+ | Typename ',' NONE /* right unary */
+ { $$ = makeList2($1, NULL); }
;
any_operator:
- all_Op { $$ = makeList1(makeString($1)); }
- | ColId '.' any_operator { $$ = lcons(makeString($1), $3); }
+ all_Op
+ { $$ = makeList1(makeString($1)); }
+ | ColId '.' any_operator
+ { $$ = lcons(makeString($1), $3); }
;
@@ -3732,7 +3797,8 @@ insert_rest:
insert_column_list:
insert_column_item { $$ = makeList1($1); }
- | insert_column_list ',' insert_column_item { $$ = lappend($1, $3); }
+ | insert_column_list ',' insert_column_item
+ { $$ = lappend($1, $3); }
;
insert_column_item:
@@ -3773,18 +3839,18 @@ LockStmt: LOCK_P opt_table qualified_name_list opt_lock
}
;
-opt_lock: IN_P lock_type MODE { $$ = $2; }
- | /*EMPTY*/ { $$ = AccessExclusiveLock; }
+opt_lock: IN_P lock_type MODE { $$ = $2; }
+ | /*EMPTY*/ { $$ = AccessExclusiveLock; }
;
-lock_type: ACCESS SHARE { $$ = AccessShareLock; }
- | ROW SHARE { $$ = RowShareLock; }
- | ROW EXCLUSIVE { $$ = RowExclusiveLock; }
- | SHARE UPDATE EXCLUSIVE { $$ = ShareUpdateExclusiveLock; }
- | SHARE { $$ = ShareLock; }
- | SHARE ROW EXCLUSIVE { $$ = ShareRowExclusiveLock; }
- | EXCLUSIVE { $$ = ExclusiveLock; }
- | ACCESS EXCLUSIVE { $$ = AccessExclusiveLock; }
+lock_type: ACCESS SHARE { $$ = AccessShareLock; }
+ | ROW SHARE { $$ = RowShareLock; }
+ | ROW EXCLUSIVE { $$ = RowExclusiveLock; }
+ | SHARE UPDATE EXCLUSIVE { $$ = ShareUpdateExclusiveLock; }
+ | SHARE { $$ = ShareLock; }
+ | SHARE ROW EXCLUSIVE { $$ = ShareRowExclusiveLock; }
+ | EXCLUSIVE { $$ = ExclusiveLock; }
+ | ACCESS EXCLUSIVE { $$ = AccessExclusiveLock; }
;
@@ -3998,13 +4064,15 @@ OptTempTableName:
}
| GLOBAL TEMPORARY opt_table qualified_name
{
- elog(ERROR, "GLOBAL TEMPORARY TABLE is not currently supported");
+ elog(ERROR,
+ "GLOBAL TEMPORARY TABLE is not currently supported");
$$ = $4;
$$->istemp = true;
}
| GLOBAL TEMP opt_table qualified_name
{
- elog(ERROR, "GLOBAL TEMPORARY TABLE is not currently supported");
+ elog(ERROR,
+ "GLOBAL TEMPORARY TABLE is not currently supported");
$$ = $4;
$$->istemp = true;
}
@@ -4076,13 +4144,15 @@ select_limit:
{ $$ = makeList2($2, NULL); }
| LIMIT select_limit_value ',' select_offset_value
/* Disabled because it was too confusing, bjm 2002-02-18 */
- { elog(ERROR, "LIMIT #,# syntax not supported.\n\tUse separate LIMIT and OFFSET clauses."); }
+ { elog(ERROR,
+ "LIMIT #,# syntax not supported.\n\tUse separate LIMIT and OFFSET clauses."); }
;
opt_select_limit:
select_limit { $$ = $1; }
- | /* EMPTY */ { $$ = makeList2(NULL,NULL); }
+ | /* EMPTY */
+ { $$ = makeList2(NULL,NULL); }
;
select_limit_value:
@@ -4469,7 +4539,8 @@ func_table: func_name '(' ')'
where_clause:
WHERE a_expr { $$ = $2; }
- | /*EMPTY*/ { $$ = NULL; /* no qualifiers */ }
+ /* no qualifiers */
+ | /*EMPTY*/ { $$ = NULL; }
;
@@ -4524,7 +4595,8 @@ SimpleTypename:
{
$$ = $1;
if (($3 < 0) || ($3 > MAX_INTERVAL_PRECISION))
- elog(ERROR, "INTERVAL(%d) precision must be between %d and %d",
+ elog(ERROR,
+ "INTERVAL(%d) precision must be between %d and %d",
$3, 0, MAX_INTERVAL_PRECISION);
$$->typmod = ((($5 & 0x7FFF) << 16) | $3);
}
@@ -4608,13 +4680,15 @@ Numeric: INT
opt_float: '(' Iconst ')'
{
if ($2 < 1)
- elog(ERROR, "precision for FLOAT must be at least 1");
+ elog(ERROR,
+ "precision for FLOAT must be at least 1");
else if ($2 < 7)
$$ = SystemTypeName("float4");
else if ($2 < 16)
$$ = SystemTypeName("float8");
else
- elog(ERROR, "precision for FLOAT must be less than 16");
+ elog(ERROR,
+ "precision for FLOAT must be less than 16");
}
| /*EMPTY*/
{
@@ -4626,10 +4700,12 @@ opt_numeric:
'(' Iconst ',' Iconst ')'
{
if ($2 < 1 || $2 > NUMERIC_MAX_PRECISION)
- elog(ERROR, "NUMERIC precision %d must be between 1 and %d",
+ elog(ERROR,
+ "NUMERIC precision %d must be between 1 and %d",
$2, NUMERIC_MAX_PRECISION);
if ($4 < 0 || $4 > $2)
- elog(ERROR, "NUMERIC scale %d must be between 0 and precision %d",
+ elog(ERROR,
+ "NUMERIC scale %d must be between 0 and precision %d",
$4,$2);
$$ = (($2 << 16) | $4) + VARHDRSZ;
@@ -4637,7 +4713,8 @@ opt_numeric:
| '(' Iconst ')'
{
if ($2 < 1 || $2 > NUMERIC_MAX_PRECISION)
- elog(ERROR, "NUMERIC precision %d must be between 1 and %d",
+ elog(ERROR,
+ "NUMERIC precision %d must be between 1 and %d",
$2, NUMERIC_MAX_PRECISION);
$$ = ($2 << 16) + VARHDRSZ;
@@ -4653,10 +4730,12 @@ opt_decimal:
'(' Iconst ',' Iconst ')'
{
if ($2 < 1 || $2 > NUMERIC_MAX_PRECISION)
- elog(ERROR, "DECIMAL precision %d must be between 1 and %d",
+ elog(ERROR,
+ "DECIMAL precision %d must be between 1 and %d",
$2, NUMERIC_MAX_PRECISION);
if ($4 < 0 || $4 > $2)
- elog(ERROR, "DECIMAL scale %d must be between 0 and precision %d",
+ elog(ERROR,
+ "DECIMAL scale %d must be between 0 and precision %d",
$4,$2);
$$ = (($2 << 16) | $4) + VARHDRSZ;
@@ -4664,7 +4743,8 @@ opt_decimal:
| '(' Iconst ')'
{
if ($2 < 1 || $2 > NUMERIC_MAX_PRECISION)
- elog(ERROR, "DECIMAL precision %d must be between 1 and %d",
+ elog(ERROR,
+ "DECIMAL precision %d must be between 1 and %d",
$2, NUMERIC_MAX_PRECISION);
$$ = ($2 << 16) + VARHDRSZ;
@@ -4809,8 +4889,10 @@ ConstDatetime:
*/
$$->timezone = $5;
if (($3 < 0) || ($3 > MAX_TIMESTAMP_PRECISION))
- elog(ERROR, "TIMESTAMP(%d)%s precision must be between %d and %d",
- $3, ($5 ? " WITH TIME ZONE": ""), 0, MAX_TIMESTAMP_PRECISION);
+ elog(ERROR,
+ "TIMESTAMP(%d)%s precision must be between %d and %d",
+ $3, ($5 ? " WITH TIME ZONE": ""), 0,
+ MAX_TIMESTAMP_PRECISION);
$$->typmod = $3;
}
| TIMESTAMP opt_timezone
@@ -4839,8 +4921,10 @@ ConstDatetime:
else
$$ = SystemTypeName("time");
if (($3 < 0) || ($3 > MAX_TIME_PRECISION))
- elog(ERROR, "TIME(%d)%s precision must be between %d and %d",
- $3, ($5 ? " WITH TIME ZONE": ""), 0, MAX_TIME_PRECISION);
+ elog(ERROR,
+ "TIME(%d)%s precision must be between %d and %d",
+ $3, ($5 ? " WITH TIME ZONE": ""), 0,
+ MAX_TIME_PRECISION);
$$->typmod = $3;
}
| TIME opt_timezone
@@ -4874,13 +4958,20 @@ opt_interval:
| HOUR_P { $$ = MASK(HOUR); }
| MINUTE_P { $$ = MASK(MINUTE); }
| SECOND_P { $$ = MASK(SECOND); }
- | YEAR_P TO MONTH_P { $$ = MASK(YEAR) | MASK(MONTH); }
- | DAY_P TO HOUR_P { $$ = MASK(DAY) | MASK(HOUR); }
- | DAY_P TO MINUTE_P { $$ = MASK(DAY) | MASK(HOUR) | MASK(MINUTE); }
- | DAY_P TO SECOND_P { $$ = MASK(DAY) | MASK(HOUR) | MASK(MINUTE) | MASK(SECOND); }
- | HOUR_P TO MINUTE_P { $$ = MASK(HOUR) | MASK(MINUTE); }
- | HOUR_P TO SECOND_P { $$ = MASK(HOUR) | MASK(MINUTE) | MASK(SECOND); }
- | MINUTE_P TO SECOND_P { $$ = MASK(MINUTE) | MASK(SECOND); }
+ | YEAR_P TO MONTH_P
+ { $$ = MASK(YEAR) | MASK(MONTH); }
+ | DAY_P TO HOUR_P
+ { $$ = MASK(DAY) | MASK(HOUR); }
+ | DAY_P TO MINUTE_P
+ { $$ = MASK(DAY) | MASK(HOUR) | MASK(MINUTE); }
+ | DAY_P TO SECOND_P
+ { $$ = MASK(DAY) | MASK(HOUR) | MASK(MINUTE) | MASK(SECOND); }
+ | HOUR_P TO MINUTE_P
+ { $$ = MASK(HOUR) | MASK(MINUTE); }
+ | HOUR_P TO SECOND_P
+ { $$ = MASK(HOUR) | MASK(MINUTE) | MASK(SECOND); }
+ | MINUTE_P TO SECOND_P
+ { $$ = MASK(MINUTE) | MASK(SECOND); }
| /*EMPTY*/ { $$ = -1; }
;
@@ -4915,7 +5006,8 @@ row_expr: '(' row_descriptor ')' IN_P select_with_parens
n->subselect = $6;
$$ = (Node *)n;
}
- | '(' row_descriptor ')' qual_all_Op sub_type select_with_parens %prec Op
+ | '(' row_descriptor ')' qual_all_Op sub_type select_with_parens
+ %prec Op
{
SubLink *n = makeNode(SubLink);
n->lefthand = $2;
@@ -4928,7 +5020,8 @@ row_expr: '(' row_descriptor ')' IN_P select_with_parens
n->subselect = $6;
$$ = (Node *)n;
}
- | '(' row_descriptor ')' qual_all_Op select_with_parens %prec Op
+ | '(' row_descriptor ')' qual_all_Op select_with_parens
+ %prec Op
{
SubLink *n = makeNode(SubLink);
n->lefthand = $2;
@@ -4941,7 +5034,8 @@ row_expr: '(' row_descriptor ')' IN_P select_with_parens
n->subselect = $5;
$$ = (Node *)n;
}
- | '(' row_descriptor ')' qual_all_Op '(' row_descriptor ')' %prec Op
+ | '(' row_descriptor ')' qual_all_Op '(' row_descriptor ')'
+ %prec Op
{
$$ = makeRowExpr($4, $2, $6);
}
@@ -4996,12 +5090,14 @@ MathOp: '+' { $$ = "+"; }
| '=' { $$ = "="; }
;
-qual_Op: Op { $$ = makeList1(makeString($1)); }
+qual_Op: Op
+ { $$ = makeList1(makeString($1)); }
| OPERATOR '(' any_operator ')' { $$ = $3; }
;
qual_all_Op:
- all_Op { $$ = makeList1(makeString($1)); }
+ all_Op
+ { $$ = makeList1(makeString($1)); }
| OPERATOR '(' any_operator ')' { $$ = $3; }
;
@@ -5022,7 +5118,8 @@ qual_all_Op:
* it's factored out just to eliminate redundant coding.
*/
a_expr: c_expr { $$ = $1; }
- | a_expr TYPECAST Typename { $$ = makeTypeCast($1, $3); }
+ | a_expr TYPECAST Typename
+ { $$ = makeTypeCast($1, $3); }
| a_expr COLLATE ColId
{
FuncCall *n = makeNode(FuncCall);
@@ -5325,7 +5422,7 @@ a_expr: c_expr { $$ = $1; }
$$ = n;
}
}
- | a_expr qual_all_Op sub_type select_with_parens %prec Op
+ | a_expr qual_all_Op sub_type select_with_parens %prec Op
{
SubLink *n = makeNode(SubLink);
n->lefthand = makeList1($1);
@@ -5553,7 +5650,8 @@ c_expr: columnref { $$ = (Node *) $1; }
s->typename = SystemTypeName("text");
d = SystemTypeName("timetz");
if (($3 < 0) || ($3 > MAX_TIME_PRECISION))
- elog(ERROR, "CURRENT_TIME(%d) precision must be between %d and %d",
+ elog(ERROR,
+ "CURRENT_TIME(%d) precision must be between %d and %d",
$3, 0, MAX_TIME_PRECISION);
d->typmod = $3;
@@ -5597,7 +5695,9 @@ c_expr: columnref { $$ = (Node *) $1; }
d = SystemTypeName("timestamptz");
if (($3 < 0) || ($3 > MAX_TIMESTAMP_PRECISION))
- elog(ERROR, "CURRENT_TIMESTAMP(%d) precision must be between %d and %d",
+ elog(ERROR,
+ "CURRENT_TIMESTAMP(%d) precision "
+ "must be between %d and %d",
$3, 0, MAX_TIMESTAMP_PRECISION);
d->typmod = $3;
@@ -5640,7 +5740,8 @@ c_expr: columnref { $$ = (Node *) $1; }
s->typename = SystemTypeName("text");
d = SystemTypeName("time");
if (($3 < 0) || ($3 > MAX_TIME_PRECISION))
- elog(ERROR, "LOCALTIME(%d) precision must be between %d and %d",
+ elog(ERROR,
+ "LOCALTIME(%d) precision must be between %d and %d",
$3, 0, MAX_TIME_PRECISION);
d->typmod = $3;
@@ -5684,7 +5785,9 @@ c_expr: columnref { $$ = (Node *) $1; }
d = SystemTypeName("timestamp");
if (($3 < 0) || ($3 > MAX_TIMESTAMP_PRECISION))
- elog(ERROR, "LOCALTIMESTAMP(%d) precision must be between %d and %d",
+ elog(ERROR,
+ "LOCALTIMESTAMP(%d) precision must be "
+ "between %d and %d",
$3, 0, MAX_TIMESTAMP_PRECISION);
d->typmod = $3;
@@ -6066,12 +6169,16 @@ columnref: relation_name opt_indirection
;
dotted_name:
- relation_name attrs { $$ = lcons(makeString($1), $2); }
+ relation_name attrs
+ { $$ = lcons(makeString($1), $2); }
;
-attrs: '.' attr_name { $$ = makeList1(makeString($2)); }
- | '.' '*' { $$ = makeList1(makeString("*")); }
- | '.' attr_name attrs { $$ = lcons(makeString($2), $3); }
+attrs: '.' attr_name
+ { $$ = makeList1(makeString($2)); }
+ | '.' '*'
+ { $$ = makeList1(makeString("*")); }
+ | '.' attr_name attrs
+ { $$ = lcons(makeString($2), $3); }
;
@@ -6194,15 +6301,19 @@ qualified_name:
$$->relname = strVal(lfirst(lnext(lnext($1))));
break;
default:
- elog(ERROR, "Improper qualified name (too many dotted names): %s",
+ elog(ERROR,
+ "Improper qualified name "
+ "(too many dotted names): %s",
NameListToString($1));
break;
}
}
;
-name_list: name { $$ = makeList1(makeString($1)); }
- | name_list ',' name { $$ = lappend($1, makeString($3)); }
+name_list: name
+ { $$ = makeList1(makeString($1)); }
+ | name_list ',' name
+ { $$ = lappend($1, makeString($3)); }
;
@@ -6220,7 +6331,8 @@ index_name: ColId { $$ = $1; };
file_name: Sconst { $$ = $1; };
-func_name: function_name { $$ = makeList1(makeString($1)); }
+func_name: function_name
+ { $$ = makeList1(makeString($1)); }
| dotted_name { $$ = $1; }
;
@@ -6289,7 +6401,8 @@ AexprConst: Iconst
n->val.val.str = $5;
/* precision specified, and fields may be... */
if (($3 < 0) || ($3 > MAX_INTERVAL_PRECISION))
- elog(ERROR, "INTERVAL(%d) precision must be between %d and %d",
+ elog(ERROR,
+ "INTERVAL(%d) precision must be between %d and %d",
$3, 0, MAX_INTERVAL_PRECISION);
n->typename->typmod = ((($6 & 0x7FFF) << 16) | $3);
$$ = (Node *)n;