Improve pl/pgsql to support composite-type expressions in RETURN.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 7 Dec 2012 04:09:52 +0000 (23:09 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 7 Dec 2012 04:09:52 +0000 (23:09 -0500)
commit31a891857a128828d47d93c63e041f3b69cbab70
tree742dc2b998ee50b7e97a45704c374fcb940485a3
parentda07a1e856511dca59cbb1357616e26baa64428e
Improve pl/pgsql to support composite-type expressions in RETURN.

For some reason lost in the mists of prehistory, RETURN was only coded to
allow a simple reference to a composite variable when the function's return
type is composite.  Allow an expression instead, while preserving the
efficiency of the original code path in the case where the expression is
indeed just a composite variable's name.  Likewise for RETURN NEXT.

As is true in various other places, the supplied expression must yield
exactly the number and data types of the required columns.  There was some
discussion of relaxing that for pl/pgsql, but no consensus yet, so this
patch doesn't address that.

Asif Rehman, reviewed by Pavel Stehule
doc/src/sgml/plpgsql.sgml
src/pl/plpgsql/src/pl_exec.c
src/pl/plpgsql/src/pl_gram.y
src/pl/plpgsql/src/pl_scanner.c
src/pl/plpgsql/src/plpgsql.h
src/test/regress/expected/plpgsql.out
src/test/regress/sql/plpgsql.sql