BUG #16557: getProcedureColumns() function returns columns, when there is no existing Stored Procedure in the DB

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

BUG #16557: getProcedureColumns() function returns columns, when there is no existing Stored Procedure in the DB

apt.postgresql.org Repository Update
The following bug has been logged on the website:

Bug reference:      16557
Logged by:          Adarshdeep Cheema
Email address:      [hidden email]
PostgreSQL version: 12.2
Operating system:   Windows
Description:        

Create any user defined function using Postgres 12.3 Server, we are using
postgresql-42.2.11 JDBC driver

DDLs:
CREATE FUNCTION findec(pdec numeric) RETURNS numeric
    LANGUAGE plpgsql
    AS $$
declare r decimal(7,2);
begin
        r = PDEC;
        return r;
end;
$$;


a) When we use the following Java code, then we get nothing as we do no have
any Stored Procedure defined, which is expected
  resultSet= metadata.getProcedures(null , "public", null); ,
  while (resultSet.next()){
           
            System.out.print(resultSet.getString(1)+"    ");
            System.out.print(resultSet.getString(2)+"    ");
            System.out.print(resultSet.getString(3)+"    ");
            System.out.print(resultSet.getString(4)+"    ");
            System.out.print(resultSet.getString(5)+"    ");
            System.out.println(resultSet.getString(6)+"    ");
        }

b) Now change the JAVA code to the following and you will get two columns in
the resultSet, which is a bug as there is no StoredProcedure Defined in the
database

 resultSet= metadata.getProcedureColumns(null , "public", "findec", null);
,
  while (resultSet.next()){
           
            System.out.print(resultSet.getString(1)+"    ");
            System.out.print(resultSet.getString(2)+"    ");
            System.out.print(resultSet.getString(3)+"    ");
            System.out.print(resultSet.getString(4)+"    ");
            System.out.print(resultSet.getString(5)+"    ");
            System.out.println(resultSet.getString(6)+"    ");
        }


OUTPUT:
null    public    findec    returnValue    5    2    
null    public    findec    pdec    1    2