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

📄 preproc.y

📁 关系型数据库 Postgresql 6.5.2
💻 Y
📖 第 1 页 / 共 5 页
字号:
		;def_type:  OPERATOR		{ $$ = make1_str("operator"); }		| TYPE_P	{ $$ = make1_str("type"); }		| AGGREGATE	{ $$ = make1_str("aggregate"); }		;def_name:  PROCEDURE		{ $$ = make1_str("procedure"); }		| JOIN		{ $$ = make1_str("join"); }		| ColId		{ $$ = $1; }		| MathOp	{ $$ = $1; }		| Op		{ $$ = $1; }		;definition:  '(' def_list ')'				{ $$ = make3_str(make1_str("("), $2, make1_str(")")); }		;def_list:  def_elem					{ $$ = $1; }		| def_list ',' def_elem			{ $$ = cat3_str($1, make1_str(","), $3); }		;def_elem:  def_name '=' def_arg	{					$$ = cat3_str($1, make1_str("="), $3);				}		| def_name				{					$$ = $1;				}		| DEFAULT '=' def_arg				{					$$ = cat2_str(make1_str("default ="), $3);				}		;def_arg:  ColId			{  $$ = $1; }		| all_Op	{  $$ = $1; }		| NumericOnly	{  $$ = $1; }		| Sconst	{  $$ = $1; }		| SETOF ColId				{					$$ = cat2_str(make1_str("setof"), $2);				}		;/***************************************************************************** * *		QUERY: *				destroy <relname1> [, <relname2> .. <relnameN> ] * *****************************************************************************/DestroyStmt:  DROP TABLE relation_name_list				{					$$ = cat2_str(make1_str("drop table"), $3);				}		| DROP SEQUENCE relation_name_list				{					$$ = cat2_str(make1_str("drop sequence"), $3);				}		;/***************************************************************************** * *		QUERY: *                     fetch/move [forward | backward] [ # | all ] [ in <portalname> ] *                     fetch [ forward | backward | absolute | relative ] *                           [ # | all | next | prior ] [ [ in | from ] <portalname> ] * *****************************************************************************/FetchStmt:	FETCH opt_direction fetch_how_many opt_portal_name INTO into_list				{					if (strncmp($2, "relative", strlen("relative")) == 0 && atol($3) == 0L)						yyerror("FETCH/RELATIVE at current position is not supported");					$$ = cat4_str(make1_str("fetch"), $2, $3, $4);				}		|	MOVE opt_direction fetch_how_many opt_portal_name				{					$$ = cat4_str(make1_str("fetch"), $2, $3, $4);				}		;opt_direction:	FORWARD		{ $$ = make1_str("forward"); }		| BACKWARD	{ $$ = make1_str("backward"); }		| RELATIVE      { $$ = make1_str("relative"); }                | ABSOLUTE 				{					fprintf(stderr, "FETCH/ABSOLUTE not supported, using RELATIVE");					$$ = make1_str("absolute");				}		| /*EMPTY*/	{ $$ = make1_str(""); /* default */ }		;fetch_how_many:   Iconst        { $$ = $1; }		| '-' Iconst    { $$ = make2_str(make1_str("-"), $2); }		| ALL		{ $$ = make1_str("all"); }		| NEXT		{ $$ = make1_str("next"); }		| PRIOR		{ $$ = make1_str("prior"); }		| /*EMPTY*/	{ $$ = make1_str(""); /*default*/ }		;opt_portal_name:  IN name		{ $$ = cat2_str(make1_str("in"), $2); }		| FROM name		{ $$ = cat2_str(make1_str("from"), $2); }/*		| name			{ $$ = cat2_str(make1_str("in"), $1); */		| /*EMPTY*/		{ $$ = make1_str(""); }		;/***************************************************************************** * *		QUERY: *				GRANT [privileges] ON [relation_name_list] TO [GROUP] grantee * *****************************************************************************/GrantStmt:  GRANT privileges ON relation_name_list TO grantee opt_with_grant				{					$$ = cat2_str(cat5_str(make1_str("grant"), $2, make1_str("on"), $4, make1_str("to")), $6);				}		;privileges:  ALL PRIVILEGES				{				 $$ = make1_str("all privileges");				}		| ALL				{				 $$ = make1_str("all");				}		| operation_commalist				{				 $$ = $1;				}		;operation_commalist:  operation				{						$$ = $1;				}		| operation_commalist ',' operation				{						$$ = cat3_str($1, make1_str(","), $3);				}		;operation:  SELECT				{						$$ = make1_str("select");				}		| INSERT				{						$$ = make1_str("insert");				}		| UPDATE				{						$$ = make1_str("update");				}		| DELETE				{						$$ = make1_str("delete");				}		| RULE				{						$$ = make1_str("rule");				}		;grantee:  PUBLIC				{						$$ = make1_str("public");				}		| GROUP ColId				{						$$ = cat2_str(make1_str("group"), $2);				}		| ColId				{						$$ = $1;				}		;opt_with_grant:  WITH GRANT OPTION				{					yyerror("WITH GRANT OPTION is not supported.  Only relation owners can set privileges");				 }		| /*EMPTY*/ 		;/***************************************************************************** * *		QUERY: *				REVOKE [privileges] ON [relation_name] FROM [user] * *****************************************************************************/RevokeStmt:  REVOKE privileges ON relation_name_list FROM grantee				{					$$ = cat2_str(cat5_str(make1_str("revoke"), $2, make1_str("on"), $4, make1_str("from")), $6);				}		;/***************************************************************************** * *		QUERY: *				create index <indexname> on <relname> *				  using <access> "(" (<col> with <op>)+ ")" [with *				  <target_list>] * *	[where <qual>] is not supported anymore *****************************************************************************/IndexStmt:	CREATE index_opt_unique INDEX index_name ON relation_name			access_method_clause '(' index_params ')' opt_with				{					/* should check that access_method is valid,					   etc ... but doesn't */					$$ = cat5_str(cat5_str(make1_str("create"), $2, make1_str("index"), $4, make1_str("on")), $6, $7, make3_str(make1_str("("), $9, make1_str(")")), $11);				}		;index_opt_unique:  UNIQUE	{ $$ = make1_str("unique"); }		| /*EMPTY*/	{ $$ = make1_str(""); }		;access_method_clause:  USING access_method	{ $$ = cat2_str(make1_str("using"), $2); }		| /*EMPTY*/			{ $$ = make1_str(""); }		;index_params:  index_list			{ $$ = $1; }		| func_index			{ $$ = $1; }		;index_list:  index_list ',' index_elem		{ $$ = cat3_str($1, make1_str(","), $3); }		| index_elem			{ $$ = $1; }		;func_index:  func_name '(' name_list ')' opt_type opt_class				{					$$ = cat4_str($1, make3_str(make1_str("("), $3, ")"), $5, $6);				}		  ;index_elem:  attr_name opt_type opt_class				{					$$ = cat3_str($1, $2, $3);				}		;opt_type:  ':' Typename		{ $$ = cat2_str(make1_str(":"), $2); }		| FOR Typename	{ $$ = cat2_str(make1_str("for"), $2); }		| /*EMPTY*/	{ $$ = make1_str(""); }		;/* opt_class "WITH class" conflicts with preceeding opt_type *  for Typename of "TIMESTAMP WITH TIME ZONE" * So, remove "WITH class" from the syntax. OK?? * - thomas 1997-10-12 *		| WITH class							{ $$ = $2; } */opt_class:  class				{ $$ = $1; }		| USING class			{ $$ = cat2_str(make1_str("using"), $2); }		| /*EMPTY*/			{ $$ = make1_str(""); }		;/***************************************************************************** * *		QUERY: *				extend index <indexname> [where <qual>] * *****************************************************************************/ExtendStmt:  EXTEND INDEX index_name where_clause				{					$$ = cat3_str(make1_str("extend index"), $3, $4);				}		;/***************************************************************************** * *		QUERY: *				execute recipe <recipeName> * *****************************************************************************//* NOT USEDRecipeStmt:  EXECUTE RECIPE recipe_name				{					$$ = cat2_str(make1_str("execute recipe"), $3);				}		;*//***************************************************************************** * *		QUERY: *				define function <fname> *					   (language = <lang>, returntype = <typename> *						[, arch_pct = <percentage | pre-defined>] *						[, disk_pct = <percentage | pre-defined>] *						[, byte_pct = <percentage | pre-defined>] *						[, perbyte_cpu = <int | pre-defined>] *						[, percall_cpu = <int | pre-defined>] *						[, iscachable]) *						[arg is (<type-1> { , <type-n>})] *						as <filename or code in language as appropriate> * *****************************************************************************/ProcedureStmt:	CREATE FUNCTION func_name func_args			 RETURNS func_return opt_with AS Sconst LANGUAGE Sconst				{					$$ = cat2_str(cat5_str(cat5_str(make1_str("create function"), $3, $4, make1_str("returns"), $6), $7, make1_str("as"), $9, make1_str("language")), $11);				}opt_with:  WITH definition			{ $$ = cat2_str(make1_str("with"), $2); }		| /*EMPTY*/			{ $$ = make1_str(""); }		;func_args:  '(' func_args_list ')'		{ $$ = make3_str(make1_str("("), $2, make1_str(")")); }		| '(' ')'			{ $$ = make1_str("()"); }		;func_args_list:  TypeId				{ $$ = $1; }		| func_args_list ',' TypeId				{	$$ = cat3_str($1, make1_str(","), $3); }		;func_return:  set_opt TypeId				{					$$ = cat2_str($1, $2);				}		;set_opt:  SETOF					{ $$ = make1_str("setof"); }		| /*EMPTY*/			{ $$ = make1_str(""); }		;/***************************************************************************** * *		QUERY: * *		remove function <funcname> *				(REMOVE FUNCTION "funcname" (arg1, arg2, ...)) *		remove aggregate <aggname> *				(REMOVE AGGREGATE "aggname" "aggtype") *		remove operator <opname> *				(REMOVE OPERATOR "opname" (leftoperand_typ rightoperand_typ)) *		remove type <typename> *				(REMOVE TYPE "typename") *		remove rule <rulename> *				(REMOVE RULE "rulename") * *****************************************************************************/RemoveStmt:  DROP remove_type name				{					$$ = cat3_str(make1_str("drop"), $2, $3);				}		;remove_type:  TYPE_P		{  $$ = make1_str("type"); }		| INDEX		{  $$ = make1_str("index"); }		| RULE		{  $$ = make1_str("rule"); }		| VIEW		{  $$ = make1_str("view"); }		;RemoveAggrStmt:  DROP AGGREGATE name aggr_argtype				{						$$ = cat3_str(make1_str("drop aggregate"), $3, $4);				}		;aggr_argtype:  name			{ $$ = $1; }		| '*'			{ $$ = make1_str("*"); }		;RemoveFuncStmt:  DROP FUNCTION func_name func_args				{						$$ = cat3_str(make1_str("drop function"), $3, $4);				}		;RemoveOperStmt:  DROP OPERATOR all_Op '(' oper_argtypes ')'				{					$$ = cat3_str(make1_str("drop operator"), $3, make3_str(make1_str("("), $5, make1_str(")")));				}		;all_Op:  Op | MathOp;MathOp:	'+'				{ $$ = make1_str("+"); }		| '-'			{ $$ = make1_str("-"); }		| '*'			{ $$ = make1_str("*"); }		| '%'			{ $$ = make1_str("%"); }		| '/'			{ $$ = make1_str("/"); }		| '<'			{ $$ = make1_str("<"); }		| '>'			{ $$ = make1_str(">"); }		| '='			{ $$ = make1_str("="); }		;oper_argtypes:	name				{				   yyerror("parser: argument type missing (use NONE for unary operators)");				}		| name ',' name				{ $$ = cat3_str($1, make1_str(","), $3); }		| NONE ',' name			/* left unary */				{ $$ = cat2_str(make1_str("none,"), $3); }		| name ',' NONE			/* right unary */				{ $$ = cat2_str($1, make1_str(", none")); }		;/***************************************************************************** * *		QUERY: *				rename <attrname1> in <relname> [*] to <attrname2> *				rename <relname1> to <relname2> * *****************************************************************************/RenameStmt:  ALTER TABLE relation_name opt_inh_star				  RENAME opt_column opt_name TO name				{					$$ = cat4_str(cat5_str(make1_str("alter table"), $3, $4, make1_str("rename"), $6), $7, make1_str("to"), $9);				}		;opt_name:  name							{ $$ = $1; }		| /*EMPTY*/					{ $$ = make1_str(""); }		;opt_column:  COLUMN					{ $$ = make1_str("colmunn"); }		| /*EMPTY*/				{ $$ = make1_str(""); }		;/***************************************************************************** * *		QUERY:	Define Rewrite Rule , Define Tuple Rule *				Define Rule <old rules > * *		only rewrite rule is supported -- ay 9/94 * *****************************************************************************/RuleStmt:  CREATE RULE name AS		   { QueryIsRule=1; }		   ON event TO event_object where_clause		   DO opt_instead RuleActionList				{					$$ = cat2_str(cat5_str(cat5_str(make1_str("create rule"), $3, make1_str("as on"), $7, make1_str("to")), $9, $10, make1_str("do"), $12), $13);				}		;RuleActionList:  NOTHING                               { $$ = make1_str("nothing"); }               | SelectStmt                            { $$ = $1; }               | RuleActionStmt                  

⌨️ 快捷键说明

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