I've found a bug in plpythonu resulting in a "cache lookup" failure. Here's the SQL to reproduce (thanks Andres):
CREATE EXTENSION plpythonu; CREATE OR REPLACE FUNCTION t() RETURNS trigger AS 'pass' LANGUAGE 'plpythonu'; CREATE TABLE a(); CREATE TABLE b(); CREATE TRIGGER check_quota AFTER INSERT ON a FOR EACH ROW EXECUTE PROCEDURE t(); INSERT INTO a DEFAULT VALUES; DROP TABLE a; CREATE TRIGGER check_quota AFTER INSERT ON b FOR EACH ROW EXECUTE PROCEDURE t(); INSERT INTO b DEFAULT VALUES; --ERROR: cache lookup failed for relation 20200 --Time: 0.570 ms -- cleanup with DROP TABLE b; DROP FUNCTION t(); Logs show: ERROR: XX000: cache lookup failed for relation 3694414 LOCATION: PLy_procedure_argument_valid, plpython.c:1469 Andres (in IRC #postgresql) said: <andres> hm, I think I see the problem. The caching there looks pretty broken to me. <andres> i.e. the caching doesn't work *at all* if a function is used as a trigger for more than one table and this is just fallout of that. <andres> Looks like a typo to me, procedure_get should use the table's oid instead of fn_oid when doing lookups in PLy_trigger_cache. Tested on: PostgreSQL 9.1.7 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 64-bit It was probably also present in the stable version as of one year ago ( see https://github.com/Vizzuality/cartodb/issues/173 ) --strk; -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs