On Fri, Jan 12, 2018 at 11:11:26AM -0500, Corey Huinker wrote: > > > > PostgreSQL allows function overloading, which means that there can > > be multiple functions with same name differing in argument types. > > So, the syntax has to include the input parameters or their types > > at least. > > "local_routine_name" and "remote_routine_spec" were my own > paraphrasings of what the spec implies. I'm nearly certain that the > local routine name, which the spec says is just an identifier, > cannot have a parameter spec on it, which leaves only one other > place to define it, remote_routine_spec, which wasn't defined at > all. I _suppose_ parameter definitions could be pushed into options, > but that'd be ugly.
In my draft of SQL:2011, which I don't think has substantive changes to what's either in the official SQL:2011 or SQL:2016, it says: <routine mapping definition> ::= CREATE ROUTINE MAPPING <routine mapping name> FOR <specific routine designator> SERVER <foreign server name> [ <generic options> ] Syntax Rules 1) Let FSN be the <foreign server name>. Let RMN be the <routine mapping name>. 2) The catalog identified by the explicit or implicit catalog name of FSN shall include a foreign server descriptor whose foreign server name is equivalent to FSN. 3) The SQL-environment shall not include a routine mapping descriptor whose routine mapping name is RMN. 4) Let R be the SQL-invoked routine identified by the <specific routine designator>. R shall identify an SQL-invoked regular function. It goes on from there, but I think there's a reasonable interpretation of this which allows us to use the same syntax as CREATE (FUNCTION|PROCEDURE), apart from the body, e.g.: CREATE ROUTINE MAPPING local_routine_name FOR (FUNCTION | PROCEDURE) remote_routine_name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] ) [ RETURNS rettype | RETURNS TABLE ( column_name column_type [, ...] ) ] SERVER foreign_server_name [ (option [, ...]) ] Does that seem like too broad an interpretation? Best, David. -- David Fetter <david(at)fetter(dot)org> http://fetter.org/ Phone: +1 415 235 3778 Remember to vote! Consider donating to Postgres: http://www.postgresql.org/about/donate