Обсуждение: BUG #1201: void functions called through jdbc driver return error

Поиск
Список
Период
Сортировка

BUG #1201: void functions called through jdbc driver return error

От
"PostgreSQL Bugs List"
Дата:
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

Re: BUG #1201: void functions called through jdbc driver

От
Kris Jurka
Дата:
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