Resolved, however feedback regarding better ways of doing this would be appreciated.

The final step was the decrement the reltriggers counter for the parent table's pg_class entry to 0. This appears to have resolved the problem.

I'm curious as to whether the problem may have resulted from slony corruptting internal pg_<tables> or postgres not correctly respecting the integrity of drop-trigger type transactions and their respective dependencies.



On Thu, 17 May 2007, Raf wrote:

Please read from bottom up. I've proceeded further with this investigation and have removed slony. In spite of this the trigger in pg_trigger and pg_dep remained. I then removed both related records in pg_depend and pg_trigger.

If I look in pg_class, it shows that there are 4 triggers on the table which previously owened the trigger. I no longer have any reference to this oid in pg_depend or pg_trigger.

Yet, after restarting postgres and all client connections, I now get the error:

ERROR: 1 trigger record(s) not found for relation "<mytablename>"

As mentioned, I've checked the for relating oid's in pg_depend and pg_trigger. Nadda.

If anyone else has manually done something similar before, I would be grateful for some guidence.

Many Thanks.

Raf




On Thu, 17 May 2007, Raf wrote:

Update on the status of my findings relating to the bug below:

I did:

[EMAIL PROTECTED] ~/scratch/ $ echo "select tablename from pg_tables where tablename like 'pg_%'" | psql -U <user> <db> > pg_tables.txt [EMAIL PROTECTED] ~/scratch/ $ for i in `cat pg_tables.txt`; do echo "==$i=="; echo "select * from $i"| psql -U <user> <db> | grep 54881296; # the-oid; done;

And got:

...
==pg_trigger==
273090 | _ipt_replication_logtrigger_114 | 54881296 | 29 | t | f | | 0 | f | f | 3 | | _ipt_replication\000114\000vvvvvvkkkkvvv\000
...
==pg_depend==
  16412 | 54881725 |        0 |       1255 | 54881296 |           0 | n
...


Which to me looks very slonny related. It seems like the OID related to a slonny trigger.

Has anyone seen this before, with regard to slonny? I'm thinking of removing and readding slonny associations. Is this best way forward?

Cheers,

Raf


On Thu, 17 May 2007, Raf wrote:

Greetings,

In the face of shabby google results, I hoped that someone hear might know something about the postgres function cache. We have a server which reports an error of the form "cache lookup failed for function <oid>."

Initially, I'd hoped to resolve this without a restart (which didn't do the trick either), and had been searching for some way to clear postgres' internal function cache - I think it stores plans/hints/compiled-version relating to stored proc's?

I tried to select the reported oid out of pg_proc, which resulted in an empty set.

I then went on to explicitly drop the function and recreate it. This was interspersed with numerous postgres restarts and dropping of all client connections. In spite of this I still get the same error from our client which still reports the same OID; which doesn't exist in pg_proc.

In any case, I can't seem to find any documentation which tells me how to clear this cache.

Versions:

pg: postgresql v 8.0.1-r4
os: Gentoo Linux/Kernel 2.6.12.5 #1

Any help would be of value?

Cheers,

Raf





---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
     choose an index scan if your joining column's datatypes do not
     match



---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Reply via email to