Re: [HACKERS] CreateEventTrigStmt copy fix
On Fri, Sep 19, 2014 at 12:09 PM, Petr Jelinek 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 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
Re: [HACKERS] CreateEventTrigStmt copy fix
On Fri, Sep 19, 2014 at 11:09 AM, Petr Jelinek 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 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
[HACKERS] 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 diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c index aa053a0..24addfb 100644 --- a/src/backend/nodes/copyfuncs.c +++ b/src/backend/nodes/copyfuncs.c @@ -3610,7 +3610,7 @@ _copyCreateEventTrigStmt(const CreateEventTrigStmt *from) CreateEventTrigStmt *newnode = makeNode(CreateEventTrigStmt); COPY_STRING_FIELD(trigname); - COPY_SCALAR_FIELD(eventname); + COPY_STRING_FIELD(eventname); COPY_NODE_FIELD(whenclause); COPY_NODE_FIELD(funcname); diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c index 719923e..9c19f44 100644 --- a/src/backend/nodes/equalfuncs.c +++ b/src/backend/nodes/equalfuncs.c @@ -1805,7 +1805,7 @@ static bool _equalCreateEventTrigStmt(const CreateEventTrigStmt *a, const CreateEventTrigStmt *b) { COMPARE_STRING_FIELD(trigname); - COMPARE_SCALAR_FIELD(eventname); + COMPARE_STRING_FIELD(eventname); COMPARE_NODE_FIELD(funcname); COMPARE_NODE_FIELD(whenclause); -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers