Обсуждение: BUG #1201: void functions called through jdbc driver return error
The following bug has been logged online:
Bug reference: 1201
Logged by: Jonathan Scott
Email address: jwscott@vanten.com
PostgreSQL version: 7.4
Operating system: Linux
Description: void functions called through jdbc driver return error
Details:
Hello all,
At work here, we are considering upgrading from 7.3 to 7.4, but we've hit a
bit of a snag. We have functions in our schema that have return void. When
called through the 7.4's JDBC driver, we get the following error:
ERROR: function "fulfill_cctrans_item" in FROM has unsupported return type
Our DB unit tests seem to indicate the function is defined and works
correctly; we just get the error when accessing it through the JDBC driver.
Inside our Java code, we use executeQuery() on a CallableStatement object,
as below:
stmt = con.prepareCall("{ call " + statement + "}");
stmt.executeQuery();
Any more info needed, please feel free to contact me.
Thanks,
Jonathan
On Tue, 27 Jul 2004, PostgreSQL Bugs List wrote:
> Bug reference: 1201
> Logged by: Jonathan Scott
> Email address: jwscott@vanten.com
> PostgreSQL version: 7.4
> Description: void functions called through jdbc driver return error
>
> At work here, we are considering upgrading from 7.3 to 7.4, but we've hit a
> bit of a snag. We have functions in our schema that have return void. When
> called through the 7.4's JDBC driver, we get the following error:
>
> ERROR: function "fulfill_cctrans_item" in FROM has unsupported return type
>
To elaborate more on this problem after it gets past the jdbc driver, what
happens is that the function call execution is translated into a SQL
statement of the form "SELECT * FROM voidfunc();" This produces a server
error message:
CREATE OR REPLACE FUNCTION voidfunc() RETURNS void AS
'begin return; end;'
LANGUAGE plpgsql;
SELECT * FROM voidfunc();
ERROR: function "voidfunc" in FROM has unsupported return type
It is unclear why this is disallowed. A plain "SELECT voidfunc();" works.
Kris Jurka