Обсуждение: CreateEventTrigStmt copy fix
Hi hackers, I was trying to create event trigger inside DO statement inside an extension SQL script and noticed that the new event trigger has empty evtevent field. After some tinkering with gdb I found out that the memory context switches sometimes clear the eventname in CreateEventTrigStmt struct. The reason for this is that _copyCreateEventTrigStmt uses COPY_SCALAR_FIELD on eventname instead of COPY_STRING_FIELD. Attached patch fixes this and also the same issue in _equalCreateEventTrigStmt. This should be back-patched to 9.3 where event triggers were introduced. -- Petr Jelinek http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
Вложения
On Fri, Sep 19, 2014 at 11:09 AM, Petr Jelinek <petr@2ndquadrant.com> wrote: > Hi hackers, > > I was trying to create event trigger inside DO statement inside an extension > SQL script and noticed that the new event trigger has empty evtevent field. > After some tinkering with gdb I found out that the memory context switches > sometimes clear the eventname in CreateEventTrigStmt struct. The reason for > this is that _copyCreateEventTrigStmt uses COPY_SCALAR_FIELD on eventname > instead of COPY_STRING_FIELD. > > Attached patch fixes this and also the same issue in > _equalCreateEventTrigStmt. > > This should be back-patched to 9.3 where event triggers were introduced. Nice catch! And no need to care much about outfuncs.c for this Node type. Regards, -- Michael
On Fri, Sep 19, 2014 at 12:09 PM, Petr Jelinek <petr@2ndquadrant.com> wrote: > I was trying to create event trigger inside DO statement inside an extension > SQL script and noticed that the new event trigger has empty evtevent field. > After some tinkering with gdb I found out that the memory context switches > sometimes clear the eventname in CreateEventTrigStmt struct. The reason for > this is that _copyCreateEventTrigStmt uses COPY_SCALAR_FIELD on eventname > instead of COPY_STRING_FIELD. > > Attached patch fixes this and also the same issue in > _equalCreateEventTrigStmt. > > This should be back-patched to 9.3 where event triggers were introduced. Done, thanks. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company