Bruce Momjian wrote:
>
> I received the following pg_migrator bug report today and was able to
> reproduce the reported failure when using composite types:
>
> test=> SELECT * FROM breakmigrator;
> ERROR: cache lookup failed for type 27604
>
> test=> ANALYZE VERBOSE public.breakmigrator;
> INFO: analyzing "public.breakmigrator"
> INFO: "breakmigrator": scanned 1 of 1 pages, containing 3 live rows and
> 0 dead rows; 3 rows in sample, 3 estimated total rows
> ERROR: cache lookup failed for type 27604
>
> There is no pg_type row with oid 27604.
>
> Can anyone suggest the cause? Do we embed the object oid in the
> composite object? Did we change the composite object storage layout
> between 8.3 and 8.4? I am surprised the regression tests didn't show
> this error. (I just tried ANALYZE on the regression database and it
> succeeded.)
More info: I found 27604 in the old 8.3 database:
test=> SELECT * FROM pg_type WHERE oid = 27604;-[ RECORD 1 ]-+------------typname | footypetypnamespace |
2200typowner | 10typlen | -1typbyval | ftyptype | ctypisdefined | ttypdelim | ,typrelid
| 27602typelem | 0typarray | 27603typinput | record_intypoutput | record_outtypreceive |
record_recvtypsend | record_sendtypmodin | -typmodout | -typanalyze | -typalign | dtypstorage
|xtypnotnull | ftypbasetype | 0typtypmod | -1typndims | 0typdefaultbin |typdefault |
'footype' has a different oid in the new 8.4 database:
test=> SELECT oid, * FROM pg_type WHERE typname = 'footype';-[ RECORD 1 ]--+------------oid | 17580typname
| footypetypnamespace | 2200typowner | 10typlen | -1typbyval | ftyptype | ctypcategory
| Ctypispreferred | ftypisdefined | ttypdelim | ,typrelid | 17578typelem | 0typarray |
17579typinput | record_intypoutput | record_outtypreceive | record_recvtypsend |
record_sendtypmodin | -typmodout | -typanalyze | -typalign | dtypstorage | xtypnotnull |
ftypbasetype | 0typtypmod | -1typndims | 0typdefaultbin |typdefault |
-- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB
http://enterprisedb.com
+ If your life is a hard drive, Christ can be your backup. +