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

📄 preproc.y

📁 postgresql8.3.4源码,开源数据库
💻 Y
📖 第 1 页 / 共 5 页
字号:
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);	}		| CLOSE ALL			{ $$ = make_str("close all"); }		;CopyStmt:  COPY opt_binary qualified_name opt_oids copy_from		copy_file_name copy_delimiter opt_with copy_opt_list			{				if (strcmp($5, "to") == 0 && strcmp($6, "stdin") == 0)					mmerror(PARSE_ERROR, ET_ERROR, "copy to stdin not possible.\n");				else if (strcmp($5, "from") == 0 && strcmp($6, "stdout") == 0)					mmerror(PARSE_ERROR, ET_ERROR, "copy from stdout not possible.\n");				else if (strcmp($5, "from") == 0 && strcmp($6, "stdin") == 0)					mmerror(PARSE_ERROR, ET_WARNING, "copy from stdin not implemented.\n");								$$ = cat_str(9, make_str("copy"), $2, $3, $4, $5, $6, $7, $8, $9);			}		| COPY select_with_parens TO copy_file_name opt_with copy_opt_list			{				if (strcmp($4, "stdin") == 0)					mmerror(PARSE_ERROR, ET_ERROR, "copy to stdin not possible.\n");								$$ = cat_str(6, make_str("copy"), $2, make_str("to"), $4, $5, $6);			}		;copy_from:	TO					{ $$ = make_str("to"); }		| FROM					{ $$ = make_str("from"); }		;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_P	{ $$ = 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 OptWith 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 ')' OptWith 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 opt_definition OptConsTableSpace			{ $$ = cat_str(3, make_str("unique"), $2, $3); }		| PRIMARY KEY opt_definition OptConsTableSpace			{ $$ = cat_str(3, make_str("primary key"), $3, $4); }		| 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 TableLikeOptionList			{$$ = cat_str(3, make_str("like"), $2, $3); }		;TableLikeOptionList: TableLikeOptionList TableLikeOption				{ $$ = cat2_str($1, $2); }		| /* EMPTY */ 	{ $$ = EMPTY; }		;TableLikeOption:		INCLUDING DEFAULTS      { $$ = make_str("including defaults"); }		| EXCLUDING DEFAULTS	{ $$ = make_str("excluding defaults"); }		| INCLUDING CONSTRAINTS { $$ = make_str("including constraints"); }		| EXCLUDING CONSTRAINTS	{ $$ = make_str("excluding constraints"); }		| INCLUDING INDEXES     { $$ = make_str("including indexes"); }		| EXCLUDING INDEXES	{ $$ = make_str("excluding indexes"); }		;/* 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 ')' opt_definition OptConsTableSpace			{ $$ = cat_str(5, make_str("unique("), $3, make_str(")"), $5, $6); }		| PRIMARY KEY '(' columnList ')' opt_definition OptConsTableSpace			{ $$ = cat_str(5, make_str("primary key("), $4, make_str(")"), $6, $7); }		| 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; }		;OptWith:	WITH definition			{ $$ = cat2_str(make_str("with"), $2); }		| 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; }		;OptTableSpace:  TABLESPACE name	{ $$ = cat2_str(make_str("tablespace"), $2); }		| /*EMPTY*/	{ $$ = EMPTY; }		;OptConsTableSpace: USING INDEX TABLESPACE name	{ $$ = cat2_str(make_str("using index tablespace"), $4); }			| /*EMPTY*/		{ $$ = EMPTY; }			;/* * Note: CREATE TABLE ... AS SELECT ... is just another spelling for * SELECT ... INTO. */CreateAsStmt:  CREATE OptTemp TABLE create_as_target AS		{ FoundInto = 0; }		SelectStmt		{			if (FoundInto == 1)				mmerror(PARSE_ERROR, ET_ERROR, "CREATE TABLE / AS SELECT cannot specify INTO");			$$ = cat_str(6, make_str("create"), $2, make_str("table"), $4, make_str("as"), $7);		}		;create_as_target:  qualified_name OptCreateAs OptWith OnCommitOption OptTableSpace		{			$$ = cat_str(5, $1, $2, $3, $4, $5);		}		;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(5, 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); }	

⌨️ 快捷键说明

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