Re: BUG #15477: Procedure call with named inout refcursor parameter - "invalid input syntax for type boolean" error

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: stepaunov(at)gmail(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #15477: Procedure call with named inout refcursor parameter - "invalid input syntax for type boolean" error
Date: 2018-11-01 07:27:24
Message-ID: CAFj8pRBVocYmdCZsA0FRW5z0rHjNos2EmZVHLN54UAk_qxiyOA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

čt 1. 11. 2018 v 7:42 odesílatel PG Bug reporting form <
noreply(at)postgresql(dot)org> napsal:

> The following bug has been logged on the website:
>
> Bug reference: 15477
> Logged by: Alexey Stepanov
> Email address: stepaunov(at)gmail(dot)com
> PostgreSQL version: 11.0
> Operating system: RedOS (based on Red Hat Linux) (red-soft.ru)
> Description:
>
> Calling procedure with named inout refcursor parameter leads to "invalid
> input syntax for type boolean" error.
>
> Repro:
> /*
> select version()
> PostgreSQL 11.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5
> 20150623
> (Red Hat 4.8.5-28), 64-bit
> */
>
> drop table if exists t1;
> drop procedure if exists p1(integer, refcursor);
>
> create table t1 (key serial, name text);
>
> create or replace procedure p1(v_cnt int, v_ResultSet inout refcursor =
> null)
> as $$
> begin
> insert into t1 (name) values('name_test');
> open v_ResultSet for select * from t1;
> end;
> $$
> language plpgsql security definer
> ;
>
>
> -- trying to call with named v_ResultSet parameter
> do $$
> declare
> v_ResultSet refcursor;
> v_cnt integer;
> begin
> call p1(v_cnt:=v_cnt, v_ResultSet := v_ResultSet);
> raise notice '%', v_ResultSet;
> end;$$
> ;
>
> result (in pgAdmin3):
> ERROR: invalid input syntax for type boolean: "<unnamed portal 7>"
> CONTEXT: PL/pgSQL function inline_code_block line 6 at CALL
> ********** Error **********
>
> ERROR: invalid input syntax for type boolean: "<unnamed portal 7>"
> SQL state: 22P02
> Context: PL/pgSQL function inline_code_block line 6 at CALL
>
>
> -- trying to call with ordinal parameters - success!
> do $$
> declare
> v_ResultSet refcursor;
> v_cnt integer;
> begin
> call p1(v_cnt, v_ResultSet);
> raise notice '%', v_ResultSet;
> end;$$
> ;
>
> result - ok
>

It is strange bug. When you use syntax =>, ":=" is obsolete (but still
supported), then all is working

postgres=# do $$
declare
v_ResultSet refcursor;
v_cnt integer;
begin
call p1(v_cnt=>v_cnt, v_ResultSet => v_ResultSet);
raise notice '%', v_ResultSet;
end;$$
;
NOTICE: <unnamed portal 4>
DO

looks so somewhere only new syntax is recognized and supported.

Regards

Pavel

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Pavel Stehule 2018-11-01 08:04:23 Re: BUG #15477: Procedure call with named inout refcursor parameter - "invalid input syntax for type boolean" error
Previous Message Heikki Linnakangas 2018-11-01 07:13:02 Re: BUG #15474: Special character escape sequences need better documentation, or more easily found documentation