diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2016-12-13 16:33:03 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2016-12-13 16:33:03 -0500 |
commit | 55caaaeba877eac1feb6481fb413fa04ae9046ac (patch) | |
tree | a810929fe3ec1dd3360a3d43c25ed9a53bfcc8ec /src/backend/executor/nodeSetOp.c | |
parent | 1f542a2eacca030c676cbb594f3b362d43f2f857 (diff) | |
download | postgresql-55caaaeba877eac1feb6481fb413fa04ae9046ac.tar.gz postgresql-55caaaeba877eac1feb6481fb413fa04ae9046ac.zip |
Improve handling of array elements as getdiag_targets and cursor_variables.
There's no good reason why plpgsql's GET DIAGNOSTICS statement can't
support an array element as target variable, since the execution code
already uses the generic exec_assign_value() function to assign to it.
Hence, refactor the grammar to allow that, by making getdiag_target
depend on the assign_var production.
Ideally we'd also let a cursor_variable expand to an element of a
refcursor[] array, but that's substantially harder since those statements
also have to handle bound-cursor-variable cases. For now, just make sure
the reported error is sensible, ie "cursor variable must be a simple
variable" not "variable must be of type cursor or refcursor". The latter
was quite confusing from the user's viewpoint, since what he wrote
satisfies the claimed restriction.
Per bug #14463 from Zhou Digoal. Given the lack of previous complaints,
I see no need for a back-patch.
Discussion: https://postgr.es/m/20161213152548.14897.81245@wrigleys.postgresql.org
Diffstat (limited to 'src/backend/executor/nodeSetOp.c')
0 files changed, 0 insertions, 0 deletions