[TRAFODION-3009] Streamline error handling in Executor utility commands

Removed the need to allocate ComDiagsArea in advance for load command
by refactoring the ExeCliInterface::executeImmediate and
ExeCliInterface::executeImmediateExec methods.

Changes as per the review comments are also made in this commit


Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/37702da3
Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/37702da3
Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/37702da3

Branch: refs/heads/master
Commit: 37702da34e3c7f00735aaad0640d8f705caf19c8
Parents: 1f44166
Author: selvaganesang <[email protected]>
Authored: Thu Apr 5 05:43:35 2018 +0000
Committer: selvaganesang <[email protected]>
Committed: Thu Apr 5 05:43:35 2018 +0000

----------------------------------------------------------------------
 core/sql/bin/SqlciErrors.txt             |   2 +-
 core/sql/cli/Cli.cpp                     |   3 +-
 core/sql/cli/Context.cpp                 |   3 +-
 core/sql/executor/ExExeUtilCli.cpp       | 144 +++++++++++------------
 core/sql/executor/ExExeUtilCli.h         |   9 +-
 core/sql/executor/ExExeUtilCommon.cpp    |  33 +++---
 core/sql/executor/ExExeUtilExplain.cpp   |  28 ++---
 core/sql/executor/ExExeUtilGet.cpp       |  67 ++++-------
 core/sql/executor/ExExeUtilGetStats.cpp  |   6 +-
 core/sql/executor/ExExeUtilLoad.cpp      | 160 +++++++++-----------------
 core/sql/executor/ExExeUtilMisc.cpp      |  86 ++++++--------
 core/sql/executor/ExExeUtilVolTab.cpp    |   8 +-
 core/sql/executor/ExHdfsScan.cpp         |  14 ++-
 core/sql/executor/ExHdfsScan.h           |   1 +
 core/sql/sqlcomp/CmpDescribe.cpp         |   4 +-
 core/sql/sqlcomp/CmpSeabaseDDLcommon.cpp |   3 +-
 core/sql/sqlcomp/CmpSeabaseDDLschema.cpp |  12 +-
 17 files changed, 254 insertions(+), 329 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafodion/blob/37702da3/core/sql/bin/SqlciErrors.txt
----------------------------------------------------------------------
diff --git a/core/sql/bin/SqlciErrors.txt b/core/sql/bin/SqlciErrors.txt
index e66e170..ceb95ea 100644
--- a/core/sql/bin/SqlciErrors.txt
+++ b/core/sql/bin/SqlciErrors.txt
@@ -2,7 +2,7 @@
 1000 42000 99999 BEGINNER INFRM LOGONLY A syntax error occurred.
 1001 ZZZZZ 99999 ADVANCED CRTCL DIALOUT An internal error occurred in module 
$0~String0 on line $1~Int0. Details($2~String1).
 1002 ZZZZZ 99999 BEGINNER MAJOR DBADMIN Catalog $0~CatalogName does not exist.
-1003 ZZZZZ 99999 BEGINNER MINOR DBADMIN Schema $0~SchemaName does not exist.
+1003 ZZZZZ 99999 BEGINNER MINOR DBADMIN Schema $0~String0.$1~String1 does not 
exist.
 1004 ZZZZZ 99999 BEGINNER MINOR DBADMIN Object $0~TableName does not exist or 
object type is invalid for the current operation.
 1005 ZZZZZ 99999 BEGINNER MINOR DBADMIN Constraint $0~ConstraintName does not 
exist.
 1006 ZZZZZ 99999 BEGINNER MINOR DBADMIN Skipping authorization ID $0~Int0.

http://git-wip-us.apache.org/repos/asf/trafodion/blob/37702da3/core/sql/cli/Cli.cpp
----------------------------------------------------------------------
diff --git a/core/sql/cli/Cli.cpp b/core/sql/cli/Cli.cpp
index a6b5341..4a83a14 100644
--- a/core/sql/cli/Cli.cpp
+++ b/core/sql/cli/Cli.cpp
@@ -2375,9 +2375,10 @@ Lng32 SQLCLI_ProcessRetryQuery(
                                      SQLCHARSETCODE_UTF8,
                                      currContext,
                                      NULL);   
+                    ComDiagsArea *tmpDiagsArea = &diags;
                  retcode =  cliInterface->
                    executeImmediate( (char *) "SELECT TESTEXIT;", 
-                                     NULL, NULL, TRUE, NULL, 0,&diags);
+                                     NULL, NULL, TRUE, NULL, 0, &tmpDiagsArea);
                  //ignore errors from this call.
                            
                }

http://git-wip-us.apache.org/repos/asf/trafodion/blob/37702da3/core/sql/cli/Context.cpp
----------------------------------------------------------------------
diff --git a/core/sql/cli/Context.cpp b/core/sql/cli/Context.cpp
index bfb043f..09f1783 100644
--- a/core/sql/cli/Context.cpp
+++ b/core/sql/cli/Context.cpp
@@ -1604,7 +1604,8 @@ void ContextCli::completeSetAuthID(
       ExeCliInterface *cliInterface = new (exHeap()) ExeCliInterface(exHeap(),
                                                                      
SQLCHARSETCODE_UTF8
                                                                      
,this,NULL);   
-      cliInterface->executeImmediate((char *) "control query default * 
reset;", NULL, NULL, TRUE, NULL, 0,&diagsArea_);
+      ComDiagsArea *tmpDiagsArea = &diagsArea_;
+      cliInterface->executeImmediate((char *) "control query default * 
reset;", NULL, NULL, TRUE, NULL, 0, &tmpDiagsArea); 
    }
   
    if ((userID != databaseUserID_) ||

http://git-wip-us.apache.org/repos/asf/trafodion/blob/37702da3/core/sql/executor/ExExeUtilCli.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilCli.cpp 
b/core/sql/executor/ExExeUtilCli.cpp
index dc9c4e2..aa1553b 100644
--- a/core/sql/executor/ExExeUtilCli.cpp
+++ b/core/sql/executor/ExExeUtilCli.cpp
@@ -105,7 +105,6 @@ ExeCliInterface::ExeCliInterface(CollHeap * heap, Int32 
isoMapping,
        input_desc_(NULL),
        output_desc_(NULL),
        rs_input_maxsize_desc_(NULL),
-       diagsArea_(NULL),
        outputBuf_(NULL),
        inputBuf_(NULL),
        currContext_(currContext),
@@ -993,22 +992,23 @@ Lng32 ExeCliInterface::executeImmediateExec(const char * 
stmtStr,
                                           Lng32 * outputBufLen,
                                           NABoolean nullTerminate,
                                           Int64 * rowsAffected,
-                                           ComDiagsArea *diagsArea)
+                                           ComDiagsArea **diagsArea)
 {
   Lng32 retcode = 0;
+  Lng32 diagsCount = 0;
 
   retcode = exec();
   if (retcode < 0)
     {
       deallocStuff(module_, stmt_, sql_src_, input_desc_, output_desc_);
-      return retcode;
+      goto ExecReturn;
     }
 
   retcode = fetch();
   if (retcode < 0)
     {
       deallocStuff(module_, stmt_, sql_src_, input_desc_, output_desc_);
-      return retcode;
+      goto ExecReturn;
     }
 
   if ((outputBuf) &&
@@ -1028,55 +1028,76 @@ Lng32 ExeCliInterface::executeImmediateExec(const char 
* stmtStr,
        }
     }
 
-  Lng32 cliRetcode = -1;
+  Lng32 rc;
   if (retcode >= 0)
   {
-    cliRetcode = retcode;
     if (rowsAffected)
     {
       Int64 tmpRowsAffected = 0;
-      retcode = SQL_EXEC_GetDiagnosticsStmtInfo2(NULL, SQLDIAG_ROW_COUNT,
+      rc = SQL_EXEC_GetDiagnosticsStmtInfo2(NULL, SQLDIAG_ROW_COUNT,
         &tmpRowsAffected, NULL,
         0, NULL);
 
-      if(retcode == EXE_NUMERIC_OVERFLOW) 
+      if (rc == EXE_NUMERIC_OVERFLOW) 
       {
         GetRowsAffected(rowsAffected);
       }
       else
         *rowsAffected = tmpRowsAffected;
     }
+    rc = SQL_EXEC_GetDiagnosticsStmtInfo2(NULL, SQLDIAG_NUMBER,
+                       &diagsCount, NULL, 0, NULL);
+    // No need to passback the warnings of SQL_NO_DATA (100)
+    if (retcode == 100)
+       diagsCount--; 
   }
-  if (diagsArea != NULL) 
-     retcode = SQL_EXEC_MergeDiagnostics_Internal(*diagsArea);
-  clearGlobalDiags();
-
-  retcode = close();
-
+ExecReturn:
+  if (retcode < 0 ||  diagsCount > 0) 
+  {   
+     if (diagsArea != NULL) 
+     {
+         if (*diagsArea == NULL)
+            *diagsArea = ComDiagsArea::allocate(heap_); 
+         rc = SQL_EXEC_MergeDiagnostics_Internal(**diagsArea);
+     }
+     // if diagsArea is not passed in, retain the diagnostics info
+     // in ContextCli for it to be retrieved later 
+     // But, deallocate the statement
+     else
+     {
+        rc = close();
+        deallocStuff(module_, stmt_, sql_src_, input_desc_, output_desc_);
+        return retcode;
+     }
+  }
+  rc = close();
   deallocStuff(module_, stmt_, sql_src_, input_desc_, output_desc_);
-
   clearGlobalDiags();
-
-  return ((cliRetcode != -1) ? cliRetcode : retcode);
+  return retcode;
 }
-
-
-
+// When the globalDiags is not null, errors and warnings are
+// passed to the caller. If *globalsDiags points to NULL,
+// allocate ComDiagsArea and pass back the error or warnings
+// to the caller.
+// 
+// If *globalDiags points to ComDiagsArea already, pass back
+// the diagnostics conditions back to the caller after executing
+// the stmtStr along with new errors or warnings.
 Lng32 ExeCliInterface::executeImmediate(const char * stmtStr,
                                       char * outputBuf,
                                       Lng32 * outputBufLen,
                                       NABoolean nullTerminate,
                                       Int64 * rowsAffected,
                                       NABoolean monitorThis,
-                                      ComDiagsArea *globalDiags)
+                                      ComDiagsArea **globalDiags)
 {
   Lng32 retcode = 0;
 
   ComDiagsArea * tempDiags = NULL;
-  if (globalDiags)
+  if (globalDiags != NULL && *globalDiags != NULL)
   {
      tempDiags = ComDiagsArea::allocate(heap_);
-     tempDiags->mergeAfter(*globalDiags);
+     tempDiags->mergeAfter(**globalDiags);
   }
 
   clearGlobalDiags();
@@ -1094,17 +1115,22 @@ Lng32 ExeCliInterface::executeImmediate(const char * 
stmtStr,
                                 rowsAffected,
                                  globalDiags);
 ExecuteImmediateReturn:
-  if ((globalDiags) && (tempDiags))
+  if ((globalDiags))
     {
-      globalDiags->mergeAfter(*tempDiags);
+      // Allocate the diagnostics area if needed
+      // and populate the diagnostics conditions
+      if (*globalDiags == NULL && retcode != 0) {
+         *globalDiags = ComDiagsArea::allocate(getHeap());
+         SQL_EXEC_MergeDiagnostics_Internal(**globalDiags);
+      }
+      //  populate the diagnostics conditons passed in
+      if (tempDiags)
+         (*globalDiags)->mergeAfter(*tempDiags);
     }
 
   if (tempDiags)
-    {
-      tempDiags->clear();
       tempDiags->deAllocate();
-    }
-   return retcode;
+  return retcode;
 }
 
 short ExeCliInterface::fetchRowsPrologue(const char * sqlStrBuf, 
@@ -2085,11 +2111,6 @@ Lng32 
ExeCliInterface::retrieveSQLDiagnostics(ComDiagsArea *toDiags)
 {
   Lng32 retcode;
   ex_assert(toDiags != NULL, "ComDiagsArea is null");
-  if (diagsArea_ != NULL)
-    {
-      diagsArea_->clear();
-      diagsArea_->deAllocate();
-    }
   retcode = SQL_EXEC_MergeDiagnostics_Internal(*toDiags);
   SQL_EXEC_ClearDiagnostics(NULL);
   return retcode;
@@ -2099,41 +2120,22 @@ Lng32 
ExeCliInterface::retrieveSQLDiagnostics(ComDiagsArea *toDiags)
 ComDiagsArea *ExeCliInterface::allocAndRetrieveSQLDiagnostics(ComDiagsArea 
*&toDiags)
 {
   Lng32 retcode;
-
-  if (diagsArea_ != NULL)
-    {
-      diagsArea_->clear();
-      diagsArea_->deAllocate();
-    }
-  if (toDiags == NULL)
+  NABoolean daAllocated = FALSE; 
+  if (toDiags == NULL) { 
       toDiags = ComDiagsArea::allocate(heap_);
+      daAllocated = TRUE;
+  }
 
   retcode = SQL_EXEC_MergeDiagnostics_Internal(*toDiags);
   SQL_EXEC_ClearDiagnostics(NULL);
  
   if (retcode == 0)
      return toDiags;
-  else
+  else {
+     if (daAllocated)
+        toDiags->decrRefCount();
      return NULL;
-}
-
-void ExeCliInterface::retrieveOrSaveSQLDiagnostics(Lng32 cliRetcode, 
ComDiagsArea *diagsArea)
-{
-    Int32 rc;
-    Int32 diagsCondCount = 0;
-    rc = SQL_EXEC_GetDiagnosticsStmtInfo2(stmt_,
-                           SQLDIAG_NUMBER, &diagsCondCount,
-                           NULL, 0, NULL);
-    if (cliRetcode == 100)   
-       diagsCondCount--;
-    if (diagsCondCount > 0) { 
-       if (diagsArea == NULL) {
-          if (diagsArea_ == NULL) 
-             diagsArea_ = ComDiagsArea::allocate(heap_);
-          diagsArea = diagsArea_;
-       } 
-       SQL_EXEC_MergeDiagnostics_Internal(*diagsArea);
-    }
+  }
 }
 
 Lng32 ExeCliInterface::GetRowsAffected(Int64 *rowsAffected)
@@ -2177,7 +2179,7 @@ Lng32 ExeCliInterface::GetRowsAffected(Int64 
*rowsAffected)
 
 } // GetRowsAffected()
 
-Lng32 ExeCliInterface::holdAndSetCQD(const char * defaultName, const char * 
defaultValue, ComDiagsArea * globalDiags)
+Lng32 ExeCliInterface::holdAndSetCQD(const char * defaultName, const char * 
defaultValue, ComDiagsArea *globalDiags)
 {
   Lng32 cliRC;
   
@@ -2188,7 +2190,7 @@ Lng32 ExeCliInterface::holdAndSetCQD(const char * 
defaultName, const char * defa
   strcat(buf, " hold;");
 
   // hold the current value for defaultName
-  cliRC = executeImmediate(buf, NULL, NULL, TRUE, NULL, 0,globalDiags);
+  cliRC = executeImmediate(buf, NULL, NULL, TRUE, NULL, 0,&globalDiags);
   if (cliRC < 0)
     {
       return cliRC;
@@ -2200,7 +2202,7 @@ Lng32 ExeCliInterface::holdAndSetCQD(const char * 
defaultName, const char * defa
   strcat(buf, " '");
   strcat(buf, defaultValue);
   strcat(buf, "';");
-  cliRC = executeImmediate(buf, NULL, NULL, TRUE, NULL, 0,globalDiags);
+  cliRC = executeImmediate(buf, NULL, NULL, TRUE, NULL, 0,&globalDiags);
   if (cliRC < 0)
     {
       return cliRC;
@@ -2209,7 +2211,7 @@ Lng32 ExeCliInterface::holdAndSetCQD(const char * 
defaultName, const char * defa
   return 0;
 }
 
-Lng32 ExeCliInterface::restoreCQD(const char * defaultName, ComDiagsArea * 
globalDiags)
+Lng32 ExeCliInterface::restoreCQD(const char * defaultName, ComDiagsArea 
*globalDiags)
 {
   Lng32 cliRC;
 
@@ -2219,7 +2221,7 @@ Lng32 ExeCliInterface::restoreCQD(const char * 
defaultName, ComDiagsArea * globa
   strcpy(buf, "control query default ");
   strcat(buf, defaultName);
   strcat(buf, " reset;");
-  cliRC = executeImmediate(buf, NULL, NULL, TRUE, NULL, 0,globalDiags);
+  cliRC = executeImmediate(buf, NULL, NULL, TRUE, NULL, 0,&globalDiags);
   if (cliRC < 0)
     {
       return cliRC;
@@ -2229,7 +2231,7 @@ Lng32 ExeCliInterface::restoreCQD(const char * 
defaultName, ComDiagsArea * globa
   strcpy(buf, "control query default ");
   strcat(buf, defaultName);
   strcat(buf, " restore;");
-  cliRC = executeImmediate(buf, NULL, NULL, TRUE, NULL, 0,globalDiags);
+  cliRC = executeImmediate(buf, NULL, NULL, TRUE, NULL, 0,&globalDiags);
   if (cliRC < 0)
     {
       return cliRC;
@@ -2240,7 +2242,7 @@ Lng32 ExeCliInterface::restoreCQD(const char * 
defaultName, ComDiagsArea * globa
 
 Lng32 ExeCliInterface::getCQDval(const char * defaultName, 
                                 char * val,
-                                ComDiagsArea * globalDiags)
+                                ComDiagsArea *globalDiags)
 {
   Lng32 cliRC;
 
@@ -2276,11 +2278,11 @@ Lng32 ExeCliInterface::getCQDval(const char * 
defaultName,
   return 0;
 }
 
-Lng32 ExeCliInterface::setCQS(const char * shape, ComDiagsArea * globalDiags)
+Lng32 ExeCliInterface::setCQS(const char * shape, ComDiagsArea *globalDiags)
 {
   Lng32 cliRC;
 
-  cliRC = executeImmediate(shape, NULL, NULL, TRUE, NULL, 0,globalDiags);
+  cliRC = executeImmediate(shape, NULL, NULL, TRUE, NULL, 0,&globalDiags);
   if (cliRC < 0)
     {
       return cliRC;
@@ -2297,7 +2299,7 @@ Lng32 ExeCliInterface::resetCQS(ComDiagsArea * 
globalDiags)
   char buf[400];
   
   strcpy(buf, "control query shape cut ");
-  cliRC = executeImmediate(buf, NULL, NULL, TRUE, NULL, 0,globalDiags);
+  cliRC = executeImmediate(buf, NULL, NULL, TRUE, NULL, 0,&globalDiags);
   if (cliRC < 0)
     {
       return cliRC;

http://git-wip-us.apache.org/repos/asf/trafodion/blob/37702da3/core/sql/executor/ExExeUtilCli.h
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilCli.h b/core/sql/executor/ExExeUtilCli.h
index ce33de4..963b567 100644
--- a/core/sql/executor/ExExeUtilCli.h
+++ b/core/sql/executor/ExExeUtilCli.h
@@ -76,7 +76,7 @@ private:
                         NABoolean nullTerminate = TRUE,
                         Int64 * rowsAffected = NULL,
                         NABoolean monitorThis = FALSE,
-                        ComDiagsArea *globalDiags = NULL);
+                        ComDiagsArea **globalDiags = NULL);
 
   Lng32 executeImmediatePrepare(const char * stmt,
                                char * outputBuf = NULL,
@@ -100,7 +100,7 @@ private:
                             Lng32 * outputBufLen = NULL,
                             NABoolean nullTerminate = TRUE,
                             Int64 * rowsAffected = NULL,
-                            ComDiagsArea *diagsArea = NULL);
+                            ComDiagsArea **diagsArea = NULL);
  
   Lng32 prepare(const char * stmtStr,
                SQLMODULE_ID * module,
@@ -247,12 +247,9 @@ private:
 
   Lng32 retrieveSQLDiagnostics(ComDiagsArea *toDiags);
   ComDiagsArea *allocAndRetrieveSQLDiagnostics(ComDiagsArea *&toDiags);
-  void retrieveOrSaveSQLDiagnostics(Lng32 cliRetCode, ComDiagsArea *toDiags);
 
   CollHeap * getHeap() { return heap_; }
 
-  ComDiagsArea * getDiagsArea() { return diagsArea_; }
-
   char * outputBuf() { return outputBuf_; };
   Int32  outputDatalen() { return outputDatalen_; };
 
@@ -374,8 +371,6 @@ private:
   Int32 numQuadFields_;
   struct SQLCLI_QUAD_FIELDS * quadFields_;
 
-  ComDiagsArea * diagsArea_;
-
   CollHeap * heap_;
 
   ContextCli * currContext_;

http://git-wip-us.apache.org/repos/asf/trafodion/blob/37702da3/core/sql/executor/ExExeUtilCommon.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilCommon.cpp 
b/core/sql/executor/ExExeUtilCommon.cpp
index 09f7126..450dd74 100644
--- a/core/sql/executor/ExExeUtilCommon.cpp
+++ b/core/sql/executor/ExExeUtilCommon.cpp
@@ -204,7 +204,6 @@ ExExeUtilTcb::ExExeUtilTcb(const ComTdbExeUtil & 
exe_util_tdb,
                                             parentQid);
 
   diagsArea_ = NULL;
-  //setDiagsArea(ComDiagsArea::allocate(getHeap()));
   
   pqStep_ = PROLOGUE_;
 
@@ -441,11 +440,10 @@ Lng32 ExExeUtilTcb::changeAuditAttribute(char * tableName,
     strcat(stmt, " no label update");
 
   strcat(stmt, ";");
-
+  ComDiagsArea *diagsArea = getDiagsArea();
   retcode = cliInterface()->executeImmediate
-    (stmt, NULL, NULL, TRUE, NULL, 0,
-     &(masterGlob->getStatement()->getContext()->diags()));
-
+    (stmt, NULL, NULL, TRUE, NULL, 0, &diagsArea); 
+  setDiagsArea(diagsArea);
   masterGlob->getStatement()->getContext()->resetSqlParserFlags(0x400); // 
ALLOW_AUDIT_CHANGE
   
   if (retcode < 0)
@@ -463,7 +461,7 @@ Lng32 ExExeUtilTcb::changeAuditAttribute(char * tableName,
 
 void ExExeUtilTcb::handleErrors(Lng32 rc)
 { 
-  setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+  cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
 }
 
 short ExExeUtilTcb::initializeInfoList(Queue* &infoList)
@@ -669,7 +667,7 @@ short ExExeUtilTcb::executeQuery(char * task,
            char * stringParam1 = NULL;
            Lng32   intParam1 = ComDiags_UnInitialized_Int;
 
-            
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+            cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
             if (getDiagsArea() != NULL)
                retcode = 0;
            if (moveErrorRow)
@@ -858,7 +856,7 @@ Lng32 ExExeUtilTcb::setCS(const char * csName, char * 
csValue,
 
   cliRC = 
     cliInterface->executeImmediate(buf, NULL, NULL, TRUE, NULL,FALSE,
-                                  globalDiags);
+                                  &globalDiags);
   if (cliRC < 0)
     {
       return cliRC;
@@ -879,7 +877,7 @@ Lng32 ExExeUtilTcb::resetCS(const char * csName,
   strcat(buf, csName);
   strcat(buf, "' reset;");
   cliRC = cliInterface->executeImmediate(buf, NULL, NULL, TRUE, NULL,FALSE,
-                                        globalDiags);
+                                        &globalDiags);
   if (cliRC < 0)
     {
       return cliRC;
@@ -1052,7 +1050,7 @@ short ExExeUtilTcb::setSystemVersion()
                                         sysVersionStr_, &sysVersionStrLen_);
       if (cliRC < 0)
        {
-          
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+          cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
          return -1;
        }
       
@@ -1121,7 +1119,7 @@ short ExExeUtilTcb::getObjectUid(char * catName, char * 
schName,
                                     uid, &uidLen);
   if (cliRC < 0)
     {
-      
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+      cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
       return -1;
     }
   uid[uidLen] = 0;
@@ -1459,12 +1457,21 @@ short ExExeUtilTcb::alterAuditFlag(NABoolean audited, 
char * tableName,
 
 short ExExeUtilTcb::handleError()
 {
-  return ex_tcb::handleError(&qparent_, getDiagsArea());
+  short rc = ex_tcb::handleError(&qparent_, getDiagsArea());
+  diagsArea_->deAllocate();
+  diagsArea_ = NULL;
+  return rc;
 }
 
 short ExExeUtilTcb::handleDone()
 {
-  return ex_tcb::handleDone(&qparent_, getDiagsArea());
+  short rc = ex_tcb::handleDone(&qparent_, getDiagsArea());
+  if (diagsArea_ != NULL)
+  { 
+     diagsArea_->deAllocate();
+     diagsArea_ = NULL;
+  }
+  return rc;
 }
     
 short ExExeUtilTcb::createServer(char *serverName,

http://git-wip-us.apache.org/repos/asf/trafodion/blob/37702da3/core/sql/executor/ExExeUtilExplain.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilExplain.cpp 
b/core/sql/executor/ExExeUtilExplain.cpp
index 7d9f99c..7e12a27 100644
--- a/core/sql/executor/ExExeUtilExplain.cpp
+++ b/core/sql/executor/ExExeUtilExplain.cpp
@@ -237,7 +237,7 @@ short ExExeUtilDisplayExplainTcb::work()
              executeImmediate("control session 'EXPLAIN' 'ON';");
            if (retcode < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                pstate.step_ = HANDLE_ERROR_;
                break;
              }
@@ -249,7 +249,7 @@ short ExExeUtilDisplayExplainTcb::work()
                                         "__EXPL_STMT_NAME__");
            if (retcode < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                pstate.step_ = HANDLE_ERROR_;
                break;
              }
@@ -272,7 +272,7 @@ short ExExeUtilDisplayExplainTcb::work()
            
            if (retcode < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                pstate.step_ = HANDLE_ERROR_;
                break;
              }
@@ -362,7 +362,7 @@ short ExExeUtilDisplayExplainTcb::work()
            retcode = cliInterface()->fetchRowsPrologue(explainQuery_);
            if (retcode < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                pstate.step_ = HANDLE_ERROR_;
                break;
              }
@@ -389,7 +389,7 @@ short ExExeUtilDisplayExplainTcb::work()
            retcode = cliInterface()->fetch();
            if (retcode < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                pstate.step_ = HANDLE_ERROR_;
                break;
              }
@@ -452,7 +452,7 @@ short ExExeUtilDisplayExplainTcb::work()
            retcode = cliInterface()->fetch();
            if (retcode < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                pstate.step_ = HANDLE_ERROR_;
                break;
              }
@@ -567,7 +567,7 @@ short ExExeUtilDisplayExplainTcb::work()
            retcode = cliInterface()->fetchRowsEpilogue(explainQuery_);
            if (retcode < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
              }
            
            retcode = 
@@ -575,7 +575,7 @@ short ExExeUtilDisplayExplainTcb::work()
                                           input_desc_, output_desc_);
            if (retcode < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
              }
 
            if (exeUtilTdb().getStmtName() == NULL)
@@ -593,7 +593,7 @@ short ExExeUtilDisplayExplainTcb::work()
              executeImmediate("control session reset 'EXPLAIN';");
            if (retcode < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
              }
            
            if (pstate.step_ == FETCH_EPILOGUE_AND_RETURN_ERROR_)
@@ -3916,7 +3916,7 @@ short ExExeUtilDisplayExplainComplexTcb::work()
                // Explain will return 'info not available' in its
                // description field.
                // All other errors are reported.
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                if (exeUtilTdb().loadIfExists() &&
                     getDiagsArea()->contains(-1055))
                  {
@@ -3986,7 +3986,7 @@ short ExExeUtilDisplayExplainComplexTcb::work()
                                         FALSE, exeUtilTdb().isVolatile());
            if (cliRC < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                step_ = DROP_AND_ERROR_;
                break;
              }
@@ -4210,7 +4210,7 @@ short ExExeUtilDisplayExplainShowddlTcb::work()
 
                if (cliRC < 0)
                  {
-                    
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                    cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                    step_ = ERROR_;
                    break;
                  }
@@ -4226,7 +4226,7 @@ short ExExeUtilDisplayExplainShowddlTcb::work()
 
                if (cliRC < 0)
                  {
-                    
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                    cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                    step_ = ERROR_;
                    break;
                  }
@@ -4251,7 +4251,7 @@ short ExExeUtilDisplayExplainShowddlTcb::work()
 
            if (cliRC < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                step_ = ERROR_;
                break;
              }

http://git-wip-us.apache.org/repos/asf/trafodion/blob/37702da3/core/sql/executor/ExExeUtilGet.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilGet.cpp 
b/core/sql/executor/ExExeUtilGet.cpp
index 2ce8607..c77260e 100644
--- a/core/sql/executor/ExExeUtilGet.cpp
+++ b/core/sql/executor/ExExeUtilGet.cpp
@@ -689,7 +689,7 @@ Lng32 ExExeUtilGetMetadataInfoTcb::getUsingView(Queue * 
infoList,
            cliRC = cliInterface()->fetchRowsPrologue(query);
            if (cliRC < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                vStep_ = VIEWS_ERROR_;
                break;
              }
@@ -703,7 +703,7 @@ Lng32 ExExeUtilGetMetadataInfoTcb::getUsingView(Queue * 
infoList,
            cliRC = cliInterface()->fetch();
            if (cliRC < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                vStep_ = VIEWS_ERROR_;
                break;
              }
@@ -731,7 +731,7 @@ Lng32 ExExeUtilGetMetadataInfoTcb::getUsingView(Queue * 
infoList,
            cliRC = cliInterface()->fetchRowsEpilogue(0);
            if (cliRC < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                vStep_ = VIEWS_ERROR_;
                break;
              }
@@ -845,7 +845,7 @@ Lng32 ExExeUtilGetMetadataInfoTcb::getUsedObjects(Queue * 
infoList,
            cliRC = cliInterface()->fetchRowsPrologue(query);
            if (cliRC < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                vStep_ = VIEWS_ERROR_;
                break;
              }
@@ -859,7 +859,7 @@ Lng32 ExExeUtilGetMetadataInfoTcb::getUsedObjects(Queue * 
infoList,
            cliRC = cliInterface()->fetch();
            if (cliRC < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                vStep_ = VIEWS_ERROR_;
                break;
              }
@@ -887,7 +887,7 @@ Lng32 ExExeUtilGetMetadataInfoTcb::getUsedObjects(Queue * 
infoList,
            cliRC = cliInterface()->fetchRowsEpilogue(0);
            if (cliRC < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                vStep_ = VIEWS_ERROR_;
                break;
              }
@@ -1419,7 +1419,7 @@ Int32 ExExeUtilGetMetadataInfoTcb::getAuthID(
   cliRC = fetchAllRows(infoList_, queryBuf_, numOutputEntries_, FALSE, rc);
   if (cliRC < 0) 
   {
-    
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+    cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
     return NA_UserIdDefault;
   }
 
@@ -1493,7 +1493,7 @@ char * ExExeUtilGetMetadataInfoTcb::getRoleList(
   cliRC = fetchAllRows(infoList_, queryBuf_, numOutputEntries_, FALSE, rc);
   if (cliRC < 0)
   {
-    
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+    cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
     return NULL;
   }
 
@@ -1813,9 +1813,7 @@ short ExExeUtilGetMetadataInfoTcb::work()
            {
                if (!CmpCommon::context()->isAuthorizationEnabled())
                {
-                  ComDiagsArea * diagsArea = getDiagsArea();
-                  ExRaiseSqlError(getHeap(), &diagsArea, 
-CAT_AUTHORIZATION_NOT_ENABLED);
-                  setDiagsArea(diagsArea);
+                  ExRaiseSqlError(getHeap(), &diagsArea_, 
-CAT_AUTHORIZATION_NOT_ENABLED);
                   step_ = HANDLE_ERROR_;
                   break;
                }
@@ -2273,11 +2271,9 @@ short ExExeUtilGetMetadataInfoTcb::work()
                   // easier to just return with an error.
                   if (authID == 0)
                     { 
-                      ComDiagsArea * diagsArea = getDiagsArea();
-                      ExRaiseSqlError(getHeap(), &diagsArea, -8732,
+                      ExRaiseSqlError(getHeap(), &diagsArea_, -8732,
                           NULL, NULL, NULL,
                           getMItdb().getParam1());
-                      setDiagsArea(diagsArea);
                       step_ = HANDLE_ERROR_;
                       break;
                     }
@@ -2288,11 +2284,9 @@ short ExExeUtilGetMetadataInfoTcb::work()
                        // error if authID is not a role
                        if (!CmpSeabaseDDLauth::isRoleID(authID) && authID != 
PUBLIC_USER)
                         {
-                          ComDiagsArea * diagsArea = getDiagsArea();
-                          ExRaiseSqlError(getHeap(), &diagsArea, 
-CAT_IS_NOT_A_ROLE, 
+                          ExRaiseSqlError(getHeap(), &diagsArea_, 
-CAT_IS_NOT_A_ROLE, 
                               NULL, NULL, NULL,
                               getMItdb().getParam1());
-                          setDiagsArea(diagsArea);
                           step_ = HANDLE_ERROR_;
                           break;
                         }
@@ -2303,11 +2297,9 @@ short ExExeUtilGetMetadataInfoTcb::work()
                       // Return an error if authID is not a user
                       if (!CmpSeabaseDDLauth::isUserID(authID))
                         {
-                          ComDiagsArea * diagsArea = getDiagsArea();
-                          ExRaiseSqlError(getHeap(), &diagsArea, 
-CAT_IS_NOT_A_USER, 
+                          ExRaiseSqlError(getHeap(), &diagsArea_, 
-CAT_IS_NOT_A_USER, 
                               NULL, NULL, NULL,
                               getMItdb().getParam1());
-                          setDiagsArea(diagsArea);
                           step_ = HANDLE_ERROR_;
                           break;
                         }
@@ -2636,7 +2628,7 @@ short ExExeUtilGetMetadataInfoTcb::work()
            if (fetchAllRows(infoList_, queryBuf_, numOutputEntries_,
                             FALSE, retcode) < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                step_ = HANDLE_ERROR_;
                break;
              }
@@ -4239,7 +4231,7 @@ short ExExeUtilGetHiveMetadataInfoTcb::work()
            retcode = fetchAllHiveRows(infoList_, 1, rc);
            if (retcode < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                step_ = HANDLE_ERROR_;
                break;
              }
@@ -5069,10 +5061,8 @@ short ExExeUtilLobShowddlTcb::fetchRows(char * query, 
short &rc)
     fetchAllRows(infoList_, query, 1, FALSE, rc);
   if (cliRC < 0) 
     {
-      
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
-
+      cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
       step_ = HANDLE_ERROR_;
-
       return -1;
     }
   
@@ -5523,13 +5513,11 @@ short ExExeUtilHiveMDaccessTcb::work()
             if (!retStatus)
               {
                 Lng32 intParam1 =  hiveMD_->getErrCode();
-                ComDiagsArea *diagsArea =  getDiagsArea();
-                ExRaiseSqlError(getHeap(), &diagsArea, -1190, 
+                ExRaiseSqlError(getHeap(), &diagsArea_, -1190, 
                        &intParam1, NULL, NULL,
                        hiveMD_->getErrMethodName(),
                        hiveMD_->getErrCodeStr(),
                        hiveMD_->getErrDetail());
-                setDiagsArea(diagsArea);
                 step_ = HANDLE_ERROR_;
                 break;
               }
@@ -5546,13 +5534,11 @@ short ExExeUtilHiveMDaccessTcb::work()
                 HVC_RetCode retCode = HiveClient_JNI::getAllSchemas((NAHeap 
*)getHeap(), schNames_);
                 if ((retCode != HVC_OK) && (retCode != HVC_DONE)) 
                   {
-                   ComDiagsArea * diagsArea = getDiagsArea();
-                   ExRaiseSqlError(getHeap(), &diagsArea, -1190, 
+                   ExRaiseSqlError(getHeap(), &diagsArea_, -1190, 
                            (Lng32 *)&retCode, NULL, NULL, 
                            (char*)"HiveClient_JNI::getAllSchemas()",
                            HiveClient_JNI::getErrorText(retCode),
                            GetCliGlobals()->getJniErrorStr());
-                    setDiagsArea(diagsArea);
                     step_ = HANDLE_ERROR_;
                     break;
                   }
@@ -5607,23 +5593,20 @@ short ExExeUtilHiveMDaccessTcb::work()
                 HVC_RetCode retCode = HiveClient_JNI::getAllTables((NAHeap 
*)getHeap(), currSch, tblNames_);
                 if (retCode == HVC_ERROR_EXISTS_EXCEPTION)
                   {
-                   ComDiagsArea * diagsArea = getDiagsArea();
-                   ExRaiseSqlError(getHeap(), &diagsArea, -1003, 
+                   ExRaiseSqlError(getHeap(), &diagsArea_, -1003, 
                            NULL, NULL, NULL, 
-                           (NAString("hive") + "." + currSch).data());
-                    setDiagsArea(diagsArea);
+                           hiveCat_,
+                           hiveSch_);
                     step_ = HANDLE_ERROR_;
                     break;
                   }
                 else if ((retCode != HVC_OK) && (retCode != HVC_DONE)) 
                   {
-                   ComDiagsArea * diagsArea = getDiagsArea();
-                   ExRaiseSqlError(getHeap(), &diagsArea, -1190, 
+                   ExRaiseSqlError(getHeap(), &diagsArea_, -1190, 
                            (Lng32 *)&retCode, NULL, NULL, 
                            (char*)"HiveClient_JNI::getAllTables()",
                            HiveClient_JNI::getErrorText(retCode),
                            GetCliGlobals()->getJniErrorStr());
-                    setDiagsArea(diagsArea);
                     step_ = HANDLE_ERROR_;
                     break;
                   }
@@ -5807,11 +5790,9 @@ short ExExeUtilHiveMDaccessTcb::work()
                char strP[300];
                sprintf(strP, "Datatype %s is not supported.", 
                         (hcd ? hcd->type_ : hpd->type_));
-                ComDiagsArea *diagsArea = getDiagsArea();
-                ExRaiseSqlError(getHeap(), &diagsArea, 
-CLI_GET_METADATA_INFO_ERROR,
+                ExRaiseSqlError(getHeap(), &diagsArea_, 
-CLI_GET_METADATA_INFO_ERROR,
                       NULL, NULL, NULL,
                       strP);
-                setDiagsArea(diagsArea);
                step_ = HANDLE_ERROR_;
                break;
              }
@@ -7065,9 +7046,7 @@ short ExExeUtilClusterStatsTcb::work()
               }
             else if (retcode < 0)
               {
-                ComDiagsArea *diagsArea = getDiagsArea();
-                ExRaiseSqlError(getHeap(), &diagsArea, -8451);
-                setDiagsArea(diagsArea);
+                ExRaiseSqlError(getHeap(), &diagsArea_, -8451);
                 step_ = HANDLE_ERROR_;
                 break;
               }

http://git-wip-us.apache.org/repos/asf/trafodion/blob/37702da3/core/sql/executor/ExExeUtilGetStats.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilGetStats.cpp 
b/core/sql/executor/ExExeUtilGetStats.cpp
index bfd9db2..1f32971 100644
--- a/core/sql/executor/ExExeUtilGetStats.cpp
+++ b/core/sql/executor/ExExeUtilGetStats.cpp
@@ -979,7 +979,7 @@ short ExExeUtilGetStatisticsTcb::work()
            cliRC = cliInterface()->fetchRowsPrologue(statsQuery_);
            if (cliRC < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                step_ = HANDLE_ERROR_;
                break;
              }
@@ -994,7 +994,7 @@ short ExExeUtilGetStatisticsTcb::work()
            cliRC = cliInterface()->fetch();
            if (cliRC < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                step_ = HANDLE_ERROR_;
                break;
              }
@@ -1130,7 +1130,7 @@ short ExExeUtilGetStatisticsTcb::work()
            cliRC = cliInterface()->fetch();
            if (cliRC < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                step_ = HANDLE_ERROR_;
                break;
              }

http://git-wip-us.apache.org/repos/asf/trafodion/blob/37702da3/core/sql/executor/ExExeUtilLoad.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilLoad.cpp 
b/core/sql/executor/ExExeUtilLoad.cpp
index 33a93f8..d3c5c8d 100644
--- a/core/sql/executor/ExExeUtilLoad.cpp
+++ b/core/sql/executor/ExExeUtilLoad.cpp
@@ -139,10 +139,8 @@ short ExExeUtilCreateTableAsTcb::work()
            // allow a user transaction if NO LOAD was specified
            if (xnAlreadyStarted && !ctaTdb().noLoad())
               {
-                ComDiagsArea *diagsArea = getDiagsArea();
-                ExRaiseSqlError(getHeap(), &diagsArea, -20123, NULL, NULL, 
NULL,
+                ExRaiseSqlError(getHeap(), &diagsArea_, -20123, NULL, NULL, 
NULL,
                                 "This DDL operation");
-                setDiagsArea(diagsArea);
                 step_ = ERROR_;
                 break;
               }
@@ -185,8 +183,7 @@ short ExExeUtilCreateTableAsTcb::work()
                  }
                else
                  {
-                   
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
-                   
+                   cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                    step_ = ERROR_;
                    break;
                  }
@@ -342,7 +339,7 @@ short ExExeUtilCreateTableAsTcb::work()
                 &rowsAffected);
            if (cliRC < 0)
             {
-              
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+              cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
               step_ = HANDLE_ERROR_;
             }
             else
@@ -428,7 +425,7 @@ short ExExeUtilCreateTableAsTcb::work()
               cliInterface()->setIsoMapping(savedIsoMapping);
              if (cliRC < 0)
               {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                 step_ = HANDLE_ERROR_;
               }
               else
@@ -447,7 +444,7 @@ short ExExeUtilCreateTableAsTcb::work()
                 &rowsAffected);
            if (cliRC < 0)
            {
-              
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+              cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
               step_ = HANDLE_ERROR_;
             }
             else
@@ -481,7 +478,7 @@ short ExExeUtilCreateTableAsTcb::work()
            NADELETEBASIC(usQuery, getHeap());
            if (cliRC < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                step_ = HANDLE_ERROR_;
                break;
              }
@@ -796,7 +793,7 @@ ExWorkProcRetcode ExExeUtilAqrWnrInsertTcb::work()
 
         if (cliRC < 0)
         {
-          
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+          cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
           SETSTEP(ERROR_);
         }
         else
@@ -821,7 +818,7 @@ ExWorkProcRetcode ExExeUtilAqrWnrInsertTcb::work()
         NADELETEBASIC(query_, getMyHeap());
         if (cliRC < 0)
         {
-          
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+          cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
           SETSTEP(ERROR_);
         }
         else
@@ -960,7 +957,7 @@ ExWorkProcRetcode ExExeUtilAqrWnrInsertTcb::work()
         {
         // mjh - tbd - warning or EMS message to give context to error on
         // delete after error on the insert?
-          
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+          cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
         }
         else
           masterGlob->setAqrWnrInsertCleanedup();
@@ -1114,7 +1111,6 @@ short ExExeUtilHBaseBulkLoadTcb::work()
   short rc;
   Lng32 errorRowCount = 0;
   int len;
-  ComDiagsArea *diagsArea = NULL;
 
   // if no parent request, return
   if (qparent_.down->isEmpty())
@@ -1148,9 +1144,7 @@ short ExExeUtilHBaseBulkLoadTcb::work()
           !hblTdb().getIndexTableOnly())
       {
         //8111 - Transactions are not allowed with Bulk load.
-        ComDiagsArea * diagsArea = getDiagsArea();
-        ExRaiseSqlError(getHeap(), &diagsArea, -8111);
-        setDiagsArea(diagsArea);
+        ExRaiseSqlError(getHeap(), &diagsArea_, -8111);
         step_ = LOAD_ERROR_;
           break;
       }
@@ -1222,7 +1216,7 @@ short ExExeUtilHBaseBulkLoadTcb::work()
 
       if (cliRC < 0)
       {
-        
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+        cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
         step_ = LOAD_ERROR_;
         break;
       }
@@ -1251,14 +1245,12 @@ short ExExeUtilHBaseBulkLoadTcb::work()
       {
          Lng32 cliError = 0;
         Lng32 intParam1 = -retcode;
-        diagsArea = NULL;
-        ExRaiseSqlError(getHeap(), &diagsArea,
+        ExRaiseSqlError(getHeap(), &diagsArea_,
                           (ExeErrorCode)(8448), NULL, &intParam1,
                           &cliError, NULL,
                           " ",
                           getHbaseErrStr(retcode),
                           (char *)GetCliGlobals()->getJniErrorStr());
-        setDiagsArea(diagsArea);
         step_ = LOAD_END_ERROR_;
         break;
       }
@@ -1298,7 +1290,7 @@ short ExExeUtilHBaseBulkLoadTcb::work()
       clnpQuery = NULL;
       if (cliRC < 0)
       {
-        
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+        cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
         step_ = LOAD_END_ERROR_;
         break;
       }
@@ -1337,7 +1329,7 @@ short ExExeUtilHBaseBulkLoadTcb::work()
       diQuery = NULL;
       if (cliRC < 0)
       {
-        
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+        cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
         step_ = LOAD_END_ERROR_;
         break;
       }
@@ -1414,24 +1406,20 @@ short ExExeUtilHBaseBulkLoadTcb::work()
               
masterGlob->getStatement()->getContext()->setSqlParserFlags(0x20000);
             }
           }
-        diagsArea = getDiagsArea();
-        if (diagsArea == NULL) {
-           diagsArea = ComDiagsArea::allocate(getHeap());
-           setDiagsArea(diagsArea);
-        }
+        ComDiagsArea *diagsArea = getDiagsArea();
         cliRC = cliInterface()->executeImmediate(loadQuery,
             NULL,
             NULL,
             TRUE,
             &rowsAffected_,
             FALSE,
-            diagsArea);
+            &diagsArea);
         if (parserFlagSet)
             
masterGlob->getStatement()->getContext()->resetSqlParserFlags(0x20000);
+        setDiagsArea(diagsArea);
         if (cliRC < 0)
         {
           rowsAffected_ = 0;
-          
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
           step_ = LOAD_END_ERROR_;
           break;
         }
@@ -1469,7 +1457,7 @@ short ExExeUtilHBaseBulkLoadTcb::work()
         upsQuery = NULL;
         if (cliRC < 0)
         {
-          
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+          cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
           step_ = LOAD_ERROR_;
           break;
         }
@@ -1539,7 +1527,7 @@ short ExExeUtilHBaseBulkLoadTcb::work()
       if (cliRC < 0)
       {
         rowsAffected_ = 0;
-        
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+        cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
         setEndStatusMsg(" COMPLETION", len, TRUE);
         step_ = LOAD_END_ERROR_;
         break;
@@ -1586,7 +1574,7 @@ short ExExeUtilHBaseBulkLoadTcb::work()
 
       if (cliRC < 0)
       {
-        
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+        cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
         step_ = LOAD_END_ERROR_;
         break;
       }
@@ -1646,7 +1634,7 @@ short ExExeUtilHBaseBulkLoadTcb::work()
 
         if (cliRC < 0)
         {
-          
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+          cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
           step_ = LOAD_END_ERROR_;
         }
         else
@@ -1702,7 +1690,7 @@ short ExExeUtilHBaseBulkLoadTcb::work()
       up_entry->upState.setMatchNo(0);
       up_entry->upState.status = ex_queue::Q_NO_DATA;
 
-      diagsArea = up_entry->getDiagsArea();
+      ComDiagsArea *diagsArea = up_entry->getDiagsArea();
 
       if (diagsArea == NULL)
         diagsArea = ComDiagsArea::allocate(getMyHeap());
@@ -2017,12 +2005,12 @@ short 
ExExeUtilHBaseBulkUnLoadTcb::resetExplainSettings()
 {
   if (cliInterface()->executeImmediate("control session reset 'EXPLAIN';") < 0)
   {
-    
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+    cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
     return -1;
   }
   if (restoreCQD("generate_explain") < 0)
   {
-    
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+    cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
     return -1;
   }
   return 0;
@@ -2043,7 +2031,7 @@ short 
ExExeUtilHBaseBulkUnLoadTcb::getTrafodionScanTables()
 
   if (holdAndSetCQD("generate_explain", "ON") < 0)
   {
-    
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+    cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
     resetExplainSettings();
     return -1;
   }
@@ -2051,7 +2039,7 @@ short 
ExExeUtilHBaseBulkUnLoadTcb::getTrafodionScanTables()
   cliRC = cliInterface()->executeImmediate("control session 'EXPLAIN' 'ON';");
   if (cliRC < 0)
   {
-    
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+    cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
     resetExplainSettings();
     return cliRC;
   }
@@ -2059,7 +2047,7 @@ short 
ExExeUtilHBaseBulkUnLoadTcb::getTrafodionScanTables()
   cliRC = cliInterface()->allocStuff(module, stmt, sql_src, input_desc, 
output_desc, "__EXPL_STMT_NAME__");
   if (cliRC < 0)
   {
-    
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+    cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
     resetExplainSettings();
     return cliRC;
   }
@@ -2068,7 +2056,7 @@ short 
ExExeUtilHBaseBulkUnLoadTcb::getTrafodionScanTables()
   cliRC = cliInterface()->prepare(stmtStr, module, stmt, sql_src, input_desc, 
output_desc, NULL);
   if (cliRC < 0)
   {
-    
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+    cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
     cliInterface()->deallocStuff(module, stmt, sql_src, input_desc, 
output_desc);
     resetExplainSettings();
     return cliRC;
@@ -2100,7 +2088,7 @@ short 
ExExeUtilHBaseBulkUnLoadTcb::getTrafodionScanTables()
   cliRC = cliInterface()->fetchAllRows(tbls, (char*)qry_str.data(), 0, FALSE, 
FALSE, TRUE);
   if (cliRC < 0)
   {
-    
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+    cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
     cliInterface()->deallocStuff(module, stmt, sql_src, input_desc, 
output_desc);
     return cliRC;
   }
@@ -2113,7 +2101,7 @@ short 
ExExeUtilHBaseBulkUnLoadTcb::getTrafodionScanTables()
       cliRC = cliInterface()->deallocStuff(module, stmt, sql_src, input_desc, 
output_desc);
       if (cliRC < 0)
       {
-        
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+        cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
         return cliRC;
       }
     }
@@ -2139,7 +2127,7 @@ short 
ExExeUtilHBaseBulkUnLoadTcb::getTrafodionScanTables()
   cliRC = cliInterface()->deallocStuff(module, stmt, sql_src, input_desc, 
output_desc);
   if (cliRC < 0)
   {
-    
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+    cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
     return cliRC;
   }
   return snapshotsList_->entries();
@@ -2179,9 +2167,7 @@ short ExExeUtilHBaseBulkUnLoadTcb::work()
       if (xnAlreadyStarted  )
       {
         //8111 - Transactions are not allowed with Bulk unload.
-        ComDiagsArea * diagsArea = getDiagsArea();
-        ExRaiseSqlError(getHeap(), &diagsArea, -8111);
-        setDiagsArea(diagsArea);
+        ExRaiseSqlError(getHeap(), &diagsArea_, -8111);
         step_ = UNLOAD_ERROR_;
         break;
       }
@@ -2208,11 +2194,9 @@ short ExExeUtilHBaseBulkUnLoadTcb::work()
         if (exists)
         {
           //EXE_UNLOAD_FILE_EXISTS
-          ComDiagsArea * diagsArea = getDiagsArea();
-          ExRaiseSqlError(getHeap(), &diagsArea, -EXE_UNLOAD_FILE_EXISTS,
+          ExRaiseSqlError(getHeap(), &diagsArea_, -EXE_UNLOAD_FILE_EXISTS,
                   NULL, NULL, NULL,
                   hblTdb().getMergePath());
-          setDiagsArea(diagsArea);
           step_ = UNLOAD_END_ERROR_;
           break;
         }
@@ -2330,12 +2314,10 @@ short ExExeUtilHBaseBulkUnLoadTcb::work()
           hbcRetCode = 
ehi_->verifySnapshot(*snapshotsList_->at(i)->fullTableName, 
*snapshotsList_->at(i)->snapshotName, exist);
           if ( hbcRetCode == HBC_OK && !exist)
           {
-            ComDiagsArea * diagsArea = getDiagsArea();
-            ExRaiseSqlError(getHeap(), &diagsArea, -8112,
+            ExRaiseSqlError(getHeap(), &diagsArea_, -8112,
                   NULL, NULL, NULL,
                   snapshotsList_->at(i)->snapshotName->data(),
                   snapshotsList_->at(i)->fullTableName->data());
-            setDiagsArea(diagsArea);
             step_ = UNLOAD_END_ERROR_;
             break;
           }
@@ -2374,7 +2356,7 @@ short ExExeUtilHBaseBulkUnLoadTcb::work()
       if (cliRC < 0)
       {
         rowsAffected_ = 0;
-        
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+        cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
         step_ = UNLOAD_END_ERROR_;
         break;
       }
@@ -2881,11 +2863,9 @@ short ExExeUtilLobExtractTcb::work()
                      Lng32 cliError = 0;
                      
                      Lng32 intParam1 = 0;
-                     ComDiagsArea * diagsArea = getDiagsArea();
-                     ExRaiseSqlError(getHeap(), &diagsArea, 
+                     ExRaiseSqlError(getHeap(), &diagsArea_, 
                                      (ExeErrorCode)(8444), NULL, &intParam1, 
                                      &cliError, NULL, NULL);
-
                      step_ = HANDLE_ERROR_;
                    }
                }
@@ -3000,11 +2980,9 @@ short ExExeUtilLobExtractTcb::work()
                     lobHandle_,
                     lobHandleLen_))
                  {
-                   ComDiagsArea * diagsArea = getDiagsArea();
                    ExRaiseSqlError(getMyHeap(),
-                                   &diagsArea,
+                                   &diagsArea_,
                                    (ExeErrorCode)(EXE_INVALID_LOB_HANDLE));
-                    setDiagsArea(diagsArea);
                    step_ = HANDLE_ERROR_;
                    break;
                  }
@@ -3264,12 +3242,10 @@ short ExExeUtilLobExtractTcb::work()
                  {
                    Lng32 intParam1 = -retcode;
                    Lng32 cliError;
-                   ComDiagsArea * diagsArea = getDiagsArea();
-                   ExRaiseSqlError(getHeap(), &diagsArea, 
+                   ExRaiseSqlError(getHeap(), &diagsArea_, 
                                    (ExeErrorCode)(8442), NULL, &intParam1, 
                                    &cliError, NULL, 
(char*)"ExpLOBInterfaceSelect",
                                    getLobErrStr(intParam1));
-                    setDiagsArea(diagsArea);
                    step_ = HANDLE_ERROR_;
                    break;
                  }
@@ -3312,12 +3288,10 @@ short ExExeUtilLobExtractTcb::work()
                Lng32 cliError = 0;
 
                Lng32 intParam1 = -retcode;
-               ComDiagsArea * diagsArea = getDiagsArea();
-               ExRaiseSqlError(getHeap(), &diagsArea, 
+               ExRaiseSqlError(getHeap(), &diagsArea_, 
                                (ExeErrorCode)(8442), NULL, &intParam1, 
                                &cliError, NULL, 
(char*)"ExpLOBInterfaceSelectCursor",
                                getLobErrStr(intParam1));
-                setDiagsArea(diagsArea);
                step_ = HANDLE_ERROR_;
                break;
              }
@@ -3367,12 +3341,10 @@ short ExExeUtilLobExtractTcb::work()
                Lng32 cliError = 0;
 
                Lng32 intParam1 = -retcode;
-               ComDiagsArea * diagsArea = getDiagsArea();
-               ExRaiseSqlError(getHeap(), &diagsArea, 
+               ExRaiseSqlError(getHeap(), &diagsArea_, 
                                (ExeErrorCode)(8442), NULL, &intParam1, 
                                &cliError, NULL, 
(char*)"ExpLOBInterfaceSelectCursor",
                                getLobErrStr(intParam1));
-                setDiagsArea(diagsArea);
                step_ = HANDLE_ERROR_;
                break;
              }
@@ -3440,12 +3412,10 @@ short ExExeUtilLobExtractTcb::work()
                Lng32 cliError = 0;
 
                Lng32 intParam1 = -retcode;
-               ComDiagsArea * diagsArea = getDiagsArea();
-               ExRaiseSqlError(getHeap(), &diagsArea, 
+               ExRaiseSqlError(getHeap(), &diagsArea_, 
                                (ExeErrorCode)(8442), NULL, &intParam1, 
                                &cliError, NULL, 
(char*)"ExpLOBInterfaceSelectCursor",
                                getLobErrStr(intParam1));
-                setDiagsArea(diagsArea);
                step_ = HANDLE_ERROR_;
                break;
              } 
@@ -3634,11 +3604,9 @@ short ExExeUtilLobUpdateTcb::work()
                     lobHandle_,
                     lobHandleLen_))
                  {
-                   ComDiagsArea *diagsArea = getDiagsArea();
                    ExRaiseSqlError(getMyHeap(),
-                                   &diagsArea,
+                                   &diagsArea_,
                                    (ExeErrorCode)(EXE_INVALID_LOB_HANDLE));
-                    setDiagsArea(diagsArea);
                    step_ = HANDLE_ERROR_;
                    break;
                  }
@@ -3747,12 +3715,10 @@ short ExExeUtilLobUpdateTcb::work()
                Lng32 cliError = 0;
 
                Lng32 intParam1 = -retcode;
-               ComDiagsArea * diagsArea = getDiagsArea();
-               ExRaiseSqlError(getHeap(), &diagsArea, 
+               ExRaiseSqlError(getHeap(), &diagsArea_, 
                                (ExeErrorCode)(8442), NULL, &intParam1, 
                                &cliError, NULL, (char*)"ExpLOBInterfaceUpdate",
                                getLobErrStr(intParam1));
-                setDiagsArea(diagsArea);
                step_ = HANDLE_ERROR_;
                break;
              }  
@@ -3844,12 +3810,10 @@ short ExExeUtilLobUpdateTcb::work()
                Lng32 cliError = 0;
 
                Lng32 intParam1 = -retcode;
-               ComDiagsArea * diagsArea = getDiagsArea();
-               ExRaiseSqlError(getHeap(), &diagsArea, 
+               ExRaiseSqlError(getHeap(), &diagsArea_, 
                                (ExeErrorCode)(8442), NULL, &intParam1, 
                                &cliError, NULL, (char*)"ExpLOBInterfaceUpdate",
                                getLobErrStr(intParam1));
-                setDiagsArea(diagsArea);
                step_ = HANDLE_ERROR_;
                break;
              }  
@@ -3943,12 +3907,10 @@ short ExExeUtilLobUpdateTcb::work()
                Lng32 cliError = 0;
 
                Lng32 intParam1 = -retcode;
-               ComDiagsArea * diagsArea = getDiagsArea();
-               ExRaiseSqlError(getHeap(), &diagsArea, 
+               ExRaiseSqlError(getHeap(), &diagsArea_, 
                                (ExeErrorCode)(8442), NULL, &intParam1, 
                                &cliError, NULL, (char*)"ExpLOBInterfaceUpdate",
                                getLobErrStr(intParam1));
-                setDiagsArea(diagsArea);
                step_ = HANDLE_ERROR_;
                break;
              }  
@@ -4111,12 +4073,10 @@ short ExExeUtilFileExtractTcb::work()
                Lng32 cliError = 0;
 
                Lng32 intParam1 = -retcode;
-               ComDiagsArea * diagsArea = getDiagsArea();
-               ExRaiseSqlError(getHeap(), &diagsArea, 
+               ExRaiseSqlError(getHeap(), &diagsArea_, 
                                (ExeErrorCode)(8442), NULL, &intParam1, 
                                &cliError, NULL, 
(char*)"ExpLOBInterfaceSelectCursor/open",
                                getLobErrStr(intParam1));
-                setDiagsArea(diagsArea);
                step_ = HANDLE_ERROR_;
                break;
              }
@@ -4159,12 +4119,10 @@ short ExExeUtilFileExtractTcb::work()
                Lng32 cliError = 0;
 
                Lng32 intParam1 = -retcode;
-               ComDiagsArea * diagsArea = getDiagsArea();
-               ExRaiseSqlError(getHeap(), &diagsArea, 
+               ExRaiseSqlError(getHeap(), &diagsArea_, 
                                (ExeErrorCode)(8442), NULL, &intParam1, 
                                &cliError, NULL, 
(char*)"ExpLOBInterfaceSelectCursor/read",
                                getLobErrStr(intParam1));
-                setDiagsArea(diagsArea);
                step_ = HANDLE_ERROR_;
                break;
              }
@@ -4216,12 +4174,10 @@ short ExExeUtilFileExtractTcb::work()
                Lng32 cliError = 0;
 
                Lng32 intParam1 = -retcode;
-               ComDiagsArea * diagsArea = getDiagsArea();
-               ExRaiseSqlError(getHeap(), &diagsArea, 
+               ExRaiseSqlError(getHeap(), &diagsArea_, 
                                (ExeErrorCode)(8442), NULL, &intParam1, 
                                &cliError, NULL, 
(char*)"ExpLOBInterfaceSelectCursor/close",
                                getLobErrStr(intParam1));
-                setDiagsArea(diagsArea);
                step_ = HANDLE_ERROR_;
                break;
              }
@@ -4353,12 +4309,10 @@ short ExExeUtilFileLoadTcb::work()
                    Lng32 cliError = 0;
                    
                    Lng32 intParam1 = -retcode;
-                   ComDiagsArea * diagsArea = getDiagsArea();
-                   ExRaiseSqlError(getHeap(), &diagsArea, 
+                   ExRaiseSqlError(getHeap(), &diagsArea_, 
                                    (ExeErrorCode)(8442), NULL, &intParam1, 
                                    &cliError, NULL, 
(char*)"ExpLOBInterfaceCreate",
                                    getLobErrStr(intParam1));
-                    setDiagsArea(diagsArea);
                    step_ = HANDLE_ERROR_;
                    break;
                  }
@@ -4385,11 +4339,9 @@ short ExExeUtilFileLoadTcb::work()
                Lng32 cliError = 0;
 
                Lng32 intParam1 = -1;
-               ComDiagsArea * diagsArea = getDiagsArea();
-               ExRaiseSqlError(getHeap(), &diagsArea, 
+               ExRaiseSqlError(getHeap(), &diagsArea_, 
                                (ExeErrorCode)(8442), NULL, &intParam1, 
                                &cliError, NULL, (char*)"SourceFile open");
-                setDiagsArea(diagsArea);
                step_ = HANDLE_ERROR_;
                break;
              }
@@ -4429,11 +4381,9 @@ short ExExeUtilFileLoadTcb::work()
                Lng32 cliError = 0;
 
                Lng32 intParam1 = -1;
-               ComDiagsArea * diagsArea = getDiagsArea();
-               ExRaiseSqlError(getHeap(), &diagsArea, 
+               ExRaiseSqlError(getHeap(), &diagsArea_, 
                                (ExeErrorCode)(8442), NULL, &intParam1, 
                                &cliError, NULL, (char*)"SourceFile read");
-                setDiagsArea(diagsArea);
                step_ = HANDLE_ERROR_;
                break;
              }
@@ -4474,12 +4424,10 @@ short ExExeUtilFileLoadTcb::work()
                Lng32 cliError = 0;
 
                Lng32 intParam1 = -retcode;
-               ComDiagsArea * diagsArea = getDiagsArea();
-               ExRaiseSqlError(getHeap(), &diagsArea, 
+               ExRaiseSqlError(getHeap(), &diagsArea_, 
                                (ExeErrorCode)(8442), NULL, &intParam1, 
                                &cliError, NULL, (char*)"ExpLOBInterfaceInsert",
                                getLobErrStr(intParam1));
-                setDiagsArea(diagsArea);
                step_ = HANDLE_ERROR_;
                break;
              }
@@ -4506,12 +4454,10 @@ short ExExeUtilFileLoadTcb::work()
                Lng32 cliError = 0;
                
                Lng32 intParam1 = -retcode;
-               ComDiagsArea * diagsArea = getDiagsArea();
-               ExRaiseSqlError(getHeap(), &diagsArea, 
+               ExRaiseSqlError(getHeap(), &diagsArea_, 
                                (ExeErrorCode)(8442), NULL, &intParam1, 
                                &cliError, NULL, 
(char*)"ExpLOBInterfaceCloseFile",
                                getLobErrStr(intParam1));
-                setDiagsArea(diagsArea);
                step_ = HANDLE_ERROR_;
                break;
              }

http://git-wip-us.apache.org/repos/asf/trafodion/blob/37702da3/core/sql/executor/ExExeUtilMisc.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilMisc.cpp 
b/core/sql/executor/ExExeUtilMisc.cpp
index 277d5e1..8ae7124 100644
--- a/core/sql/executor/ExExeUtilMisc.cpp
+++ b/core/sql/executor/ExExeUtilMisc.cpp
@@ -102,7 +102,7 @@ short ExExeUtilFastDeleteTcb::doPurgedataCat(char * stmt)
   cliRC = holdAndSetCQD("EXE_PARALLEL_PURGEDATA", "OFF");
   if (cliRC < 0)
     {
-      
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+      cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
       return -1;
     }
 
@@ -111,7 +111,7 @@ short ExExeUtilFastDeleteTcb::doPurgedataCat(char * stmt)
 
   if (cliRC < 0)
     {
-      
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+      cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
       restoreCQD("EXE_PARALLEL_PURGEDATA");
       return -1;
     }
@@ -156,7 +156,7 @@ short ExExeUtilFastDeleteTcb::doLabelPurgedata(char * 
objectName,
 
   if (cliRC < 0)
     {
-      
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+      cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
       retcode = -1;
       goto cleanUpAndReturn;
     }
@@ -214,7 +214,7 @@ short ExExeUtilFastDeleteTcb::doFastDelete(char * 
objectName,
     executeImmediate("control query shape hold;");
   if (cliRC < 0)
     {
-      
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+      cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
       retcode = -1;
       goto cleanUpAndReturn;
     }
@@ -223,7 +223,7 @@ short ExExeUtilFastDeleteTcb::doFastDelete(char * 
objectName,
     cliInterface()->executeImmediate("control query shape esp_exchange(cut);");
   if (cliRC < 0)
     {
-      
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+      cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
       retcode = -1;
       goto cleanUpAndReturn;
     }
@@ -235,7 +235,7 @@ short ExExeUtilFastDeleteTcb::doFastDelete(char * 
objectName,
        executeImmediate("control query default 
mv_internal_ignore_uninitialized 'ON';");
       if (cliRC < 0)
        {
-          
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+          cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
          retcode = -1;
          goto cleanUpAndReturn;
        }
@@ -275,7 +275,7 @@ short ExExeUtilFastDeleteTcb::doFastDelete(char * 
objectName,
 
   if (cliRC < 0)
     {
-      
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+      cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
       retcode = -1;
       goto cleanUpAndReturn;
     }
@@ -333,11 +333,9 @@ short ExExeUtilFastDeleteTcb::injectError(const char * val)
       ((e2) && (strcmp(e2, val) == 0)))
     {
       Lng32 errNumParam = ((Lng32)str_atoi(val, strlen(val)));
-      ComDiagsArea * diagsArea = getDiagsArea();
-      ExRaiseSqlError(getHeap(), &diagsArea, -EXE_ERROR_INJECTED,
+      ExRaiseSqlError(getHeap(), &diagsArea_, -EXE_ERROR_INJECTED,
           &errNumParam, NULL, NULL,   
          (e1 ? "SQLMX_TEST_POINT" : "SQLMX_PPD_ERR_TEST_POINT"));
-      setDiagsArea(diagsArea);
       return -EXE_ERROR_INJECTED;
     }
   return 0;
@@ -408,7 +406,7 @@ short ExExeUtilFastDeleteTcb::work()
                    cliRC = cliInterface()->beginWork();
                    if (cliRC < 0)
                      {
-                        
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                        
cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                        step_ = ERROR_;
                        break;
                      }
@@ -443,7 +441,7 @@ short ExExeUtilFastDeleteTcb::work()
              {
                if (cliRC < 0)
                  {
-                    
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                    cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                    step_ = ERROR_;
                    break;
                  }
@@ -456,7 +454,7 @@ short ExExeUtilFastDeleteTcb::work()
            cliRC = cliInterface()->beginWork();
            if (cliRC < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                step_ = ERROR_;
                break;
              }
@@ -506,7 +504,7 @@ short ExExeUtilFastDeleteTcb::work()
              rc = injectError("10");
            if (rc < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                // could not acquire a ddl lock.
                // try to purgedata using catman sequential purgedata.
 
@@ -549,7 +547,7 @@ short ExExeUtilFastDeleteTcb::work()
              }
            if (rc < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                // security validation failed
                if ((getDiagsArea()->contains(-1017)) ||
                    (rollbackNoPDErr))
@@ -572,7 +570,7 @@ short ExExeUtilFastDeleteTcb::work()
              rc = injectError("12");
            if (rc < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                step_ = ROLLBACK_WORK_AND_ERROR_;
                break;
              }
@@ -588,7 +586,7 @@ short ExExeUtilFastDeleteTcb::work()
                  {
                    strcpy(failReason_, "Error during commit work.");
 
-                    
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                    cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                    step_ = ROLLBACK_WORK_AND_ERROR_;
                    break;
                  }
@@ -603,7 +601,7 @@ short ExExeUtilFastDeleteTcb::work()
                strcpy(buf, "SELECT TESTEXIT;");
                cliRC = cliInterface()->executeImmediate(buf);
                if (cliRC < 0)
-                  
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                  cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                  
                strcpy(failReason_, " ");
 
@@ -621,7 +619,7 @@ short ExExeUtilFastDeleteTcb::work()
            cliRC = cliInterface()->beginWork();
            if (cliRC < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                step_ = ERROR_;
                break;
              }
@@ -732,10 +730,9 @@ short ExExeUtilFastDeleteTcb::work()
                ComDiagsArea * diagsArea = getDiagsArea();
                // convert all errors into warnings
                NegateAllErrors(diagsArea);
-                ExRaiseSqlError(getHeap(), &diagsArea, 
-EXE_PARALLEL_PURGEDATA_FAILED,
+                ExRaiseSqlError(getHeap(), &diagsArea_, 
-EXE_PARALLEL_PURGEDATA_FAILED,
                     NULL, NULL, NULL,
                    failReason_);
-                setDiagsArea(diagsArea);
              }
 
            step_ = ERROR_;
@@ -758,7 +755,7 @@ short ExExeUtilFastDeleteTcb::work()
                strcpy(buf, "SELECT TESTEXIT;");
                cliInterface()->executeImmediate(buf);
                if (cliRC < 0)
-                  
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                  cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                
                step_ = ERROR_;
                break;
@@ -769,11 +766,9 @@ short ExExeUtilFastDeleteTcb::work()
                // raise a warning that parallel purgedata was performed.
                if (fdTdb().returnPurgedataWarn())
                  {
-                   ComDiagsArea * diagsArea = getDiagsArea();
-                    ExRaiseSqlError(getHeap(), &diagsArea, EXE_PURGEDATA_CAT,
+                    ExRaiseSqlError(getHeap(), &diagsArea_, EXE_PURGEDATA_CAT,
                         NULL, NULL, NULL,
                        "Parallel", "");
-                    setDiagsArea(diagsArea);
                  }
                step_ = DONE_;
              }
@@ -787,7 +782,7 @@ short ExExeUtilFastDeleteTcb::work()
            cliRC = cliInterface()->beginWork();
            if (cliRC < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                step_ = ERROR_;
                break;
              }
@@ -802,7 +797,7 @@ short ExExeUtilFastDeleteTcb::work()
 
            if (rc < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                step_ = KILL_MXCMP_AND_ERROR_;
                break;
              }
@@ -819,7 +814,7 @@ short ExExeUtilFastDeleteTcb::work()
              rc = injectError("16");
            if (rc < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                step_ = KILL_MXCMP_AND_ERROR_;
                break;
              }
@@ -838,7 +833,7 @@ short ExExeUtilFastDeleteTcb::work()
                  rc = injectError("17");
                if (rc < 0)
                  {
-                    
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                    cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                    step_ = KILL_MXCMP_AND_ERROR_;
                    break;
                  }
@@ -847,7 +842,7 @@ short ExExeUtilFastDeleteTcb::work()
            cliRC = cliInterface()->commitWork();
            if (cliRC < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                step_ = ERROR_;
                break;
              }
@@ -857,11 +852,9 @@ short ExExeUtilFastDeleteTcb::work()
            // raise a warning that parallel purgedata was performed.
            if (fdTdb().returnPurgedataWarn())
              {
-               ComDiagsArea * diagsArea = getDiagsArea();
-                ExRaiseSqlError(getHeap(), &diagsArea, EXE_PURGEDATA_CAT,
+                ExRaiseSqlError(getHeap(), &diagsArea_, EXE_PURGEDATA_CAT,
                     NULL, NULL, NULL,
                    "Parallel", "");
-                setDiagsArea(diagsArea);
              }
          }
        break;
@@ -880,16 +873,14 @@ short ExExeUtilFastDeleteTcb::work()
            // for parallel purgedata, or because parallel purgedata failed.
            if (fdTdb().returnPurgedataWarn())
              {
-               ComDiagsArea * diagsArea = getDiagsArea();
                if (fdTdb().doPurgedataCat())
-                  ExRaiseSqlError(getHeap(), &diagsArea, EXE_PURGEDATA_CAT,
+                  ExRaiseSqlError(getHeap(), &diagsArea_, EXE_PURGEDATA_CAT,
                      NULL, NULL, NULL,
                      "Regular", "Reason: Query or the object did not meet the 
criteria for parallel purgedata.");
                else
-                  ExRaiseSqlError(getHeap(), &diagsArea, EXE_PURGEDATA_CAT,
+                  ExRaiseSqlError(getHeap(), &diagsArea_, EXE_PURGEDATA_CAT,
                      NULL, NULL, NULL,
                      "Regular", "Reason: Parallel purgedata failed.");
-                setDiagsArea(diagsArea);
              }
 
            rc = doPurgedataCat(fdTdb().purgedataStmt());
@@ -1363,7 +1354,7 @@ short ExExeUtilLongRunningTcb::executeLongRunningQuery()
         "control query default HIST_ON_DEMAND_STATS_SIZE '0'");
       if (cliRC < 0) 
         {
-          
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+          cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
          return cliRC;
         }
       
@@ -1372,7 +1363,7 @@ short ExExeUtilLongRunningTcb::executeLongRunningQuery()
       short rtc = processInitial(rc);
       if ((rc != 0) && (rc != 100))
         {
-          
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+          cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
         }
 
       cliRC = 
@@ -1380,7 +1371,7 @@ short ExExeUtilLongRunningTcb::executeLongRunningQuery()
             "control query default HIST_ON_DEMAND_STATS_SIZE 'RESET'");
       if (cliRC < 0) 
         {
-          
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+          cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
          return cliRC;
         }
       
@@ -1416,7 +1407,7 @@ short ExExeUtilLongRunningTcb::executeLongRunningQuery()
       short rtc = processContinuing(rc);
       if ((rc != 0) && (rc != 100))
         {
-          
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+          cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
         }
 
 #ifdef _DEBUG
@@ -1978,7 +1969,7 @@ short ExExeUtilPopulateInMemStatsTcb::work()
            
            if (cliRC < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                step_ = ERROR_;
              }
            else
@@ -2034,7 +2025,7 @@ short ExExeUtilPopulateInMemStatsTcb::work()
            
            if (cliRC < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                step_ = ERROR_;
              }
            else
@@ -2090,7 +2081,7 @@ short ExExeUtilPopulateInMemStatsTcb::work()
            
            if (cliRC < 0)
              {
-                
setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+                cliInterface()->allocAndRetrieveSQLDiagnostics(diagsArea_);
                step_ = ERROR_;
              }
            else
@@ -2563,11 +2554,9 @@ short ExExeUtilHiveQueryTcb::work()
           {
             if (HiveClient_JNI::executeHiveSQL(htTdb().getHiveQuery()) != 
HVC_OK)
             {
-                ComDiagsArea * diagsArea = NULL;
-                ExRaiseSqlError(getHeap(), &diagsArea, -1214,
+                ExRaiseSqlError(getHeap(), &diagsArea_, -1214,
                         NULL, NULL, NULL,
                         getSqlJniErrorStr(), htTdb().getHiveQuery()); 
-                setDiagsArea(diagsArea);
                 step_ = ERROR_;
                 break;
             }
@@ -2579,9 +2568,6 @@ short ExExeUtilHiveQueryTcb::work()
           {
             if (handleError())
               return WORK_OK;
-            if (getDiagsArea() != NULL)
-              getDiagsArea()->clear();
-            
             step_ = DONE_;
           }
           break;

http://git-wip-us.apache.org/repos/asf/trafodion/blob/37702da3/core/sql/executor/ExExeUtilVolTab.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilVolTab.cpp 
b/core/sql/executor/ExExeUtilVolTab.cpp
index 365b9cd..f3db9d3 100644
--- a/core/sql/executor/ExExeUtilVolTab.cpp
+++ b/core/sql/executor/ExExeUtilVolTab.cpp
@@ -517,9 +517,7 @@ short ExExeUtilCleanupVolatileTablesTcb::work()
              {
                // cannot have a transaction running.
                // Return error.
-                ComDiagsArea * diagsArea = getDiagsArea();
-                ExRaiseSqlError(getHeap(), &diagsArea, 
-EXE_BEGIN_TRANSACTION_ERROR);
-                setDiagsArea(diagsArea);
+                ExRaiseSqlError(getHeap(), &diagsArea_, 
-EXE_BEGIN_TRANSACTION_ERROR);
                step_ = ERROR_;
                break;
              }
@@ -592,11 +590,9 @@ short ExExeUtilCleanupVolatileTablesTcb::work()
              {
                // add a warning to indicate that some schemas were not
                // dropped.
-                ComDiagsArea * diagsArea = getDiagsArea();
-                ExRaiseSqlError(getHeap(), &diagsArea, 1069,
+                ExRaiseSqlError(getHeap(), &diagsArea_, 1069,
                        NULL, NULL, NULL,
                        errorSchemas_);
-                setDiagsArea(diagsArea);
              }
            step_ = CLEANUP_HIVE_TABLES_;
          }

http://git-wip-us.apache.org/repos/asf/trafodion/blob/37702da3/core/sql/executor/ExHdfsScan.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExHdfsScan.cpp b/core/sql/executor/ExHdfsScan.cpp
index 91bdc62..f77d714 100644
--- a/core/sql/executor/ExHdfsScan.cpp
+++ b/core/sql/executor/ExHdfsScan.cpp
@@ -124,6 +124,7 @@ ExHdfsScanTcb::ExHdfsScanTcb(
   , hdfsScan_(NULL)
   , hdfsStats_(NULL)
   , hdfsFileInfoListAsArray_(glob->getDefaultHeap(), 
hdfsScanTdb.getHdfsFileInfoList()->numEntries())
+  , errBuf_(NULL)
   
 {
   Space * space = (glob ? glob->getSpace() : 0);
@@ -317,7 +318,10 @@ void ExHdfsScanTcb::freeResources()
      NADELETE(logFileHdfsClient_, HdfsClient, getHeap());
   if (hdfsScan_ != NULL) 
      NADELETE(hdfsScan_, HdfsScan, getHeap());
+  if (errBuf_ != NULL)
+     NADELETEBASIC(errBuf_, getHeap());
 }
+
 NABoolean ExHdfsScanTcb::needStatsEntry()
 {
   // stats are collected for ALL and OPERATOR options.
@@ -778,14 +782,16 @@ ExWorkProcRetcode ExHdfsScanTcb::work()
                     ComDiagsArea * diagsArea = NULL;
                     if (hdfsErrorDetail == ENOENT)
                       {
-                        char errBuf[strlen(hdfsScanTdb().tableName()) + 
-                                    strlen(hdfsFileName_) + 100];
-                        snprintf(errBuf, sizeof(errBuf),"%s (fileLoc: %s)",
+                        if (errBuf_ != NULL)
+                           NADELETEBASIC(errBuf_, getHeap());
+                        Lng32 len = strlen(hdfsScanTdb().tableName()) + 
strlen(hdfsFileName_) + 100;
+                           errBuf_ = new (getHeap()) char[len];
+                        snprintf(errBuf_, len, "%s (fileLoc: %s)",
                                  hdfsScanTdb().tableName(), hdfsFileName_);
                         ExRaiseSqlError(getHeap(), &diagsArea, 
                                       (ExeErrorCode)(EXE_TABLE_NOT_FOUND), 
NULL,
                                       NULL, NULL, NULL,
-                                      errBuf);
+                                      errBuf_);
                       }
                     else
                       ExRaiseSqlError(getHeap(), &diagsArea, 

http://git-wip-us.apache.org/repos/asf/trafodion/blob/37702da3/core/sql/executor/ExHdfsScan.h
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExHdfsScan.h b/core/sql/executor/ExHdfsScan.h
index aa01b6e..c11329f 100644
--- a/core/sql/executor/ExHdfsScan.h
+++ b/core/sql/executor/ExHdfsScan.h
@@ -376,6 +376,7 @@ protected:
   int prevRangeNum_;
   int extraBytesRead_;
   NABoolean recordSkip_;
+  char *errBuf_;
 };
 
 class ExOrcScanTcb  : public ExHdfsScanTcb

http://git-wip-us.apache.org/repos/asf/trafodion/blob/37702da3/core/sql/sqlcomp/CmpDescribe.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/CmpDescribe.cpp b/core/sql/sqlcomp/CmpDescribe.cpp
index 1aef61a..1cd7aff 100644
--- a/core/sql/sqlcomp/CmpDescribe.cpp
+++ b/core/sql/sqlcomp/CmpDescribe.cpp
@@ -633,8 +633,8 @@ short CmpDescribe(const char *query, const RelExpr 
*queryExpr,
               CmpCommon::diags()->clear();
 
               *CmpCommon::diags() << 
DgSqlCode(-CAT_SCHEMA_DOES_NOT_EXIST_ERROR)
-                                  << DgSchemaName(objQualName.getCatalogName() 
+
-                                                  "." +  
objQualName.getSchemaName());
+                                  << DgString0(objQualName.getCatalogName())
+                                  << DgString1(objQualName.getSchemaName());
 
               rc = -1;
               goto finally;

http://git-wip-us.apache.org/repos/asf/trafodion/blob/37702da3/core/sql/sqlcomp/CmpSeabaseDDLcommon.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/CmpSeabaseDDLcommon.cpp 
b/core/sql/sqlcomp/CmpSeabaseDDLcommon.cpp
index 6fc1863..b5db51b 100644
--- a/core/sql/sqlcomp/CmpSeabaseDDLcommon.cpp
+++ b/core/sql/sqlcomp/CmpSeabaseDDLcommon.cpp
@@ -4505,7 +4505,8 @@ void CmpSeabaseDDL::handleDDLCreateAuthorizationError(
       case CAT_SCHEMA_DOES_NOT_EXIST_ERROR:
       {
          *CmpCommon::diags() << DgSqlCode(-CAT_SCHEMA_DOES_NOT_EXIST_ERROR)
-                             << DgSchemaName(catalogName + "." + schemaName);
+                                  << DgString0(catalogName)
+                                  << DgString1(schemaName);
          break;
       }
       case CAT_NOT_AUTHORIZED:

http://git-wip-us.apache.org/repos/asf/trafodion/blob/37702da3/core/sql/sqlcomp/CmpSeabaseDDLschema.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/CmpSeabaseDDLschema.cpp 
b/core/sql/sqlcomp/CmpSeabaseDDLschema.cpp
index dcc7971..1bfe3cd 100644
--- a/core/sql/sqlcomp/CmpSeabaseDDLschema.cpp
+++ b/core/sql/sqlcomp/CmpSeabaseDDLschema.cpp
@@ -410,7 +410,8 @@ Int64 schemaUID = getObjectTypeandOwner(&cliInterface,
  if (schemaUID < 0)
    {
       *CmpCommon::diags() << DgSqlCode(-CAT_SCHEMA_DOES_NOT_EXIST_ERROR)
-                          << DgSchemaName(catalogName + "." + schemaName);
+                                  << DgString0(catalogName)
+                                  << DgString1(schemaName);
       cmpSBD.switchBackCompiler();
       return false;
    }
@@ -547,7 +548,8 @@ void CmpSeabaseDDL::dropSeabaseSchema(StmtDDLDropSchema * 
dropSchemaNode)
       // A Trafodion schema does not exist if the schema object row is not
       // present: CATALOG-NAME.SCHEMA-NAME.__SCHEMA__.
       *CmpCommon::diags() << DgSqlCode(-CAT_SCHEMA_DOES_NOT_EXIST_ERROR)
-                          << DgSchemaName(schemaName.getExternalName().data());
+                                  << DgString0(catName.data())
+                                  << DgString1(schName.data());
       goto label_error;
    }
 
@@ -1107,7 +1109,8 @@ void CmpSeabaseDDL::alterSeabaseSchema(StmtDDLAlterSchema 
* alterSchemaNode)
       // A Trafodion schema does not exist if the schema object row is not
       // present: CATALOG-NAME.SCHEMA-NAME.__SCHEMA__.
       *CmpCommon::diags() << DgSqlCode(-CAT_SCHEMA_DOES_NOT_EXIST_ERROR)
-                          << DgSchemaName(schemaName.getExternalName().data());
+                                  << DgString0(catName.data())
+                                  << DgString1(schName.data());
       goto label_error;
    }
 
@@ -1337,7 +1340,8 @@ Int64 schemaUID = 
getObjectTypeandOwner(&cliInterface,catalogName.data(),
       // A Trafodion schema does not exist if the schema object row is not
       // present: CATALOG-NAME.SCHEMA-NAME.__SCHEMA__.
       *CmpCommon::diags() << DgSqlCode(-CAT_SCHEMA_DOES_NOT_EXIST_ERROR)
-                          << DgSchemaName(schemaName.data());
+                                  << DgString0(catalogName.data())
+                                  << DgString1(schemaName.data());
       return;
    }
    

Reply via email to