Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 0c1f8f1

Browse files
committed
Use EXECUTE FUNCTION syntax for triggers more
Change pg_dump and ruleutils.c to use the FUNCTION keyword instead of PROCEDURE in trigger and event trigger definitions. This completes the pieces of the transition started in 0a63f99 that were kept out of PostgreSQL 11 because of the required catversion change. Discussion: https://www.postgresql.org/message-id/381bef53-f7be-29c8-d977-948e389161d6@2ndquadrant.com
1 parent 13b89f9 commit 0c1f8f1

File tree

6 files changed

+38
-38
lines changed

6 files changed

+38
-38
lines changed

src/backend/catalog/information_schema.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2094,12 +2094,12 @@ CREATE VIEW triggers AS
20942094
AS cardinal_number) AS action_order,
20952095
CAST(
20962096
CASE WHEN pg_has_role(c.relowner, 'USAGE')
2097-
THEN (regexp_match(pg_get_triggerdef(t.oid), E'.{35,} WHEN \\((.+)\\) EXECUTE PROCEDURE'))[1]
2097+
THEN (regexp_match(pg_get_triggerdef(t.oid), E'.{35,} WHEN \\((.+)\\) EXECUTE FUNCTION'))[1]
20982098
ELSE null END
20992099
AS character_data) AS action_condition,
21002100
CAST(
21012101
substring(pg_get_triggerdef(t.oid) from
2102-
position('EXECUTE PROCEDURE' in substring(pg_get_triggerdef(t.oid) from 48)) + 47)
2102+
position('EXECUTE FUNCTION' in substring(pg_get_triggerdef(t.oid) from 48)) + 47)
21032103
AS character_data) AS action_statement,
21042104
CAST(
21052105
-- hard-wired reference to TRIGGER_TYPE_ROW

src/backend/utils/adt/ruleutils.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1044,7 +1044,7 @@ pg_get_triggerdef_worker(Oid trigid, bool pretty)
10441044
appendStringInfoString(&buf, ") ");
10451045
}
10461046

1047-
appendStringInfo(&buf, "EXECUTE PROCEDURE %s(",
1047+
appendStringInfo(&buf, "EXECUTE FUNCTION %s(",
10481048
generate_function_name(trigrec->tgfoid, 0,
10491049
NIL, argtypes,
10501050
false, NULL, EXPR_KIND_NONE));

src/bin/pg_dump/pg_dump.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17086,7 +17086,7 @@ dumpTrigger(Archive *fout, TriggerInfo *tginfo)
1708617086
appendPQExpBufferStr(query, " FOR EACH STATEMENT\n ");
1708717087

1708817088
/* regproc output is already sufficiently quoted */
17089-
appendPQExpBuffer(query, "EXECUTE PROCEDURE %s(",
17089+
appendPQExpBuffer(query, "EXECUTE FUNCTION %s(",
1709017090
tginfo->tgfname);
1709117091

1709217092
tgargs = (char *) PQunescapeBytea((unsigned char *) tginfo->tgargs,
@@ -17200,7 +17200,7 @@ dumpEventTrigger(Archive *fout, EventTriggerInfo *evtinfo)
1720017200
appendPQExpBufferChar(query, ')');
1720117201
}
1720217202

17203-
appendPQExpBufferStr(query, "\n EXECUTE PROCEDURE ");
17203+
appendPQExpBufferStr(query, "\n EXECUTE FUNCTION ");
1720417204
appendPQExpBufferStr(query, evtinfo->evtfname);
1720517205
appendPQExpBufferStr(query, "();\n");
1720617206

src/bin/pg_dump/t/002_pg_dump.pl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1540,11 +1540,11 @@
15401540
create_order => 33,
15411541
create_sql => 'CREATE EVENT TRIGGER test_event_trigger
15421542
ON ddl_command_start
1543-
EXECUTE PROCEDURE dump_test.event_trigger_func();',
1543+
EXECUTE FUNCTION dump_test.event_trigger_func();',
15441544
regexp => qr/^
15451545
\QCREATE EVENT TRIGGER test_event_trigger \E
15461546
\QON ddl_command_start\E
1547-
\n\s+\QEXECUTE PROCEDURE dump_test.event_trigger_func();\E
1547+
\n\s+\QEXECUTE FUNCTION dump_test.event_trigger_func();\E
15481548
/xm,
15491549
like => { %full_runs, section_post_data => 1, },
15501550
},
@@ -1554,11 +1554,11 @@
15541554
create_sql => 'CREATE TRIGGER test_trigger
15551555
BEFORE INSERT ON dump_test.test_table
15561556
FOR EACH ROW WHEN (NEW.col1 > 10)
1557-
EXECUTE PROCEDURE dump_test.trigger_func();',
1557+
EXECUTE FUNCTION dump_test.trigger_func();',
15581558
regexp => qr/^
15591559
\QCREATE TRIGGER test_trigger BEFORE INSERT ON dump_test.test_table \E
15601560
\QFOR EACH ROW WHEN ((new.col1 > 10)) \E
1561-
\QEXECUTE PROCEDURE dump_test.trigger_func();\E
1561+
\QEXECUTE FUNCTION dump_test.trigger_func();\E
15621562
/xm,
15631563
like => {
15641564
%full_runs,

src/include/catalog/catversion.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,6 @@
5353
*/
5454

5555
/* yyyymmddN */
56-
#define CATALOG_VERSION_NO 201902011
56+
#define CATALOG_VERSION_NO 201902071
5757

5858
#endif

src/test/regress/expected/triggers.out

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -417,21 +417,21 @@ SELECT * FROM main_table ORDER BY a, b;
417417
(8 rows)
418418

419419
SELECT pg_get_triggerdef(oid, true) FROM pg_trigger WHERE tgrelid = 'main_table'::regclass AND tgname = 'modified_a';
420-
pg_get_triggerdef
421-
--------------------------------------------------------------------------------------------------------------------------------------------
422-
CREATE TRIGGER modified_a BEFORE UPDATE OF a ON main_table FOR EACH ROW WHEN (old.a <> new.a) EXECUTE PROCEDURE trigger_func('modified_a')
420+
pg_get_triggerdef
421+
-------------------------------------------------------------------------------------------------------------------------------------------
422+
CREATE TRIGGER modified_a BEFORE UPDATE OF a ON main_table FOR EACH ROW WHEN (old.a <> new.a) EXECUTE FUNCTION trigger_func('modified_a')
423423
(1 row)
424424

425425
SELECT pg_get_triggerdef(oid, false) FROM pg_trigger WHERE tgrelid = 'main_table'::regclass AND tgname = 'modified_a';
426-
pg_get_triggerdef
427-
-----------------------------------------------------------------------------------------------------------------------------------------------------
428-
CREATE TRIGGER modified_a BEFORE UPDATE OF a ON public.main_table FOR EACH ROW WHEN ((old.a <> new.a)) EXECUTE PROCEDURE trigger_func('modified_a')
426+
pg_get_triggerdef
427+
----------------------------------------------------------------------------------------------------------------------------------------------------
428+
CREATE TRIGGER modified_a BEFORE UPDATE OF a ON public.main_table FOR EACH ROW WHEN ((old.a <> new.a)) EXECUTE FUNCTION trigger_func('modified_a')
429429
(1 row)
430430

431431
SELECT pg_get_triggerdef(oid, true) FROM pg_trigger WHERE tgrelid = 'main_table'::regclass AND tgname = 'modified_any';
432-
pg_get_triggerdef
433-
--------------------------------------------------------------------------------------------------------------------------------------------------------------
434-
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')
432+
pg_get_triggerdef
433+
-------------------------------------------------------------------------------------------------------------------------------------------------------------
434+
CREATE TRIGGER modified_any BEFORE UPDATE OF a ON main_table FOR EACH ROW WHEN (old.* IS DISTINCT FROM new.*) EXECUTE FUNCTION trigger_func('modified_any')
435435
(1 row)
436436

437437
-- Test RENAME TRIGGER
@@ -477,9 +477,9 @@ FOR EACH STATEMENT EXECUTE PROCEDURE trigger_func('before_upd_a_stmt');
477477
CREATE TRIGGER after_upd_b_stmt_trig AFTER UPDATE OF b ON main_table
478478
FOR EACH STATEMENT EXECUTE PROCEDURE trigger_func('after_upd_b_stmt');
479479
SELECT pg_get_triggerdef(oid) FROM pg_trigger WHERE tgrelid = 'main_table'::regclass AND tgname = 'after_upd_a_b_row_trig';
480-
pg_get_triggerdef
481-
--------------------------------------------------------------------------------------------------------------------------------------------------
482-
CREATE TRIGGER after_upd_a_b_row_trig AFTER UPDATE OF a, b ON public.main_table FOR EACH ROW EXECUTE PROCEDURE trigger_func('after_upd_a_b_row')
480+
pg_get_triggerdef
481+
-------------------------------------------------------------------------------------------------------------------------------------------------
482+
CREATE TRIGGER after_upd_a_b_row_trig AFTER UPDATE OF a, b ON public.main_table FOR EACH ROW EXECUTE FUNCTION trigger_func('after_upd_a_b_row')
483483
(1 row)
484484

485485
UPDATE main_table SET a = 50;
@@ -1107,15 +1107,15 @@ DELETE 1
11071107
a | integer | | |
11081108
b | integer | | |
11091109
Triggers:
1110-
after_del_stmt_trig AFTER DELETE ON main_view FOR EACH STATEMENT EXECUTE PROCEDURE view_trigger('after_view_del_stmt')
1111-
after_ins_stmt_trig AFTER INSERT ON main_view FOR EACH STATEMENT EXECUTE PROCEDURE view_trigger('after_view_ins_stmt')
1112-
after_upd_stmt_trig AFTER UPDATE ON main_view FOR EACH STATEMENT EXECUTE PROCEDURE view_trigger('after_view_upd_stmt')
1113-
before_del_stmt_trig BEFORE DELETE ON main_view FOR EACH STATEMENT EXECUTE PROCEDURE view_trigger('before_view_del_stmt')
1114-
before_ins_stmt_trig BEFORE INSERT ON main_view FOR EACH STATEMENT EXECUTE PROCEDURE view_trigger('before_view_ins_stmt')
1115-
before_upd_stmt_trig BEFORE UPDATE ON main_view FOR EACH STATEMENT EXECUTE PROCEDURE view_trigger('before_view_upd_stmt')
1116-
instead_of_delete_trig INSTEAD OF DELETE ON main_view FOR EACH ROW EXECUTE PROCEDURE view_trigger('instead_of_del')
1117-
instead_of_insert_trig INSTEAD OF INSERT ON main_view FOR EACH ROW EXECUTE PROCEDURE view_trigger('instead_of_ins')
1118-
instead_of_update_trig INSTEAD OF UPDATE ON main_view FOR EACH ROW EXECUTE PROCEDURE view_trigger('instead_of_upd')
1110+
after_del_stmt_trig AFTER DELETE ON main_view FOR EACH STATEMENT EXECUTE FUNCTION view_trigger('after_view_del_stmt')
1111+
after_ins_stmt_trig AFTER INSERT ON main_view FOR EACH STATEMENT EXECUTE FUNCTION view_trigger('after_view_ins_stmt')
1112+
after_upd_stmt_trig AFTER UPDATE ON main_view FOR EACH STATEMENT EXECUTE FUNCTION view_trigger('after_view_upd_stmt')
1113+
before_del_stmt_trig BEFORE DELETE ON main_view FOR EACH STATEMENT EXECUTE FUNCTION view_trigger('before_view_del_stmt')
1114+
before_ins_stmt_trig BEFORE INSERT ON main_view FOR EACH STATEMENT EXECUTE FUNCTION view_trigger('before_view_ins_stmt')
1115+
before_upd_stmt_trig BEFORE UPDATE ON main_view FOR EACH STATEMENT EXECUTE FUNCTION view_trigger('before_view_upd_stmt')
1116+
instead_of_delete_trig INSTEAD OF DELETE ON main_view FOR EACH ROW EXECUTE FUNCTION view_trigger('instead_of_del')
1117+
instead_of_insert_trig INSTEAD OF INSERT ON main_view FOR EACH ROW EXECUTE FUNCTION view_trigger('instead_of_ins')
1118+
instead_of_update_trig INSTEAD OF UPDATE ON main_view FOR EACH ROW EXECUTE FUNCTION view_trigger('instead_of_upd')
11191119

11201120
-- Test dropping view triggers
11211121
DROP TRIGGER instead_of_insert_trig ON main_view;
@@ -1131,13 +1131,13 @@ View definition:
11311131
main_table.b
11321132
FROM main_table;
11331133
Triggers:
1134-
after_del_stmt_trig AFTER DELETE ON main_view FOR EACH STATEMENT EXECUTE PROCEDURE view_trigger('after_view_del_stmt')
1135-
after_ins_stmt_trig AFTER INSERT ON main_view FOR EACH STATEMENT EXECUTE PROCEDURE view_trigger('after_view_ins_stmt')
1136-
after_upd_stmt_trig AFTER UPDATE ON main_view FOR EACH STATEMENT EXECUTE PROCEDURE view_trigger('after_view_upd_stmt')
1137-
before_del_stmt_trig BEFORE DELETE ON main_view FOR EACH STATEMENT EXECUTE PROCEDURE view_trigger('before_view_del_stmt')
1138-
before_ins_stmt_trig BEFORE INSERT ON main_view FOR EACH STATEMENT EXECUTE PROCEDURE view_trigger('before_view_ins_stmt')
1139-
before_upd_stmt_trig BEFORE UPDATE ON main_view FOR EACH STATEMENT EXECUTE PROCEDURE view_trigger('before_view_upd_stmt')
1140-
instead_of_update_trig INSTEAD OF UPDATE ON main_view FOR EACH ROW EXECUTE PROCEDURE view_trigger('instead_of_upd')
1134+
after_del_stmt_trig AFTER DELETE ON main_view FOR EACH STATEMENT EXECUTE FUNCTION view_trigger('after_view_del_stmt')
1135+
after_ins_stmt_trig AFTER INSERT ON main_view FOR EACH STATEMENT EXECUTE FUNCTION view_trigger('after_view_ins_stmt')
1136+
after_upd_stmt_trig AFTER UPDATE ON main_view FOR EACH STATEMENT EXECUTE FUNCTION view_trigger('after_view_upd_stmt')
1137+
before_del_stmt_trig BEFORE DELETE ON main_view FOR EACH STATEMENT EXECUTE FUNCTION view_trigger('before_view_del_stmt')
1138+
before_ins_stmt_trig BEFORE INSERT ON main_view FOR EACH STATEMENT EXECUTE FUNCTION view_trigger('before_view_ins_stmt')
1139+
before_upd_stmt_trig BEFORE UPDATE ON main_view FOR EACH STATEMENT EXECUTE FUNCTION view_trigger('before_view_upd_stmt')
1140+
instead_of_update_trig INSTEAD OF UPDATE ON main_view FOR EACH ROW EXECUTE FUNCTION view_trigger('instead_of_upd')
11411141

11421142
DROP VIEW main_view;
11431143
--

0 commit comments

Comments
 (0)