
An obscure series of events seems to cause a core dump and OID
corruption:

-- tolower function for varchar
create function varchar_lower(varchar) returns varchar
        as '/usr/local/lib/pgcontains.so', 'pglower'
        language 'c'; 

create index  ztables_title_ndx on ztitles ( varchar_lower (title) ) ;

vacuum analyze ;

{ leave }

at some point come back

drop function varchar_lower (varchar) ;

create function varchar_lower(varchar) returns varchar
        as '/usr/local/lib/pgcontains.so', 'pglower'
        language 'c'; 


and strange things start to happen.


I realize that (and only belatedly) once I drop the function the index
is corrupt, but it seems there are invalid oids when I try to dump the
database, and dumping some tables caused a core dump.

I didn't save the data, I was in live service panic mode.

I have a shared library of functions I use in Postgres and I do a drop /
create for an install script. I realize this is a little indiscriminate,
and at least unwise, but I think postgres should be able to handle this.



-- 
http://www.mohawksoft.com

Sat, 02 Dec 2000 23:03:58 -0500
mlw <markw@mohawksoft.com>
core dump? OID/database corruption?
Given the name of a table, I need to find all foreign keys in that table
and the table/column that they refer to, along with the action to be
performed on update/delete.  The following query works, but only when
there is 1 foreign key in the table, when there is more than 2 it grows
exponentially -- which means I am missing a join.  However, given my
limitied knowledge about the layouts of the postgres system tables, and
the pg_trigger not being documented on the web site, I have been unable to
get the correct query.  Is this possible, and if so, what join(s) am I
missing?

SELECT pt.tgargs,
pt.tgnargs,
pt.tgdeferrable,
pt.tginitdeferred,
pg_proc.proname,
pg_proc_1.proname
FROM pg_class pc,
pg_proc pg_proc,
pg_proc pg_proc_1,
pg_trigger pg_trigger,
pg_trigger pg_trigger_1,
pg_proc pp,
pg_trigger pt
WHERE pt.tgrelid = pc.oid
AND pp.oid = pt.tgfoid
AND pg_trigger.tgconstrrelid = pc.oid
AND pg_proc.oid = pg_trigger.tgfoid
AND pg_trigger_1.tgfoid = pg_proc_1.oid
AND pg_trigger_1.tgconstrrelid = pc.oid
AND ((pc.relname='tblmidterm')
AND (pp.proname LIKE '%ins')
AND (pg_proc.proname LIKE '%upd')
AND (pg_proc_1.proname LIKE '%del'))

Michael Fork - CCNA - MCP - A+
Network Support - Toledo Internet Access - Toledo Ohio


Sat, 2 Dec 2000 23:22:54 -0500 (EST)
Michael Fork <mfork@toledolink.com>
SQL to retrieve FK's, Update/Delete action, etc.
mlw <markw@mohawksoft.com> writes:
> [ drop function on which a functional index is based ]
> and strange things start to happen.

All I get is messages like
	ERROR:  fmgr_info: function 402432: cache lookup failed
which is about what I'd expect.  If you've seen a coredump in
this situation, let's hear a more specific bug report.

			regards, tom lane

Sun, 03 Dec 2000 00:49:44 -0500
Tom Lane <tgl@sss.pgh.pa.us>
Re: core dump? OID/database corruption? 