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 ...
>
>