mirror of
https://github.com/postgres/postgres.git
synced 2025-08-24 09:27:52 +03:00
Make new event trigger facility actually do something.
Commit 3855968f32
added syntax, pg_dump,
psql support, and documentation, but the triggers didn't actually fire.
With this commit, they now do. This is still a pretty basic facility
overall because event triggers do not get a whole lot of information
about what the user is trying to do unless you write them in C; and
there's still no option to fire them anywhere except at the very
beginning of the execution sequence, but it's better than nothing,
and a good building block for future work.
Along the way, add a regression test for ALTER LARGE OBJECT, since
testing of event triggers reveals that we haven't got one.
Dimitri Fontaine and Robert Haas
This commit is contained in:
@@ -12,6 +12,21 @@ CREATE TABLE lotest_stash_values (loid oid, fd integer);
|
||||
-- returns the large object id
|
||||
INSERT INTO lotest_stash_values (loid) SELECT lo_creat(42);
|
||||
|
||||
-- Test ALTER LARGE OBJECT
|
||||
CREATE ROLE regresslo;
|
||||
DO $$
|
||||
BEGIN
|
||||
EXECUTE 'ALTER LARGE OBJECT ' || (select loid from lotest_stash_values)
|
||||
|| ' OWNER TO regresslo';
|
||||
END
|
||||
$$;
|
||||
SELECT
|
||||
rol.rolname
|
||||
FROM
|
||||
lotest_stash_values s
|
||||
JOIN pg_largeobject_metadata lo ON s.loid = lo.oid
|
||||
JOIN pg_authid rol ON lo.lomowner = rol.oid;
|
||||
|
||||
-- NOTE: large objects require transactions
|
||||
BEGIN;
|
||||
|
||||
@@ -163,3 +178,4 @@ SELECT lo_unlink(loid) FROM lotest_stash_values;
|
||||
\lo_unlink :newloid
|
||||
|
||||
TRUNCATE lotest_stash_values;
|
||||
DROP ROLE regresslo;
|
||||
|
Reference in New Issue
Block a user