mirror of
https://github.com/postgres/postgres.git
synced 2025-04-25 21:42:33 +03:00
Fix ALTER TRIGGER ... RENAME, broken in WITH OIDS removal.
I (Andres) broke this in 578b229718e. Author: Rushabh Lathia Discussion: https://postgr.es/m/CAGPqQf04PywZX3sVQaF6H=oLiW9GJncRW+=e78vTy4MokEWcZw@mail.gmail.com
This commit is contained in:
parent
93507e67c9
commit
8cc157b234
@ -1721,14 +1721,14 @@ renametrig(RenameStmt *stmt)
|
||||
NULL, 2, key);
|
||||
if (HeapTupleIsValid(tuple = systable_getnext(tgscan)))
|
||||
{
|
||||
Form_pg_trigger trigform = (Form_pg_trigger) GETSTRUCT(tuple);
|
||||
|
||||
tgoid = trigform->oid;
|
||||
Form_pg_trigger trigform;
|
||||
|
||||
/*
|
||||
* Update pg_trigger tuple with new tgname.
|
||||
*/
|
||||
tuple = heap_copytuple(tuple); /* need a modifiable copy */
|
||||
trigform = (Form_pg_trigger) GETSTRUCT(tuple);
|
||||
tgoid = trigform->oid;
|
||||
|
||||
namestrcpy(&trigform->tgname,
|
||||
stmt->newname);
|
||||
|
@ -434,7 +434,21 @@ SELECT pg_get_triggerdef(oid, true) FROM pg_trigger WHERE tgrelid = 'main_table'
|
||||
CREATE TRIGGER modified_any BEFORE UPDATE OF a ON main_table FOR EACH ROW WHEN (old.* IS DISTINCT FROM new.*) EXECUTE PROCEDURE trigger_func('modified_any')
|
||||
(1 row)
|
||||
|
||||
DROP TRIGGER modified_a ON main_table;
|
||||
-- Test RENAME TRIGGER
|
||||
ALTER TRIGGER modified_a ON main_table RENAME TO modified_modified_a;
|
||||
SELECT count(*) FROM pg_trigger WHERE tgrelid = 'main_table'::regclass AND tgname = 'modified_a';
|
||||
count
|
||||
-------
|
||||
0
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM pg_trigger WHERE tgrelid = 'main_table'::regclass AND tgname = 'modified_modified_a';
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
DROP TRIGGER modified_modified_a ON main_table;
|
||||
DROP TRIGGER modified_any ON main_table;
|
||||
DROP TRIGGER insert_a ON main_table;
|
||||
DROP TRIGGER delete_a ON main_table;
|
||||
|
@ -284,7 +284,13 @@ SELECT * FROM main_table ORDER BY a, b;
|
||||
SELECT pg_get_triggerdef(oid, true) FROM pg_trigger WHERE tgrelid = 'main_table'::regclass AND tgname = 'modified_a';
|
||||
SELECT pg_get_triggerdef(oid, false) FROM pg_trigger WHERE tgrelid = 'main_table'::regclass AND tgname = 'modified_a';
|
||||
SELECT pg_get_triggerdef(oid, true) FROM pg_trigger WHERE tgrelid = 'main_table'::regclass AND tgname = 'modified_any';
|
||||
DROP TRIGGER modified_a ON main_table;
|
||||
|
||||
-- Test RENAME TRIGGER
|
||||
ALTER TRIGGER modified_a ON main_table RENAME TO modified_modified_a;
|
||||
SELECT count(*) FROM pg_trigger WHERE tgrelid = 'main_table'::regclass AND tgname = 'modified_a';
|
||||
SELECT count(*) FROM pg_trigger WHERE tgrelid = 'main_table'::regclass AND tgname = 'modified_modified_a';
|
||||
|
||||
DROP TRIGGER modified_modified_a ON main_table;
|
||||
DROP TRIGGER modified_any ON main_table;
|
||||
DROP TRIGGER insert_a ON main_table;
|
||||
DROP TRIGGER delete_a ON main_table;
|
||||
|
Loading…
x
Reference in New Issue
Block a user