⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 preproc.y

📁 PostgreSQL 8.1.4的源码 适用于Linux下的开源数据库系统
💻 Y
📖 第 1 页 / 共 5 页
字号:
opt_boolean:  TRUE_P		{ $$ = make_str("true"); }		| FALSE_P			{ $$ = make_str("false"); }		| ON				{ $$ = make_str("on"); }		| OFF				{ $$ = make_str("off"); }		;/* Timezone values can be: * - a string such as 'pst8pdt' * - a column identifier such as "pst8pdt" * - 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; }		| ident		{ $$ = $1; }		| ConstInterval StringConst opt_interval			{ $$ = cat_str(3, $1, $2, $3); }		| ConstInterval '(' PosIntConst ')' StringConst opt_interval			{ $$ = cat_str(6, $1, make_str("("), $3, make_str(")"), $5, $6); }		| DEFAULT			{ $$ = make_str("default"); }		| LOCAL			{ $$ = make_str("local"); }		;opt_encoding:	StringConst		{ $$ = $1; }		| DEFAULT				{ $$ = make_str("default"); }		| /*EMPTY*/				{ $$ = EMPTY; }		;ColId_or_Sconst: ColId			{ $$ = $1; }		| StringConst			{ $$ = $1; }		;VariableShowStmt:  SHOW var_name			{ $$ = cat2_str(make_str("show"), $2); }		| SHOW TIME ZONE			{ $$ = make_str("show time zone"); }		| SHOW TRANSACTION ISOLATION LEVEL			{ $$ = make_str("show transaction isolation level"); }		| SHOW SESSION AUTHORIZATION			{ $$ = make_str("show session authorization"); }		| SHOW ALL			{ $$ = make_str("show all"); }		;VariableResetStmt:	RESET var_name			{ $$ = cat2_str(make_str("reset"), $2); }		| RESET TIME ZONE			{ $$ = make_str("reset time zone"); }		| RESET TRANSACTION ISOLATION LEVEL			{ $$ = make_str("reset transaction isolation level"); }		| RESET SESSION AUTHORIZATION			{ $$ = make_str("reset session authorization"); }		| RESET ALL			{ $$ = make_str("reset all"); }		;ConstraintsSetStmt:    SET CONSTRAINTS constraints_set_list constraints_set_mode			{ $$ = cat_str(3, make_str("set constraints"), $3, $4); }		;constraints_set_list:  ALL			{ $$ = make_str("all"); }		| name_list			{ $$ = $1; }		;constraints_set_mode:  DEFERRED		{ $$ = make_str("deferred"); }		| IMMEDIATE		{ $$ = make_str("immediate"); }		;/* * Checkpoint statement */CheckPointStmt: CHECKPOINT	   { $$= make_str("checkpoint"); }		;/***************************************************************************** * *	ALTER [ TABLE | INDEX ] variations * *****************************************************************************/AlterTableStmt:		ALTER TABLE relation_expr alter_table_cmds			{ $$ = cat_str(3, make_str("alter table"), $3, $4); }		|       ALTER INDEX relation_expr alter_rel_cmds			{ $$ = cat_str(3, make_str("alter table"), $3, $4); }		;/* Subcommands that are for ALTER TABLE only */alter_table_cmds:		alter_table_cmd 			{ $$ = $1; }		| alter_table_cmds ',' alter_table_cmd	{ $$ = cat_str(3, $1, make_str(","), $3); }		;alter_table_cmd:		ADD opt_column columnDef/* ALTER TABLE <relation> ADD [COLUMN] <coldef> */			{ $$ = cat_str(3, make_str("add"), $2, $3); }/* ALTER TABLE <relation> ALTER [COLUMN] <colname> {SET DEFAULT <expr>|DROP DEFAULT} */		| ALTER opt_column ColId alter_column_default			{ $$ = cat_str(4, make_str("alter"), $2, $3, $4); }/* ALTER TABLE <relation> ALTER [COLUMN] <colname> DROP NOT NULL */		| ALTER opt_column ColId DROP NOT NULL_P			{ $$ = cat_str(4, make_str("alter"), $2, $3, make_str("drop not null")); }/* ALTER TABLE <relation> ALTER [COLUMN] <colname> SET NOT NULL */		| ALTER opt_column ColId SET NOT NULL_P			{ $$ = cat_str(4, make_str("alter"), $2, $3, make_str("set not null")); }/* ALTER TABLE <relation> ALTER [COLUMN] <colname> SET STATISTICS <IntegerOnly> */		| ALTER opt_column ColId SET STATISTICS PosIntConst			{ $$ = cat_str(5, make_str("alter"), $2, $3, make_str("set statistics"), $6); }/* ALTER TABLE <relation> ALTER [COLUMN] <colname> SET STORAGE <storagemode> */		| ALTER opt_column ColId SET STORAGE ColId			{ $$ = cat_str(5, make_str("alter"), $2, $3, make_str("set storage"), $6); }/* ALTER TABLE <relation> DROP [COLUMN] <colname> {RESTRICT|CASCADE} */		| DROP opt_column ColId opt_drop_behavior			{ $$ = cat_str(4, make_str("drop"), $2, $3, $4); }/* ALTER TABLE <relation> ALTER [COLUMN] <colname> TYPE <typename> [ USING <expression> ] */		| ALTER opt_column ColId TYPE_P Typename alter_using			{ $$ = cat_str(6, make_str("alter"), $2, $3, make_str("type"), $5, $6); }/* ALTER TABLE <relation> ADD CONSTRAINT ... */		| ADD TableConstraint			{ $$ = cat_str(2, make_str("add"), $2); }/* ALTER TABLE <relation> DROP CONSTRAINT ... */		| DROP CONSTRAINT name opt_drop_behavior			{ $$ = cat_str(3, make_str("drop constraint"), $3, $4); }/* ALTER TABLE <relation> SET WITHOUT OIDS  */		| SET WITHOUT OIDS			{ $$ = make_str("set without oids"); } /* ALTER TABLE <name> CREATE TOAST TABLE */		| CREATE TOAST TABLE			{ $$ = make_str("create toast table"); }/* ALTER TABLE <name> CLUSTER ON <indexname> */		| CLUSTER ON name			{ $$ = cat_str(2, make_str("cluster on"), $3); }/* ALTER TABLE <name> SET WITHOUT CLUSTER */		| SET WITHOUT CLUSTER			{ $$ = make_str("set without cluster"); }/* ALTER TABLE <name> ENABLE TRIGGER <trig> */                | ENABLE_P TRIGGER name			{ $$ = cat2_str(make_str("enable trigger"), $3); }/* ALTER TABLE <name> ENABLE TRIGGER ALL */                | ENABLE_P TRIGGER ALL			{ $$ = make_str("enable trigger all"); }/* ALTER TABLE <name> ENABLE TRIGGER USER */                | ENABLE_P TRIGGER USER			{ $$ = make_str("enable trigger user"); }/* ALTER TABLE <name> DISABLE TRIGGER <trig> */                | DISABLE_P TRIGGER name			{ $$ = cat2_str(make_str("disable trigger"), $3); }/* ALTER TABLE <name> DISABLE TRIGGER ALL */                | DISABLE_P TRIGGER ALL			{ $$ = make_str("disable trigger all"); }/* ALTER TABLE <name> DISABLE TRIGGER USER */                | DISABLE_P TRIGGER USER			{ $$ = make_str("disable trigger user"); }		;alter_rel_cmds: alter_rel_cmd  				{ $$ = $1; }		| alter_rel_cmds ',' alter_rel_cmd	{ $$ = cat_str(3, $1, make_str(","), $3); }		;/* Subcommands that are for ALTER TABLE or ALTER INDEX */alter_rel_cmd:		/* ALTER [TABLE|INDEX] <name> OWNER TO RoleId */		OWNER TO RoleId			{ $$ = cat_str(2, make_str("owner to"), $3); }		/* ALTER [TABLE|INDEX] <name> SET TABLESPACE <tablespacename> */		| SET TABLESPACE name			{ $$ = cat_str(2, make_str("set tablespace"), $3); }		;alter_column_default:		SET DEFAULT a_expr		{ $$ = cat2_str(make_str("set default"), $3); }		| DROP DEFAULT			{ $$ = make_str("drop default"); }		;opt_drop_behavior: CASCADE 			{ $$ = make_str("cascade"); }		| RESTRICT 			{ $$ = make_str("restrict"); }		| /* EMPTY */ 			{ $$ = EMPTY; }		;alter_using:	USING a_expr			{ $$ = cat2_str(make_str("using"), $2); }		| /* EMPTY */                   { $$ = EMPTY; }		;				/***************************************************************************** * *		QUERY : *				close <portalname> * *****************************************************************************/ClosePortalStmt:  CLOSE name		{			$$ = cat2_str(make_str("close"), $2);		}		;/***************************************************************************** * *		QUERY : *				COPY [BINARY] <relname> FROM/TO *				[USING DELIMITERS <delimiter>] * *****************************************************************************/CopyStmt:  COPY opt_binary qualified_name opt_oids copy_from		copy_file_name copy_delimiter opt_with copy_opt_list			{ $$ = cat_str(9, make_str("copy"), $2, $3, $4, $5, $6, $7, $8, $9); }		;copy_from:	TO					{ $$ = make_str("to"); }		| FROM					{ $$ = make_str("from"); }		;/* * copy_file_name NULL indicates stdio is used. Whether stdin or stdout is * used depends on the direction. (It really doesn't make sense to copy from * stdout. We silently correct the "typo".		 - AY 9/94 */copy_file_name:  StringConst	{ $$ = $1; }		| STDIN					{ $$ = make_str("stdin"); }		| STDOUT				{ $$ = make_str("stdout"); }		;copy_opt_list: copy_opt_list copy_opt_item	{ $$ = cat2_str($1, $2); }		| /* EMPTY */ 			{ $$ = EMPTY; }		;copy_opt_item:	BINARY		{ $$ = make_str("binary"); }		| OIDS		{ $$ = make_str("oids"); }		| DELIMITER opt_as StringConst			{ $$ = cat_str(3, make_str("delimiter"), $2, $3); }		| NULL_P opt_as StringConst			{ $$ = cat_str(3, make_str("null"), $2, $3); }		| CSV		{ $$ = make_str("csv"); }		| HEADER	{ $$ = make_str("header"); }		| QUOTE opt_as Sconst			{ $$ = cat_str(3, make_str("quote"), $2, $3); }		| ESCAPE opt_as Sconst			{ $$ = cat_str(3, make_str("escape"), $2, $3); }		| FORCE QUOTE columnList			{ $$ = cat2_str(make_str("force quote"), $3); }		| FORCE NOT NULL_P columnList			{ $$ = cat2_str(make_str("force not null"), $4); }				;opt_binary:	BINARY		{ $$ = make_str("binary"); }		| /* EMPTY */	{ $$ = EMPTY; }		;opt_oids:	WITH OIDS	{ $$ = make_str("with oids"); }		| /* EMPTY */   { $$ = EMPTY; }		;/* * the default copy delimiter is tab but the user can configure it */copy_delimiter:  opt_using DELIMITERS StringConst			{ $$ = cat_str(3, $1, make_str("delimiters"), $3); }		| /*EMPTY*/			{ $$ = EMPTY; }		;opt_using:	USING		{ $$ = make_str("using"); }		| /* EMPTY */	{ $$ = EMPTY; }		;/***************************************************************************** * *		QUERY : *				CREATE TABLE relname * *****************************************************************************/CreateStmt:  CREATE OptTemp TABLE qualified_name '(' OptTableElementList ')'				OptInherit OptWithOids OnCommitOption OptTableSpace			{ $$ = cat_str(11, make_str("create"), $2, make_str("table"), $4, make_str("("), $6, make_str(")"), $8, $9, $10, $11); }		| CREATE OptTemp TABLE qualified_name OF qualified_name			'(' OptTableElementList ')' OptWithOids OnCommitOption OptTableSpace			{ $$ = cat_str(12, make_str("create"), $2, make_str("table"), $4, make_str("of"), $6, make_str("("), $8, make_str(")"), $10, $11, $12); }		;/* * Redundancy here is needed to avoid shift/reduce conflicts, * since TEMP is not a reserved word.  See also OptTempTableName. */OptTemp: TEMPORARY			{ $$ = make_str("temporary"); }		| TEMP			{ $$ = make_str("temp"); }		| LOCAL TEMPORARY	{ $$ = make_str("local temporary"); }		| LOCAL TEMP		{ $$ = make_str("local temp"); }		| GLOBAL TEMPORARY 	{ $$ = make_str("global temporary"); }		| GLOBAL TEMP 		{ $$ = make_str("global temp"); }		| /*EMPTY*/		{ $$ = EMPTY; }		;OptTableElementList:  TableElementList			{ $$ = $1; }		| /*EMPTY*/			{ $$ = EMPTY; }		;TableElementList: TableElement			{ $$ = $1; }		| TableElementList ',' TableElement			{ $$ = cat_str(3, $1, make_str(","), $3); }		;TableElement:  columnDef		{ $$ = $1; }		| TableLikeClause	{ $$ = $1; }		| TableConstraint	{ $$ = $1; }		;columnDef:	ColId Typename ColQualList 		{			$$ = cat_str(3, $1, $2, $3);		}		;ColQualList:  ColQualList ColConstraint { $$ = cat2_str($1,$2); }		| /*EMPTY*/						{ $$ = EMPTY; }		;ColConstraint:	CONSTRAINT name ColConstraintElem			{ $$ = cat_str(3, make_str("constraint"), $2, $3); }		| ColConstraintElem		{ $$ = $1; }		| ConstraintAttr		{ $$ = $1; }		;/* DEFAULT NULL is already the default for Postgres. * But define it here and carry it forward into the system * to make it explicit. * - thomas 1998-09-13 * * WITH NULL and NULL are not SQL92-standard syntax elements, * so leave them out. Use DEFAULT NULL to explicitly indicate * that a column may have that value. WITH NULL leads to * shift/reduce conflicts with WITH TIME ZONE anyway. * - thomas 1999-01-08 */ColConstraintElem:	NOT NULL_P			{ $$ = make_str("not null"); }		| NULL_P			{ $$ = make_str("null"); }		| UNIQUE OptConsTableSpace			{ $$ = cat2_str(make_str("unique"), $2); }		| PRIMARY KEY OptConsTableSpace			{ $$ = cat2_str(make_str("primary key"), $3); }		| CHECK '(' a_expr ')'			{ $$ = cat_str(3, make_str("check ("), $3, make_str(")")); }		| DEFAULT b_expr			{ $$ = cat2_str(make_str("default"), $2); }		|  REFERENCES qualified_name opt_column_list key_match key_actions			{ $$ = cat_str(5, make_str("references"), $2, $3, $4, $5); }		;/* * ConstraintAttr represents constraint attributes, which we parse as if * they were independent constraint clauses, in order to avoid shift/reduce * conflicts (since NOT might start either an independent NOT NULL clause * or an attribute).  analyze.c is responsible for attaching the attribute * information to the preceding "real" constraint node, and for complaining * if attribute clauses appear in the wrong place or wrong combinations. * * See also ConstraintAttributeSpec, which can be used in places where * there is no parsing conflict. */ConstraintAttr: DEFERRABLE		{ $$ = make_str("deferrable"); }		| NOT DEFERRABLE		{ $$ = make_str("not deferrable"); }		| INITIALLY DEFERRED	{ $$ = make_str("initially deferred"); }		| INITIALLY IMMEDIATE	{ $$ = make_str("initially immediate"); }		;TableLikeClause:  LIKE qualified_name like_including_defaults

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -