BUG #16547: ECPG can't CALL the procedure which has INOUT parameter - Mailing list pgsql-bugs

From PG Bug reporting form
Subject BUG #16547: ECPG can't CALL the procedure which has INOUT parameter
Date
Msg-id 16547-0d8cd56ecb46f943@postgresql.org
Whole thread Raw
Responses Re: BUG #16547: ECPG can't CALL the procedure which has INOUT parameter
List pgsql-bugs
The following bug has been logged on the website:

Bug reference:      16547
Logged by:          yusuke egashira
Email address:      egashira.yusuke@jp.fujitsu.com
PostgreSQL version: 11.8
Operating system:   Red Hat Enterprise Linux Server release 6.10
Description:

I created the procedure with INOUT parameter as :
  CREATE OR REPLACE PROCEDURE inout_proc(a in int, b inout int) 
  LANGUAGE plpgsql AS $$
  BEGIN
      b = a + b;
      RETURN;
  END;
  $$;

If I called it in ECPG by "EXEC SQL CALL inout_proc(1,2);", "SQL error: too
few arguments on line xx" is caused.

On the other hand, if the procedure don't have INOUT parameter (IN only),
"EXEC SQL CALL inout_proc(1,2);" statement succeeded.

This error seems to occur because ECPG doesn't expect the value to be
returned by CALL statement.
Is this a bug?
Or, is the current version limited to calling procedures with INOUT
parameters from ECPG?

I found this behavior in PostgreSQL 11.8 and 12.3.


Also, I found the patch[1] introducing "INTO" clause in CALL of ECPG.
However, the patch changes the EXC SQL CALL statement to always require INTO
clause.

[1]
https://www.postgresql.org/message-id/CAE9k0P%3DGQFjfy9jHCPDw4Eh_xE%3DNw%3D9y4f-CuTZp1L%2B6vEHwFg%40mail.gmail.com


pgsql-bugs by date:

Previous
From: "David G. Johnston"
Date:
Subject: Re: pg_dump's "--exclude-table" and "--exclude-table-data" options are ignored and/or cause the dump to fail entirely unless both the schema and table name use 1950s-era identifiers.
Next
From: Juan José Santamaría Flecha
Date:
Subject: Re: pg_dump's "--exclude-table" and "--exclude-table-data" options are ignored and/or cause the dump to fail entirely unless both the schema and table name use 1950s-era identifiers.