Re: can't find procedure without a parameter on Postgres

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Thu Feb 08 2007 - 09:33:54 EST

  • Next message: Tore Halset: "Re: [OT] feathercast"

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



    This archive was generated by hypermail 2.0.0 : Thu Feb 08 2007 - 09:34:34 EST