diff options
| author | Tom Lane | 2008-07-18 03:32:53 +0000 |
|---|---|---|
| committer | Tom Lane | 2008-07-18 03:32:53 +0000 |
| commit | 69a785b8bfe076847f72317a41964821e85ccfd6 (patch) | |
| tree | 8089a0c1e3b1075d81f49a82ab73b443dbe7d564 /src/pl | |
| parent | a8fb90cf2db614f3c1d4331bfaafd9a1953148e9 (diff) | |
Implement SQL-spec RETURNS TABLE syntax for functions.
(Unlike the original submission, this patch treats TABLE output parameters
as being entirely equivalent to OUT parameters -- tgl)
Pavel Stehule
Diffstat (limited to 'src/pl')
| -rw-r--r-- | src/pl/plpgsql/src/pl_comp.c | 6 | ||||
| -rw-r--r-- | src/pl/plpython/plpython.c | 9 |
2 files changed, 10 insertions, 5 deletions
diff --git a/src/pl/plpgsql/src/pl_comp.c b/src/pl/plpgsql/src/pl_comp.c index 1b2cba38815..b7b4eed9705 100644 --- a/src/pl/plpgsql/src/pl_comp.c +++ b/src/pl/plpgsql/src/pl_comp.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/pl/plpgsql/src/pl_comp.c,v 1.127 2008/07/16 01:30:23 tgl Exp $ + * $PostgreSQL: pgsql/src/pl/plpgsql/src/pl_comp.c,v 1.128 2008/07/18 03:32:53 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -441,7 +441,9 @@ do_compile(FunctionCallInfo fcinfo, argmode == PROARGMODE_INOUT || argmode == PROARGMODE_VARIADIC) in_arg_varnos[num_in_args++] = argvariable->dno; - if (argmode == PROARGMODE_OUT || argmode == PROARGMODE_INOUT) + if (argmode == PROARGMODE_OUT || + argmode == PROARGMODE_INOUT || + argmode == PROARGMODE_TABLE) out_arg_variables[num_out_args++] = argvariable; /* Add to namespace under the $n name */ diff --git a/src/pl/plpython/plpython.c b/src/pl/plpython/plpython.c index 8e85c6707e2..c4d6803fcf4 100644 --- a/src/pl/plpython/plpython.c +++ b/src/pl/plpython/plpython.c @@ -1,7 +1,7 @@ /********************************************************************** * plpython.c - python as a procedural language for PostgreSQL * - * $PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.111 2008/07/16 01:30:23 tgl Exp $ + * $PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.112 2008/07/18 03:32:53 tgl Exp $ * ********************************************************************* */ @@ -1271,7 +1271,8 @@ PLy_procedure_create(HeapTuple procTup, Oid tgreloid, char *key) /* proc->nargs was initialized to 0 above */ for (i = 0; i < total; i++) { - if (modes[i] != PROARGMODE_OUT) + if (modes[i] != PROARGMODE_OUT && + modes[i] != PROARGMODE_TABLE) (proc->nargs)++; } } @@ -1282,7 +1283,9 @@ PLy_procedure_create(HeapTuple procTup, Oid tgreloid, char *key) HeapTuple argTypeTup; Form_pg_type argTypeStruct; - if (modes && modes[i] == PROARGMODE_OUT) + if (modes && + (modes[i] == PROARGMODE_OUT || + modes[i] == PROARGMODE_TABLE)) continue; /* skip OUT arguments */ Assert(types[i] == procStruct->proargtypes.values[pos]); |
