diff options
author | Michael Paquier <michael@paquier.xyz> | 2022-08-17 14:55:24 +0900 |
---|---|---|
committer | Michael Paquier <michael@paquier.xyz> | 2022-08-17 14:55:24 +0900 |
commit | 522ae011fa010a74cd74ef13036df5138751eee2 (patch) | |
tree | 602718dc3da19861c9662bce6068eeb03ab8f09b | |
parent | be6aadf07d005c292ac05e4b80761f7962facb71 (diff) | |
download | postgresql-522ae011fa010a74cd74ef13036df5138751eee2.tar.gz postgresql-522ae011fa010a74cd74ef13036df5138751eee2.zip |
Allow event trigger table_rewrite for ALTER MATERIALIZED VIEW
This event can happen when using SET ACCESS METHOD, as the data files of
the materialized need a full refresh but this command tag was not
updated to reflect that. The documentation is updated to track this
behavior.
Author: Onder Kalaci
Discussion: https://postgr.es/m/CACawEhXwHN3X34FiwoYG8vXR-oyUdrp7qcfRWSzS+NPahS5gSw@mail.gmail.com
Backpatch-through: 15
-rw-r--r-- | doc/src/sgml/event-trigger.sgml | 2 | ||||
-rw-r--r-- | src/include/tcop/cmdtaglist.h | 2 | ||||
-rw-r--r-- | src/test/regress/expected/event_trigger.out | 5 | ||||
-rw-r--r-- | src/test/regress/sql/event_trigger.sql | 5 |
4 files changed, 12 insertions, 2 deletions
diff --git a/doc/src/sgml/event-trigger.sgml b/doc/src/sgml/event-trigger.sgml index 9c66f97b0f6..f1235a2c9f7 100644 --- a/doc/src/sgml/event-trigger.sgml +++ b/doc/src/sgml/event-trigger.sgml @@ -242,7 +242,7 @@ <entry align="center"><literal>X</literal></entry> <entry align="center"><literal>X</literal></entry> <entry align="center"><literal>-</literal></entry> - <entry align="center"><literal>-</literal></entry> + <entry align="center"><literal>X</literal></entry> <entry align="left"></entry> </row> <row> diff --git a/src/include/tcop/cmdtaglist.h b/src/include/tcop/cmdtaglist.h index 2b1163ce33a..9e94f44c5f4 100644 --- a/src/include/tcop/cmdtaglist.h +++ b/src/include/tcop/cmdtaglist.h @@ -42,7 +42,7 @@ PG_CMDTAG(CMDTAG_ALTER_FUNCTION, "ALTER FUNCTION", true, false, false) PG_CMDTAG(CMDTAG_ALTER_INDEX, "ALTER INDEX", true, false, false) PG_CMDTAG(CMDTAG_ALTER_LANGUAGE, "ALTER LANGUAGE", true, false, false) PG_CMDTAG(CMDTAG_ALTER_LARGE_OBJECT, "ALTER LARGE OBJECT", true, false, false) -PG_CMDTAG(CMDTAG_ALTER_MATERIALIZED_VIEW, "ALTER MATERIALIZED VIEW", true, false, false) +PG_CMDTAG(CMDTAG_ALTER_MATERIALIZED_VIEW, "ALTER MATERIALIZED VIEW", true, true, false) PG_CMDTAG(CMDTAG_ALTER_OPERATOR, "ALTER OPERATOR", true, false, false) PG_CMDTAG(CMDTAG_ALTER_OPERATOR_CLASS, "ALTER OPERATOR CLASS", true, false, false) PG_CMDTAG(CMDTAG_ALTER_OPERATOR_FAMILY, "ALTER OPERATOR FAMILY", true, false, false) diff --git a/src/test/regress/expected/event_trigger.out b/src/test/regress/expected/event_trigger.out index c95c30b3140..5a10958df52 100644 --- a/src/test/regress/expected/event_trigger.out +++ b/src/test/regress/expected/event_trigger.out @@ -516,6 +516,11 @@ alter table rewriteme add column another int default -1, alter column foo type numeric(10,4); NOTICE: Table 'rewriteme' is being rewritten (reason = 4) +-- matview rewrite when changing access method +CREATE MATERIALIZED VIEW heapmv USING heap AS SELECT 1 AS a; +ALTER MATERIALIZED VIEW heapmv SET ACCESS METHOD heap2; +NOTICE: Table 'heapmv' is being rewritten (reason = 8) +DROP MATERIALIZED VIEW heapmv; -- shouldn't trigger a table_rewrite event alter table rewriteme alter column foo type numeric(12,4); begin; diff --git a/src/test/regress/sql/event_trigger.sql b/src/test/regress/sql/event_trigger.sql index 5e45e3f190e..1aeaddbe715 100644 --- a/src/test/regress/sql/event_trigger.sql +++ b/src/test/regress/sql/event_trigger.sql @@ -379,6 +379,11 @@ alter table rewriteme add column another int default -1, alter column foo type numeric(10,4); +-- matview rewrite when changing access method +CREATE MATERIALIZED VIEW heapmv USING heap AS SELECT 1 AS a; +ALTER MATERIALIZED VIEW heapmv SET ACCESS METHOD heap2; +DROP MATERIALIZED VIEW heapmv; + -- shouldn't trigger a table_rewrite event alter table rewriteme alter column foo type numeric(12,4); begin; |