Re: BUG #14463: refcursor cann't used with array or variadic parameter?

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Pavel Stehule <pavel.stehule@gmail.com>
Cc: 德哥 <digoal@126.com>, "pgsql-bugs@postgresql.org" <pgsql-bugs@postgresql.org>
Date: 2016-12-13T21:37:38Z
Lists: pgsql-bugs
I wrote:
> Pavel Stehule <pavel.stehule@gmail.com> writes:
>> It is not a bug - it is feature. PLpgSQL statements doesn't expect a
>> expression on some places.

> Well, it's not unreasonable to expect that a subscripted datum could
> be used.  It looks to me like this is a grammar omission and the
> executor code would work fine.

Well, not so much.  I was thinking in terms of unifying both
getdiag_target and cursor_variable with the assign_var production, but
actually pl_exec.c is only on board with doing that for getdiag_target.

However, we can get it to throw a more sensible error by seeing whether
the next token is '['.  I'm not that concerned about whether you can
use an array element in OPEN, but the current error message certainly
looks like a bug rather than an omitted feature.

I've pushed a patch that fixes the error message and also allows
the case for GET DIAGNOSTICS.

			regards, tom lane


Commits

  1. Improve handling of array elements as getdiag_targets and cursor_variables.