mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-28 11:55:03 +03:00 
			
		
		
		
	Get rid of redundant production in plpgsql grammar.
There may once have been a reason for the intermediate proc_stmts production in the plpgsql grammar, but it isn't doing anything useful anymore, so let's collapse it into proc_sect. Saves some code and probably a small number of nanoseconds per statement list. In passing, correctly alphabetize keyword lists to match pl_scanner.c; note that for "rowtype" vs "row_count", pl_scanner.c must sort on the basis of the lower-case spelling. Noted while fooling with a patch to de-reserve more plpgsql keywords.
This commit is contained in:
		| @@ -188,7 +188,7 @@ static	void			check_raise_parameters(PLpgSQL_stmt_raise *stmt); | ||||
|  | ||||
| %type <str>		any_identifier opt_block_label opt_label option_value | ||||
|  | ||||
| %type <list>	proc_sect proc_stmts stmt_elsifs stmt_else | ||||
| %type <list>	proc_sect stmt_elsifs stmt_else | ||||
| %type <loop_body>	loop_body | ||||
| %type <stmt>	proc_stmt pl_block | ||||
| %type <stmt>	stmt_assign stmt_if stmt_loop stmt_while stmt_exit | ||||
| @@ -318,8 +318,8 @@ static	void			check_raise_parameters(PLpgSQL_stmt_raise *stmt); | ||||
| %token <keyword>	K_RETURN | ||||
| %token <keyword>	K_RETURNED_SQLSTATE | ||||
| %token <keyword>	K_REVERSE | ||||
| %token <keyword>	K_ROWTYPE | ||||
| %token <keyword>	K_ROW_COUNT | ||||
| %token <keyword>	K_ROWTYPE | ||||
| %token <keyword>	K_SCHEMA | ||||
| %token <keyword>	K_SCHEMA_NAME | ||||
| %token <keyword>	K_SCROLL | ||||
| @@ -838,24 +838,14 @@ assign_operator	: '=' | ||||
|  | ||||
| proc_sect		: | ||||
| 					{ $$ = NIL; } | ||||
| 				| proc_stmts | ||||
| 					{ $$ = $1; } | ||||
| 				; | ||||
|  | ||||
| proc_stmts		: proc_stmts proc_stmt | ||||
| 				| proc_sect proc_stmt | ||||
| 					{ | ||||
| 						/* don't bother linking null statements into list */ | ||||
| 						if ($2 == NULL) | ||||
| 							$$ = $1; | ||||
| 						else | ||||
| 							$$ = lappend($1, $2); | ||||
| 					} | ||||
| 				| proc_stmt | ||||
| 						{ | ||||
| 							if ($1 == NULL) | ||||
| 								$$ = NIL; | ||||
| 							else | ||||
| 								$$ = list_make1($1); | ||||
| 						} | ||||
| 				; | ||||
|  | ||||
| proc_stmt		: pl_block ';' | ||||
| @@ -2356,8 +2346,8 @@ unreserved_keyword	: | ||||
| 				| K_PG_EXCEPTION_CONTEXT | ||||
| 				| K_PG_EXCEPTION_DETAIL | ||||
| 				| K_PG_EXCEPTION_HINT | ||||
| 				| K_PRIOR | ||||
| 				| K_PRINT_STRICT_PARAMS | ||||
| 				| K_PRIOR | ||||
| 				| K_QUERY | ||||
| 				| K_RELATIVE | ||||
| 				| K_RESULT_OID | ||||
|   | ||||
		Reference in New Issue
	
	Block a user