Feed ObjectAddress to event triggers for ALTER TABLE ATTACH/DETACH

These flavors of ALTER TABLE were already shaped to report the
ObjectAddress of the partition attached or detached, but this data was
not added to what is collected for event triggers.  The tests of
test_ddl_deparse are updated to show the modification in the data
reported.

Author: Hou Zhijie
Reviewed-by: Álvaro Herrera, Amit Kapila, Hayato Kuroda, Michael Paquier
Discussion: https://postgr.es/m/OS0PR01MB571626984BD099DADF53F38394899@OS0PR01MB5716.jpnprd01.prod.outlook.com
This commit is contained in:
Michael Paquier 2022-07-31 13:04:43 +09:00
parent 07ff701dbd
commit 43231423da
2 changed files with 10 additions and 10 deletions

View File

@ -5202,11 +5202,11 @@ ATExecCmd(List **wqueue, AlteredTableInfo *tab,
cur_pass, context);
Assert(cmd != NULL);
if (rel->rd_rel->relkind == RELKIND_PARTITIONED_TABLE)
ATExecAttachPartition(wqueue, rel, (PartitionCmd *) cmd->def,
context);
address = ATExecAttachPartition(wqueue, rel, (PartitionCmd *) cmd->def,
context);
else
ATExecAttachPartitionIdx(wqueue, rel,
((PartitionCmd *) cmd->def)->name);
address = ATExecAttachPartitionIdx(wqueue, rel,
((PartitionCmd *) cmd->def)->name);
break;
case AT_DetachPartition:
cmd = ATParseTransformCmd(wqueue, tab, rel, cmd, false, lockmode,
@ -5214,12 +5214,12 @@ ATExecCmd(List **wqueue, AlteredTableInfo *tab,
Assert(cmd != NULL);
/* ATPrepCmd ensures it must be a table */
Assert(rel->rd_rel->relkind == RELKIND_PARTITIONED_TABLE);
ATExecDetachPartition(wqueue, tab, rel,
((PartitionCmd *) cmd->def)->name,
((PartitionCmd *) cmd->def)->concurrent);
address = ATExecDetachPartition(wqueue, tab, rel,
((PartitionCmd *) cmd->def)->name,
((PartitionCmd *) cmd->def)->concurrent);
break;
case AT_DetachPartitionFinalize:
ATExecDetachPartitionFinalize(rel, ((PartitionCmd *) cmd->def)->name);
address = ATExecDetachPartitionFinalize(rel, ((PartitionCmd *) cmd->def)->name);
break;
default: /* oops */
elog(ERROR, "unrecognized alter table type: %d",

View File

@ -50,10 +50,10 @@ CREATE TABLE part2 (a int);
NOTICE: DDL test: type simple, tag CREATE TABLE
ALTER TABLE part ATTACH PARTITION part2 FOR VALUES FROM (101) to (200);
NOTICE: DDL test: type alter table, tag ALTER TABLE
NOTICE: subcommand: type ATTACH PARTITION desc <NULL>
NOTICE: subcommand: type ATTACH PARTITION desc table part2
ALTER TABLE part DETACH PARTITION part2;
NOTICE: DDL test: type alter table, tag ALTER TABLE
NOTICE: subcommand: type DETACH PARTITION desc <NULL>
NOTICE: subcommand: type DETACH PARTITION desc table part2
DROP TABLE part2;
ALTER TABLE part ADD PRIMARY KEY (a);
NOTICE: DDL test: type alter table, tag ALTER TABLE