Обсуждение: Re: pgsql: Fix event triggers for partitioned tables
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
Вложения
On 2018-Oct-08, Michael Paquier wrote: > 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? If you have a commit ready, please do, thanks. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
On 2018-Oct-08, Alvaro Herrera wrote: > On 2018-Oct-08, Michael Paquier wrote: > > > The fix is obvious because currentCommand is a pointer and not an Oid. > > Please see attached. Should I fix it myself? Pushed now, thanks. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
On Mon, Oct 08, 2018 at 10:39:23AM -0300, Alvaro Herrera wrote: > Pushed now, thanks. Thanks Alvaro for addressing the issue and back-patching. -- Michael
Вложения
On Mon, Oct 08, 2018 at 10:39:23AM -0300, Alvaro Herrera wrote: > Pushed now, thanks. Thanks Alvaro for addressing the issue and back-patching. -- Michael