]> granicus.if.org Git - postgresql/commit
Rationalize and document pltcl's handling of magic ".tupno" array element.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 6 Nov 2016 19:43:14 +0000 (14:43 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 6 Nov 2016 19:43:14 +0000 (14:43 -0500)
commit9c0b04f18b2f9cf0a56f6dc97f506b21a6a041c3
tree76149dc477844d4cdf8f73c1050a139b3aa823f1
parent3a8f24abdf9e4889ba83bf0ee1c3fe34a31a7f0e
Rationalize and document pltcl's handling of magic ".tupno" array element.

For a very long time, pltcl's spi_exec and spi_execp commands have had
a behavior of storing the current row number as an element of output
arrays, but this was never documented.  Fix that.

For an equally long time, pltcl_trigger_handler had a behavior of silently
ignoring ".tupno" as an output column name, evidently so that the result
of spi_exec could be used directly as a trigger result tuple.  Not sure
how useful that really is, but in any case it's bad that it would break
attempts to use ".tupno" as an actual column name.  We can fix it by not
checking for ".tupno" until after we check for a column name match.  This
comports with the effective behavior of spi_exec[p] that ".tupno" is only
magic when you don't have an actual column named that.

In passing, wordsmith the description of returning modified tuples from
a pltcl trigger.

Noted while working on Jim Nasby's patch to support composite results
from pltcl.  The inability to return trigger tuples using ".tupno" as
a column name is a bug, so back-patch to all supported branches.
doc/src/sgml/pltcl.sgml
src/pl/tcl/pltcl.c