PostgreSQL Bugs

Collected from the PG bugs email list.

Bug ID15515
PG Version11.1
OSwindows
Opened2018-11-21 13:21:33+00
Reported bymain street
StatusNew

Body of first available message related to this bug follows.

The following bug has been logged on the website:

Bug reference:      15515
Logged by:          main street
Email address:      (redacted)
PostgreSQL version: 11.1
Operating system:   windows
Description:        

When an application calls DatabaseMetadata.getFunctions  the Resultset
returned by the driver may include functions and vice versa re
DatabaseMetadata.getProcedures.

Using various PostregSQL JDBC drivers such as 42.2.5 against PostgresSQL 11
or pre-11 servers will return both types of objects. 

In essence, we might expect the driver to treat a void return type as being
an indicator of a procedure versus a function if the pre-11 style of syntax
was used.
Using the new PostgresSQL 11 CREATE PROCEDURE syntax does not change the
responses.

Example objects

CREATE FUNCTION pinint(pint integer) RETURNS void
    LANGUAGE plpgsql
    AS $$
declare
	P1 integer;
begin
	P1:= PINT;
end;
$$;

CREATE FUNCTION pinint(pint integer) RETURNS void
    LANGUAGE plpgsql
    AS $$
declare
	P1 integer;
begin
	P1:= PINT;
end;
$$;

If you were to inspect the Resultset returned by
DatabaseMetadata.getProcedures you will see a response as shown. 
https://docs.oracle.com/javase/8/docs/api/java/sql/DatabaseMetaData.html#getProcedures-java.lang.String-java.lang.String-java.lang.String-

[null],[dbcert],[finint],[null],[null],[null],[null],[2],[finint_16395]
[null],[dbcert],[pinint],[null],[null],[null],[null],[2],[pinint_16394]

Messages

DateAuthorSubject
2018-11-21 13:21:33+00=?utf-8?q?PG_Bug_reporting_form?=BUG #15515: DatabaseMetadata.getProcedures and getFunctions return objects of either type
2019-05-24 13:17:02+00Dave CramerRe: BUG #15515: DatabaseMetadata.getProcedures and getFunctions return objects of either type