Re: [HACKERS] CreateEventTrigStmt copy fix

2014-09-22 Thread Robert Haas
On Fri, Sep 19, 2014 at 12:09 PM, Petr Jelinek p...@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


-- 
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

2014-09-19 Thread Petr Jelinek

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


Re: [HACKERS] CreateEventTrigStmt copy fix

2014-09-19 Thread Michael Paquier
On Fri, Sep 19, 2014 at 11:09 AM, Petr Jelinek p...@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


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers