Thread: ExecOpenScanR: failed to open relation

ExecOpenScanR: failed to open relation

From
Pam Withnall
Date:
Hi,
in my java code I am creating 3 temporary tables, then calling a stored
procedure which calls another stored procedure.
then I drop the temporary tables. 

the first time around , eveything is OK  , then when repeating the action I
get 
"ExecOpenScanR: failed to open relation 2808495 "
could it be that an index exists when the table doesn't or
does it mean the functions did not stop properly ?
please help.
Pam Withnall



Re: ExecOpenScanR: failed to open relation

From
Tom Lane
Date:
Pam Withnall <Pamw@zoom.com.au> writes:
> in my java code I am creating 3 temporary tables, then calling a stored
> procedure which calls another stored procedure.
> then I drop the temporary tables. 
> the first time around , eveything is OK  , then when repeating the action I
> get 
> "ExecOpenScanR: failed to open relation 2808495 "

If you're using plpgsql, you can't drop and recreate temp tables between
procedure executions, because the cached query plans for the procedure
will still refer to the old version of the tables.

Either create the temp table *once* per backend, or use pltcl, which
doesn't try to cache query plans.
        regards, tom lane


Re: ExecOpenScanR: failed to open relation

From
Jan Wieck
Date:
Tom Lane wrote:
> Pam Withnall <Pamw@zoom.com.au> writes:
> > in my java code I am creating 3 temporary tables, then calling a stored
> > procedure which calls another stored procedure.
> > then I drop the temporary tables.
> > the first time around , eveything is OK  , then when repeating the action I
> > get
> > "ExecOpenScanR: failed to open relation 2808495 "
>
> If you're using plpgsql, you can't drop and recreate temp tables between
> procedure executions, because the cached query plans for the procedure
> will still refer to the old version of the tables.
>
> Either create the temp table *once* per backend, or use pltcl, which
> doesn't try to cache query plans.
   as  long  as  you  don't  tell  it  to (using spi_prepare and   spi_execp explicitly in PL/Tcl) :-)


Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#================================================== JanWieck@Yahoo.com #



_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com