mirror of
https://github.com/postgres/postgres.git
synced 2025-11-21 00:42:43 +03:00
Support "variadic" functions, which can accept a variable number of arguments
so long as all the trailing arguments are of the same (non-array) type. The function receives them as a single array argument (which is why they have to all be the same type). It might be useful to extend this facility to aggregates, but this patch doesn't do that. This patch imposes a noticeable slowdown on function lookup --- a follow-on patch will fix that by adding a redundant column to pg_proc. Pavel Stehule
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.368 2008/06/26 08:04:05 meskes Exp $ */
|
||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.369 2008/07/16 01:30:23 tgl Exp $ */
|
||||
|
||||
/* Copyright comment */
|
||||
%{
|
||||
@@ -489,7 +489,7 @@ add_typedef(char *name, char * dimension, char * length, enum ECPGttype type_enu
|
||||
UNCOMMITTED UNENCRYPTED UNION UNIQUE UNKNOWN UNLISTEN UNTIL
|
||||
UPDATE USER USING
|
||||
|
||||
VACUUM VALID VALIDATOR VALUE_P VALUES VARCHAR VARYING
|
||||
VACUUM VALID VALIDATOR VALUE_P VALUES VARCHAR VARIADIC VARYING
|
||||
VERBOSE VERSION_P VIEW VOLATILE
|
||||
WHEN WHERE WHITESPACE_P WITH WITHOUT WORK WRITE
|
||||
|
||||
@@ -2629,6 +2629,7 @@ arg_class: IN_P { $$ = make_str("in"); }
|
||||
| OUT_P { $$ = make_str("out"); }
|
||||
| INOUT { $$ = make_str("inout"); }
|
||||
| IN_P OUT_P { $$ = make_str("in out"); }
|
||||
| VARIADIC { $$ = make_str("variadic"); }
|
||||
;
|
||||
|
||||
func_as: StringConst
|
||||
@@ -6857,6 +6858,7 @@ reserved_keyword:
|
||||
| UNIQUE { $$ = make_str("unique"); }
|
||||
| USER { $$ = make_str("user"); }
|
||||
| USING { $$ = make_str("using"); }
|
||||
| VARIADIC { $$ = make_str("variadic"); }
|
||||
| WHEN { $$ = make_str("when"); }
|
||||
| WHERE { $$ = make_str("where"); }
|
||||
;
|
||||
|
||||
Reference in New Issue
Block a user