Repository: incubator-hawq
Updated Branches:
  refs/heads/master 1c36c28c8 -> 256c0668c


HAWQ-1321. failNames wrongly uses memory context to build message when ANALYZE 
failed


Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/256c0668
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/256c0668
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/256c0668

Branch: refs/heads/master
Commit: 256c0668c94137565c24dc2057fbe3282187165c
Parents: 1c36c28
Author: Yi <y...@pivotal.io>
Authored: Tue Feb 14 09:43:16 2017 +1100
Committer: Yi <y...@pivotal.io>
Committed: Tue Feb 14 09:43:16 2017 +1100

----------------------------------------------------------------------
 src/backend/commands/analyze.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/256c0668/src/backend/commands/analyze.c
----------------------------------------------------------------------
diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c
index ae869da..65d9bd3 100644
--- a/src/backend/commands/analyze.c
+++ b/src/backend/commands/analyze.c
@@ -309,8 +309,6 @@ void analyzeStmt(VacuumStmt *stmt, List *relids, int 
preferred_seg_num)
        int                                     successCount = 0, failCount = 0;
        StringInfoData                  failNames;
 
-       initStringInfo(&failNames);
-
        /**
         * Ensure that an ANALYZE is requested.
         */
@@ -362,6 +360,7 @@ void analyzeStmt(VacuumStmt *stmt, List *relids, int 
preferred_seg_num)
 
        MemoryContextSwitchTo(analyzeStatementContext);
 
+       initStringInfo(&failNames);
 
        /*
         * This is a per relation context.
@@ -678,8 +677,12 @@ void analyzeStmt(VacuumStmt *stmt, List *relids, int 
preferred_seg_num)
                                                                      
RelationGetRelationName(candidateRelation),
                                                                      
edata->message);
                                                        failCount += 1;
+
+                                                       /* failNames uses 
memory from statement level context */
+                                                       
MemoryContextSwitchTo(analyzeStatementContext);
                                                        
appendStringInfo(&failNames, "%s", failCount == 1 ? "(" : ", ");
                                                        
appendStringInfo(&failNames, "%s", RelationGetRelationName(candidateRelation));
+                                                       
MemoryContextSwitchTo(oldcontext);
 
                                                        /* rollback this 
table's sub-transaction */
                                                        
RollbackAndReleaseCurrentSubTransaction();

Reply via email to