Thread: ERROR: fmgr_info: function 0: cache lookup failed

ERROR: fmgr_info: function 0: cache lookup failed

From
"Mourad EL HADJ MIMOUNE"
Date:
Hi,
I want retrieve ROW of tables by their OID,
to do thise I made as folowing :
CREATE TABLE tab1 (X int4, Y varchar);
CREATE
 
CREATE FUNCTION tabrecord (OID) returns RECORD AS 'BEGIN RETURN(SELECT *
 FROM tab1 WHERE OID = $1) END;' language 'plpgsql';
NOTICE:  ProcedureCreate: type 'record' is not yet defined
NOTICE:  ProcedureCreate: type 'record' is not yet defined
CREATE
 
select tabrecord (2542 :: oid);
ERROR:  fmgr_info: function 0: cache lookup failed
ERROR:  fmgr_info: function 0: cache lookup failed
 
could you help me to solve this problem please,
Mourad.
 
 

Re: ERROR: fmgr_info: function 0: cache lookup failed

From
Alex Pilosov
Date:
Currently, you must do:

CREATE FUNCTION tabrecord (OID) returns tab1 AS '...

But it wouldn't help you much since the only thing you can do with this
function is:

select x(tabrecord(2542)),y(tabrecord(2542))

On Wed, 4 Jul 2001, Mourad EL HADJ MIMOUNE wrote:

> Hi,
> I want retrieve ROW of  tables by their OID,
> to do thise I made as folowing :
> CREATE TABLE tab1 (X int4, Y varchar);
> CREATE
>
> CREATE FUNCTION tabrecord (OID) returns RECORD AS 'BEGIN RETURN(SELECT *
>  FROM tab1 WHERE OID =  $1) END;' language 'plpgsql';
> NOTICE:  ProcedureCreate: type 'record' is not yet defined
> NOTICE:  ProcedureCreate: type 'record' is not yet defined
> CREATE
>
> select tabrecord (2542 :: oid);
> ERROR:  fmgr_info: function 0: cache lookup failed
> ERROR:  fmgr_info: function 0: cache lookup failed
>
> could you help me to solve this problem please,
> Mourad.
>
>
>


Re: ERROR: fmgr_info: function 0: cache lookup failed

From
Tom Lane
Date:
Alex Pilosov <alex@pilosoft.com> writes:
> Currently, you must do:
> CREATE FUNCTION tabrecord (OID) returns tab1 AS '...

Right, "returns record" is bogus.  The reason for the peculiar
error message seems to be that plpgsql is sloppy about checking
pg_type.typisdefined before believing that it has a valid type name.
I suspect this oversight is widespread :-(

            regards, tom lane