pg_class_aclcheck: relation [oid] not found...

From: Sean Chittenden <sean(at)chittenden(dot)org>
To: pgsql-bugs(at)postgresql(dot)org
Subject: pg_class_aclcheck: relation [oid] not found...
Date: 2003-05-26 23:10:50
Message-ID: 20030526231050.GY71079@perrin.int.nxad.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Howdy. There's a bug in the handling of clean up temp tables. It
seems as though there's a missing call to ReleaseSysCache around line
4237 of backend/commands/tablecmds.c... though adding such a call
doesn't solve the problem. Hrm. This one's pretty easy to reproduce
and there doesn't seem to be any mystery about how to trigger it:

CREATE SCHEMA s;
CREATE FUNCTION s.f()
RETURNS BIGINT
EXTERNAL SECURITY DEFINER
AS '
BEGIN
EXECUTE ''CREATE LOCAL TEMP TABLE t (
a TEXT NOT NULL,
b TEXT
) WITHOUT OIDS ON COMMIT DROP;'';
EXECUTE ''CREATE UNIQUE INDEX t_key_udx ON t(a);'';

INSERT INTO t (a, b) VALUES (''foo''::TEXT, ''bar''::TEXT);
IF NOT FOUND THEN
RAISE EXCEPTION ''Unable to insert t'';
END IF;

RETURN 0::BIGINT;
END;
' LANGUAGE 'plpgsql';

BEGIN;
SELECT s.f();
COMMIT;
BEGIN;
SELECT s.f();
COMMIT;

And the output:

test=# BEGIN;
BEGIN
test=# SELECT s.f();
f
---
0
(1 row)

test=# COMMIT;
COMMIT
test=# BEGIN;
BEGIN
test=# SELECT s.f();
ERROR: pg_class_aclcheck: relation 2265016 not found
CONTEXT: PL/pgSQL function f line 8 at SQL statement

What bothers me about this, however, is that the functional equivalent
performed outside of a pl/pgsql function works which leads me to
believe that it's a pl/pgsql problem:

BEGIN;
CREATE LOCAL TEMP TABLE t (
a TEXT NOT NULL,
b TEXT
) WITHOUT OIDS ON COMMIT DROP;
CREATE UNIQUE INDEX t_key_udx ON t(a);

INSERT INTO t (a, b) VALUES ('foo'::TEXT, 'bar'::TEXT);
COMMIT;
BEGIN;
CREATE LOCAL TEMP TABLE t (
a TEXT NOT NULL,
b TEXT
) WITHOUT OIDS ON COMMIT DROP;
CREATE UNIQUE INDEX t_key_udx ON t(a);

INSERT INTO t (a, b) VALUES ('foo'::TEXT, 'bar'::TEXT);
COMMIT;

Anyway, I hope this helps. -sc

--
Sean Chittenden

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Mendola Gaetano 2003-05-27 00:55:50 Re: Bug in sequence dependency checking
Previous Message Tom Lane 2003-05-26 20:16:54 Re: Bug #928: server_min_messages (log_min_messages in CVS)