Hi Alvaro, On Sat, Oct 06, 2018 at 10:18:46PM +0000, Alvaro Herrera wrote: > Fix event triggers for partitioned tables > > Index DDL cascading on partitioned tables introduced a way for ALTER > TABLE to be called reentrantly. This caused an an important deficiency > in event trigger support to be exposed: on exiting the reentrant call, > the alter table state object was clobbered, causing a crash when the > outer alter table tries to finalize its processing. Fix the crash by > creating a stack of event trigger state objects. There are still ways > to cause things to misbehave (and probably other crashers) with more > elaborate tricks, but at least it now doesn't crash in the obvious > scenario.
This commit is producing a warning with my compiler: event_trigger.c:1764:9: note: in expansion of macro ‘OidIsValid’ Assert(OidIsValid(currentEventTriggerState->currentCommand)); The fix is obvious because currentCommand is a pointer and not an Oid. Please see attached. Should I fix it myself? -- Michael
diff --git a/src/backend/commands/event_trigger.c b/src/backend/commands/event_trigger.c index 2c1dc47541..9a702e4097 100644 --- a/src/backend/commands/event_trigger.c +++ b/src/backend/commands/event_trigger.c @@ -1761,7 +1761,7 @@ EventTriggerCollectAlterTableSubcmd(Node *subcmd, ObjectAddress address) return; Assert(IsA(subcmd, AlterTableCmd)); - Assert(OidIsValid(currentEventTriggerState->currentCommand)); + Assert(currentEventTriggerState->currentCommand != NULL); Assert(OidIsValid(currentEventTriggerState->currentCommand->d.alterTable.objectId)); oldcxt = MemoryContextSwitchTo(currentEventTriggerState->cxt);
signature.asc
Description: PGP signature