From: | Thomas Kellerer <spam_eater(at)gmx(dot)net> |
---|---|
To: | pgsql-jdbc(at)postgresql(dot)org |
Subject: | CallableStatement.getParameterMetaData() throws exception for valid {call ...} statement |
Date: | 2015-05-30 08:21:52 |
Message-ID: | mkbrv5$vfc$1@ger.gmane.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
Hello,
I just noticed the following:
Using this sample function from the manual:
CREATE FUNCTION sum_n_product(x int, y int, OUT sum int, OUT prod int) AS $$
BEGIN
sum := x + y;
prod := x * y;
END;
$$ LANGUAGE plpgsql;
When calling this through JDBC, the following works without problems:
cstmt = connection.prepareCall("{call sum_n_product(?,?,?,?)}");
cstmt.registerOutParameter(3, Types.INTEGER);
cstmt.registerOutParameter(4, Types.INTEGER);
cstmt.setInt(1, 2);
cstmt.setInt(2, 5);
cstmt.execute();
int x1 = cstmt.getInt(3);
int x2 = cstmt.getInt(4);
System.out.println("x1: " + x1);
System.out.println("x2: " + x2);
However when calling
ParameterMetaData meta = cstmt.getParameterMetaData();
after prepareCall() the following exception is thrown:
org.postgresql.util.PSQLException: ERROR: function sum_n_product(unknown, unknown, unknown, unknown) does not exist
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Position: 15
Casting everything to integer ( "{call sum_n_product(?::int,?::int,?::int,?::int)}" ) produces the same error (except that the parameter list shows integer in the exception message).
This looks like a bug to me. Why should getParameterMetaData() throw an exception if the call is valid and working?
Driver version is 9.4-1200
Postgres version is 9.4.2
Java version is 1.7.0_55
Regards
Thomas
From | Date | Subject | |
---|---|---|---|
Next Message | dmp | 2015-05-30 19:50:15 | Re: CallableStatement.getParameterMetaData() throws exception for valid {call ...} statement |
Previous Message | dmp | 2015-05-26 14:39:31 | Re: Reading schema information |