You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cayenne.apache.org by Bryan Lewis <br...@maine.rr.com> on 2007/02/06 12:35:21 UTC
can't find procedure without a parameter on Postgres
I had this code working on an Oracle8 database:
ProcedureQuery procQuery = new
ProcedureQuery("proc_eu_update_begin");
dc.performQuery(procQuery);
The procedure is only a few sql statements to create a temporary table
and takes no parameters. When I ported to Postgres 8.2, Cayenne says it
can't find the procedure. The log shows:
{call proc_eu_update_begin}
org.postgresql.util.PSQLException: ERROR: relation
"proc_eu_update_begin" does not exist
I could execute the procedure manually with "select
proc_eu_update_begin()". Note that the empty parentheses were required.
I had other working procedures so I suspected it was the absence of
parameters causing the problem. Adding a dummy parameter made things work:
{call proc_eu_update_begin(?)} [bind: 'xx']
So I have a work-around, but... maybe Cayenne could generate a call that
Postgres would handle better, something like the empty parentheses in
the manual command.
P.S. The definition of the procedure (now a function in Postgres) looks
like:
CREATE OR REPLACE function proc_eu_update_begin()
RETURNS void AS ...
Re: can't find procedure without a parameter on Postgres
Posted by Bryan Lewis <br...@maine.rr.com>.
Thanks!
Andrus Adamchik wrote:
> Bryan,
>
> this is a bug, I can confirm that:
>
> https://issues.apache.org/cayenne/browse/CAY-750
>
> I fixed it on trunk (Cayenne 3.0). Will apply it to 2.0 and 1.2
> branches shortly.
>
> Andrus
>
>
> On Feb 6, 2007, at 1:35 PM, Bryan Lewis wrote:
>
>> I had this code working on an Oracle8 database:
>>
>> ProcedureQuery procQuery = new
>> ProcedureQuery("proc_eu_update_begin");
>> dc.performQuery(procQuery);
>>
>> The procedure is only a few sql statements to create a temporary table
>> and takes no parameters. When I ported to Postgres 8.2, Cayenne says it
>> can't find the procedure. The log shows:
>>
>> {call proc_eu_update_begin}
>> org.postgresql.util.PSQLException: ERROR: relation
>> "proc_eu_update_begin" does not exist
>>
>> I could execute the procedure manually with "select
>> proc_eu_update_begin()". Note that the empty parentheses were required.
>>
>> I had other working procedures so I suspected it was the absence of
>> parameters causing the problem. Adding a dummy parameter made things
>> work:
>>
>> {call proc_eu_update_begin(?)} [bind: 'xx']
>>
>> So I have a work-around, but... maybe Cayenne could generate a call that
>> Postgres would handle better, something like the empty parentheses in
>> the manual command.
>>
>>
>> P.S. The definition of the procedure (now a function in Postgres) looks
>> like:
>>
>> CREATE OR REPLACE function proc_eu_update_begin()
>> RETURNS void AS ...
>>
>>
>
Re: can't find procedure without a parameter on Postgres
Posted by Andrus Adamchik <an...@objectstyle.org>.
Bryan,
this is a bug, I can confirm that:
https://issues.apache.org/cayenne/browse/CAY-750
I fixed it on trunk (Cayenne 3.0). Will apply it to 2.0 and 1.2
branches shortly.
Andrus
On Feb 6, 2007, at 1:35 PM, Bryan Lewis wrote:
> I had this code working on an Oracle8 database:
>
> ProcedureQuery procQuery = new
> ProcedureQuery("proc_eu_update_begin");
> dc.performQuery(procQuery);
>
> The procedure is only a few sql statements to create a temporary table
> and takes no parameters. When I ported to Postgres 8.2, Cayenne
> says it
> can't find the procedure. The log shows:
>
> {call proc_eu_update_begin}
> org.postgresql.util.PSQLException: ERROR: relation
> "proc_eu_update_begin" does not exist
>
> I could execute the procedure manually with "select
> proc_eu_update_begin()". Note that the empty parentheses were
> required.
>
> I had other working procedures so I suspected it was the absence of
> parameters causing the problem. Adding a dummy parameter made
> things work:
>
> {call proc_eu_update_begin(?)} [bind: 'xx']
>
> So I have a work-around, but... maybe Cayenne could generate a call
> that
> Postgres would handle better, something like the empty parentheses in
> the manual command.
>
>
> P.S. The definition of the procedure (now a function in Postgres)
> looks
> like:
>
> CREATE OR REPLACE function proc_eu_update_begin()
> RETURNS void AS ...
>
>