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

📄 preproc.y

📁 PostgreSQL7.4.6 for Linux
💻 Y
📖 第 1 页 / 共 5 页
字号:
			lookup_descriptor($1, connection);			output_get_descr_header($1);			free($1);		}		| ECPGOpen		{			struct cursor *ptr;			if ((ptr = add_additional_variables($1, true)) != NULL)				output_statement(mm_strdup(ptr->command), 0, ptr->connection ? mm_strdup(ptr->connection) : NULL);		}		| ECPGPrepare		{			if (connection)				mmerror(PARSE_ERROR, ET_ERROR, "no at option for prepare statement.\n");			fprintf(yyout, "{ ECPGprepare(__LINE__, %s);", $1);			whenever_action(2);			free($1);		}		| ECPGRelease		{ /* output already done */ }		| ECPGSetAutocommit		{			fprintf(yyout, "{ ECPGsetcommit(__LINE__, \"%s\", %s);", $1, connection ? connection : "NULL");			whenever_action(2);			free($1);		}		| ECPGSetConnection		{			if (connection)				mmerror(PARSE_ERROR, ET_ERROR, "no at option for set connection statement.\n");			fprintf(yyout, "{ ECPGsetconn(__LINE__, %s);", $1);			whenever_action(2);			free($1);		}		| ECPGTypedef		{			if (connection)				mmerror(PARSE_ERROR, ET_ERROR, "no at option for typedef statement.\n");			fprintf(yyout, "%s", $1);			free($1);			output_line_number();		}		| ECPGVar		{			if (connection)				mmerror(PARSE_ERROR, ET_ERROR, "no at option for var statement.\n");			output_simple_statement($1);		}		| ECPGWhenever		{			if (connection)				mmerror(PARSE_ERROR, ET_ERROR, "no at option for whenever statement.\n");			output_simple_statement($1);		}		;/* * We start with a lot of stuff that's very similar to the backend's parsing *//***************************************************************************** * * Create a new Postgres DBMS user * * *****************************************************************************/CreateUserStmt: CREATE USER UserId opt_with OptUserList			{ $$ = cat_str(4, make_str("create user"), $3, make_str("with"), $5); }		;opt_with:  WITH 		{ $$ = make_str("with"); }		| /*EMPTY*/	{ $$ = EMPTY; }		;/***************************************************************************** * * Alter a postgresql DBMS user * * *****************************************************************************/AlterUserStmt: ALTER USER UserId OptUserList			{ $$ = cat_str(3, make_str("alter user"), $3, $4); }		| ALTER USER UserId WITH OptUserList			{ $$ = cat_str(4, make_str("alter user"), $3, make_str("with"), $5); }		;AlterUserSetStmt: ALTER USER UserId SET set_rest			{ $$ = cat_str(4, make_str("alter user"), $3, make_str("set"), $5); }		| ALTER USER UserId VariableResetStmt			{ $$ = cat_str(3, make_str("alter user"), $3, $4); }		;/***************************************************************************** * * Drop a postgresql DBMS user * * *****************************************************************************/DropUserStmt:  DROP USER user_list			{ $$ = cat2_str(make_str("drop user"), $3);}		;/* * Options for CREATE USER and ALTER USER */OptUserList: OptUserList OptUserElem	{ $$ = cat2_str($1, $2); }		| /* EMPTY */					{ $$ = EMPTY; }		;OptUserElem:  PASSWORD Sconst		{ $$ = cat2_str(make_str("password"), $2); }		| SYSID PosIntConst			{ $$ = cat2_str(make_str("sysid"), $2); }		| CREATEDB			{ $$ = make_str("createdb"); }		| NOCREATEDB			{ $$ = make_str("nocreatedb"); }		| CREATEUSER			{ $$ = make_str("createuser"); }		| NOCREATEUSER			{ $$ = make_str("nocreateuser"); }		| IN_P GROUP_P user_list			{ $$ = cat2_str(make_str("in group"), $3); }		| VALID UNTIL Sconst			{ $$ = cat2_str(make_str("valid until"), $3); }		;user_list:	user_list ',' UserId			{ $$ = cat_str(3, $1, make_str(","), $3); }		| UserId			{ $$ = $1; }		;/***************************************************************************** * * Create a postgresql group * * ****************************************************************************/CreateGroupStmt:  CREATE GROUP_P UserId OptGroupList			{ $$ = cat_str(3, make_str("create group"), $3, $4); }		| CREATE GROUP_P UserId WITH OptGroupList			{ $$ = cat_str(4, make_str("create group"), $3, make_str("with"), $5); }		;/* * Options for CREATE GROUP */OptGroupList: OptGroupList OptGroupElem		{ $$ = cat2_str($1, $2); }		| /* EMPTY */						{ $$ = EMPTY; }		;OptGroupElem:  USER user_list			{ $$ = cat2_str(make_str("user"), $2); }		| SYSID PosIntConst			{ $$ = cat2_str(make_str("sysid"), $2); }		;/***************************************************************************** * * Alter a postgresql group * * *****************************************************************************/AlterGroupStmt: ALTER GROUP_P UserId ADD USER user_list			{ $$ = cat_str(4, make_str("alter group"), $3, make_str("add user"), $6); }		| ALTER GROUP_P UserId DROP USER user_list			{ $$ = cat_str(4, make_str("alter group"), $3, make_str("drop user"), $6); }		;/***************************************************************************** * * Drop a postgresql group * * *****************************************************************************/DropGroupStmt: DROP GROUP_P UserId			{ $$ = cat2_str(make_str("drop group"), $3); }		;/***************************************************************************** * * Manipulate a schema * * *****************************************************************************/CreateSchemaStmt:  CREATE SCHEMA UserId OptSchemaName AUTHORIZATION UserId OptSchemaEltList			{ $$ = cat_str(6, make_str("create schema"), $3, $4, make_str("authorization"), $6, $7); }		| CREATE SCHEMA ColId OptSchemaEltList			{ $$ = cat_str(3, make_str("create schema"), $3, $4); }		;OptSchemaName: ColId		{ $$ = $1; }               | /* EMPTY */   { $$ = EMPTY; }	       ;OptSchemaEltList: OptSchemaEltList schema_stmt         { $$ = cat2_str($1, $2); }		| /* EMPTY */   { $$ = EMPTY; }		;/* *     schema_stmt are the ones that can show up inside a CREATE SCHEMA *     statement (in addition to by themselves). */schema_stmt: CreateStmt		{ $$ = $1; }               | GrantStmt	{ $$ = $1; }               | ViewStmt	{ $$ = $1; }               ;/***************************************************************************** * * Set PG internal variable *	  SET name TO 'var_value' * Include SQL92 syntax (thomas 1997-10-22): *	  SET TIME ZONE 'var_value' * *****************************************************************************/VariableSetStmt:  SET set_rest			{ $$ = cat2_str(make_str("set"), $2 ); }		| SET LOCAL set_rest			{ $$ = cat2_str(make_str("set local"), $3 ); }		| SET SESSION set_rest			{ $$ = cat2_str(make_str("set session"), $3 ); }		;set_rest:	ColId TO var_list_or_default			{ $$ = cat_str(3, $1, make_str("to"), $3); }		| ColId "=" var_list_or_default                        { $$ = cat_str(3, $1, make_str("="), $3); }		| TIME ZONE zone_value			{ $$ = cat2_str(make_str("time zone"), $3); }		| TRANSACTION transaction_mode_list			{ $$ = cat2_str(make_str("transaction"), $2); }		| SESSION CHARACTERISTICS AS TRANSACTION transaction_mode_list			{ $$ = cat2_str(make_str("session characteristics as transaction"), $5); }		| NAMES opt_encoding			{ $$ = cat2_str(make_str("names"), $2); }		| SESSION AUTHORIZATION ColId_or_Sconst			{ $$ = cat2_str(make_str("session authorization"), $3); }		| SESSION AUTHORIZATION DEFAULT			{ $$ = make_str("session authorization default"); }		;var_list_or_default:  var_list			{ $$ = $1; }		| DEFAULT			{ $$ = make_str("default"); }		;var_list:  var_value			{ $$ = $1; }		| var_list ',' var_value			{ $$ = cat_str(3, $1, make_str(","), $3); }		;iso_level:	READ COMMITTED	{ $$ = make_str("read committed"); }		| SERIALIZABLE		{ $$ = make_str("serializable"); }		;var_value:	opt_boolean		{ $$ = $1; }		| AllConst		{ $$ = $1; }		| ColId			{ $$ = $1; }		;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 ColId			{ $$ = 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 ColId			{ $$ = 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 variations * *****************************************************************************/AlterTableStmt:/* ALTER TABLE <relation> ADD [COLUMN] <coldef> */		ALTER TABLE relation_expr ADD opt_column columnDef			{ $$ = cat_str(5, make_str("alter table"), $3, make_str("add"), $5, $6); }/* ALTER TABLE <relation> ALTER [COLUMN] <colname> {SET DEFAULT <expr>|DROP DEFAULT} */		| ALTER TABLE relation_expr ALTER opt_column ColId alter_column_default			{ $$ = cat_str(6, make_str("alter table"), $3, make_str("alter"), $5, $6, $7); }/* ALTER TABLE <relation> ALTER [COLUMN] <colname> DROP NOT NULL */		| ALTER TABLE relation_expr ALTER opt_column ColId DROP NOT NULL_P			{ $$ = cat_str(6, make_str("alter table"), $3, make_str("alter"), $5, $6, make_str("drop not null")); }/* ALTER TABLE <relation> ALTER [COLUMN] <colname> SET NOT NULL */		| ALTER TABLE relation_expr ALTER opt_column ColId SET NOT NULL_P			{ $$ = cat_str(6, make_str("alter table"), $3, make_str("alter"), $5, $6, make_str("set not null")); }/* ALTER TABLE <relation> ALTER [COLUMN] <colname> SET STATISTICS <IntegerOnly> */		| ALTER TABLE relation_expr ALTER opt_column ColId SET STATISTICS PosIntConst			{ $$ = cat_str(7, make_str("alter table"), $3, make_str("alter"), $5, $6, make_str("set statistics"), $9); }/* ALTER TABLE <relation> ALTER [COLUMN] <colname> SET STORAGE <storagemode> */		| ALTER TABLE relation_expr ALTER opt_column ColId SET STORAGE ColId			{ $$ = cat_str(7, make_str("alter table"), $3, make_str("alter"), $5, $6, make_str("set storage"), $9); }/* ALTER TABLE <relation> DROP [COLUMN] <colname> {RESTRICT|CASCADE} */		| ALTER TABLE relation_expr DROP opt_column ColId opt_drop_behavior			{ $$ = cat_str(6, make_str("alter table"), $3, make_str("drop"), $5, $6, $7); }/* ALTER TABLE <relation> ADD CONSTRAINT ... */

⌨️ 快捷键说明

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