|
Hi Imad, The problem is that I should not have to and
cannot re-load the functions every now and then. Why would the type id change
and the function still references to the old type id thus fails to get the
right results? FC From: imad
[mailto:immaad(at)gmail(dot)com] You are not looking at
the right type OID. 34487 is not the type oid, its the OID of the corresponding
implicit relation. On 1/25/07, Feng
Chen <fchen(at)covergence(dot)com >
wrote: Hello, I'm wondering if anyone has experienced the same problem and is it fixed in the new Postgres release (We use Posgtgres 8.1.2, psqlodbc.so 7.2.5 (moving to 8.2.200), unixODBC 2.2.11 (moving to 2.2.12), running on Linux OS.): We have a recurring problem that the return type (a customer defined type) was changed somehow, which resulted in a failure: lookup for that type failed when trying to call that function. Specifically, we have a file defining the following type and function. It is loaded at the start of the Postgres start time and the function then is called many times.
drop type type_foo cascade;
……
CREATE OR REPLACE FUNCTION sp_foo(int4, int4 , text, text , text
, text, text , text) …… ) '; ……
The problem after a period of time (10 days or so not consistent), function sp_foo referenced an oid for an old return type that no longer existed. We had to explicitly drop the function sp_foo reload from the SQL source file to correct the problem. I knew that there was a bug of Postgres with sp functions caching the temp table ids, and there is a temp table used in this function, but the problem is with the type id changing underneath: Here is the results of system tables query. The oid 25266 no longer exists and the current type oid is somehow changed to 34487??? # select prorettype, proname from pg_proc where proname like 'sp_%'; prorettype | proname 16450 | sp_session 25226 | sp_foo 25 | sp_resolve……(12 rows) spotlite=# select * from pg_type where typname = 'type_foo'; typname | typnamespace | typowner | typlen | typbyval | typtype | typisdefined | typdelim | typrelid | typelem | typinput | typoutput | typreceive | typsend | typanalyze | typalign | typstorage | typnotnull | typbasetype | typtypmod | typndims | typdefaultbin | typdefault---------------------+--------------+----------+--------+----------+---------+--------------+----------+----------+---------+-----------+------------+-------------+-------------+------------+----------+------------+------------+-------------+-----------+----------+---------------+------------ type_foo | 2200 | 10 | -1 | f | c | t | , | 34487 | 0 | record_in | record_out | record_recv | record_send | - | d | x | f | 0 | -1 | 0 | |(1 row)
Any
help would be greatly appreciated! FC |