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

📄 preproc.y

📁 PostgreSQL7.4.6 for Linux
💻 Y
📖 第 1 页 / 共 5 页
字号:
		| ALTER TABLE relation_expr ADD TableConstraint			{ $$ = cat_str(4, make_str("alter table"), $3, make_str("add"), $5); }/* ALTER TABLE <relation> DROP CONSTRAINT ... */		| ALTER TABLE relation_expr DROP CONSTRAINT name opt_drop_behavior			{ $$ = cat_str(5, make_str("alter table"), $3, make_str("drop constraint"), $6, $7); }/* ALTER TABLE <relation> SET WITHOUT OIDS  */		| ALTER TABLE relation_expr SET WITHOUT OIDS			{ $$ = cat_str(3, make_str("alter table"), $3, make_str("set without oids")); } /* ALTER TABLE <name> CREATE TOAST TABLE */		| ALTER TABLE qualified_name CREATE TOAST TABLE			{ $$ = cat_str(3, make_str("alter table"), $3, make_str("create toast table")); }/* ALTER TABLE <name> OWNER TO UserId */		| ALTER TABLE qualified_name OWNER TO UserId			{ $$ = cat_str(4, make_str("alter table"), $3, make_str("owner to"), $6); }/* ALTER TABLE <name> CLUSTER ON <indexname> */		| ALTER TABLE qualified_name CLUSTER ON name			{ $$ = cat_str(4, make_str("alter table"), $3, make_str("cluster on"), $6); }		;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; }		;/***************************************************************************** * *		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); }		;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			{ $$ = cat_str(10, make_str("create"), $2, make_str("table"), $4, make_str("("), $6, make_str(")"), $8, $9, $10); }		| CREATE OptTemp TABLE qualified_name OF qualified_name			'(' OptTableElementList ')' OptWithOids OnCommitOption			{ $$ = cat_str(11, make_str("create"), $2, make_str("table"), $4, make_str("of"), $6, make_str("("), $8, make_str(")"), $10, $11); }		;/* * 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			{ $$ = make_str("unique"); }		| PRIMARY KEY			{ $$ = make_str("primary key"); }		| 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		{			$$ = cat_str(3, make_str("like"), $2, $3);		}		;like_including_defaults:		INCLUDING DEFAULTS      { $$ = make_str("including defaults"); }              | EXCLUDING DEFAULTS	{ $$ = make_str("excluding defaults"); }              | /* EMPTY */		{ $$ = EMPTY; } 	      ;/* ConstraintElem specifies constraint syntax which is not embedded into *	a column definition. ColConstraintElem specifies the embedded form. * - thomas 1997-12-03 */TableConstraint:  CONSTRAINT name ConstraintElem			{ $$ = cat_str(3, make_str("constraint"), $2, $3); }		| ConstraintElem			{ $$ = $1; }		;ConstraintElem:  CHECK '(' a_expr ')'			{ $$ = cat_str(3, make_str("check("), $3, make_str(")")); }		| UNIQUE '(' columnList ')'			{ $$ = cat_str(3, make_str("unique("), $3, make_str(")")); }		| PRIMARY KEY '(' columnList ')'			{ $$ = cat_str(3, make_str("primary key("), $4, make_str(")")); }		| FOREIGN KEY '(' columnList ')' REFERENCES qualified_name opt_column_list			key_match key_actions ConstraintAttributeSpec			{ $$ = cat_str(8, make_str("foreign key("), $4, make_str(") references"), $7, $8, $9, $10, $11); }		;opt_column_list:  '(' columnList ')'	{ $$ = cat_str(3, make_str("("), $2, make_str(")")); }               | /*EMPTY*/		{ $$ = EMPTY; }	       ;columnList:  columnList ',' columnElem                               { $$ = cat_str(3, $1, make_str(","), $3); }               | columnElem                               { $$ = $1; }               ;columnElem:  ColId	{ $$ = $1; }		;key_match:	MATCH FULL			{ $$ = make_str("match full"); }		| MATCH PARTIAL		{			mmerror(PARSE_ERROR, ET_WARNING, "Currently unsupported FOREIGN KEY/MATCH PARTIAL will be passed to backend");			$$ = make_str("match partial");		}		| /*EMPTY*/			{ $$ = EMPTY; }		;key_actions:  key_delete			{ $$ = $1; }		| key_update				{ $$ = $1; }		| key_delete key_update 	{ $$ = cat2_str($1, $2); }		| key_update key_delete 	{ $$ = cat2_str($1, $2); }		| /*EMPTY*/					{ $$ = EMPTY; }		;key_delete: ON DELETE_P key_action			{ $$ = cat2_str(make_str("on delete"), $3); }		;key_update: ON UPDATE key_action			{ $$ = cat2_str(make_str("on update"), $3); }		;key_action:	NO ACTION			{ $$ = make_str("no action"); }		| RESTRICT					{ $$ = make_str("restrict"); }		| CASCADE					{ $$ = make_str("cascade"); }		| SET DEFAULT				{ $$ = make_str("set default"); }		| SET NULL_P				{ $$ = make_str("set null"); }		;OptInherit:  INHERITS '(' qualified_name_list ')'			{ $$ = cat_str(3, make_str("inherits ("), $3, make_str(")")); }		| /*EMPTY*/			{ $$ = EMPTY; }		;OptWithOids:  WITH OIDS				{ $$ = make_str("with oids"); }		| WITHOUT OIDS				{ $$ = make_str("without oids"); }		| /*EMPTY*/					{ $$ = EMPTY; }		;OnCommitOption:   ON COMMIT DROP		{ $$ = make_str("on commit drop"); }		| ON COMMIT DELETE_P ROWS	{ $$ = make_str("on commit delete rows"); }		| ON COMMIT PRESERVE ROWS	{ $$ = make_str("on commit preserve rows"); }		| /*EMPTY*/			{ $$ = EMPTY; }		;/* * Note: CREATE TABLE ... AS SELECT ... is just another spelling for * SELECT ... INTO. */CreateAsStmt:  CREATE OptTemp TABLE qualified_name OptCreateAs AS		{ FoundInto = 0; }		SelectStmt		{			if (FoundInto == 1)				mmerror(PARSE_ERROR, ET_ERROR, "CREATE TABLE / AS SELECT may not specify INTO");			$$ = cat_str(7, make_str("create"), $2, make_str("table"), $4, $5, make_str("as"), $8);		}		;OptCreateAs:  '(' CreateAsList ')'			{ $$ = cat_str(3, make_str("("), $2, make_str(")")); }		| /*EMPTY*/			{ $$ = EMPTY; }		;CreateAsList:  CreateAsList ',' CreateAsElement			{ $$ = cat_str(3, $1, make_str(","), $3); }		| CreateAsElement			{ $$ = $1; }		;CreateAsElement:  ColId { $$ = $1; }		;/***************************************************************************** * *		QUERY : *				CREATE SEQUENCE seqname *                              ALTER SEQUENCE seqname * *****************************************************************************/CreateSeqStmt:	CREATE OptTemp SEQUENCE qualified_name OptSeqList			{ $$ = cat_str(4, make_str("create"), $2, make_str("sequence"), $4, $5); }		;AlterSeqStmt: ALTER SEQUENCE qualified_name OptSeqList			{ $$ = cat_str(3,make_str("alter sequence"), $3, $4); }		;OptSeqList:  OptSeqList OptSeqElem	{ $$ = cat2_str($1, $2); }		| /*EMPTY*/					{ $$ = EMPTY; }		;OptSeqElem:  CACHE NumConst			{ $$ = cat2_str(make_str("cache"), $2); }		| CYCLE			{ $$ = make_str("cycle"); }		| NO CYCLE			{ $$ = make_str("no cycle"); }		| INCREMENT opt_by NumConst			{ $$ = cat_str(3, make_str("increment"), $2, $3); }		| MAXVALUE NumConst			{ $$ = cat2_str(make_str("maxvalue"), $2); }		| MINVALUE NumConst			{ $$ = cat2_str(make_str("minvalue"), $2); }		| NO MAXVALUE			{ $$ = make_str("no maxvalue"); }		| NO MINVALUE			{ $$ = make_str("no minvalue"); }		| START opt_with NumConst			{ $$ = cat_str(3, make_str("start"), $2, $3); }		| RESTART opt_with NumConst			{ $$ = cat_str(3, make_str("restart"), $2, $3); }		;opt_by:		BY	{ $$ = make_str("by"); }		| /*EMPTY*/	{ $$ = EMPTY; }		;/***************************************************************************** *

⌨️ 快捷键说明

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