You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by se...@apache.org on 2018/04/06 16:07:32 UTC

[2/7] trafodion git commit: [TRAFODION-3009] Streamline error handling in Executor utility commands

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

ComDiagsArea is now allocated only when there are warnings or error in
all the utility commands except load. In case of load, the ComDiagsArea
is allocated in advance to report error rows count.

This requires all the executor utility commands to use a new version of
ExRaiseSqlError to populate diagnostics area.

[TRAFODION-3017] Simplify the hive client access in Trafodion

Hive Client functions are now moved to a new file HiveClient_JNI.h and
HiveClient_JNI.cpp. Most of the HiveClient functions are static functions
allowing to use HiveClient in Trafodion with ease.


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

Branch: refs/heads/master
Commit: 1f44166c843fd1a6e8b325a2fcbe0cf8158e099b
Parents: 659e8ec
Author: selvaganesang <se...@esgyn.com>
Authored: Thu Mar 29 00:13:15 2018 +0000
Committer: selvaganesang <se...@esgyn.com>
Committed: Tue Apr 3 01:16:37 2018 +0000

----------------------------------------------------------------------
 core/sql/arkcmp/CmpContext.cpp                  |  52 --
 core/sql/arkcmp/CmpContext.h                    |   3 -
 core/sql/cli/Context.cpp                        |   8 +-
 core/sql/cli/Globals.cpp                        |   2 +-
 core/sql/executor/ExExeUtil.h                   |   8 +-
 core/sql/executor/ExExeUtilCli.cpp              |  81 ++--
 core/sql/executor/ExExeUtilCli.h                |  14 +-
 core/sql/executor/ExExeUtilCommon.cpp           |  24 +-
 core/sql/executor/ExExeUtilExplain.cpp          |  38 +-
 core/sql/executor/ExExeUtilGet.cpp              | 171 +++----
 core/sql/executor/ExExeUtilGetStats.cpp         |   9 +-
 core/sql/executor/ExExeUtilLoad.cpp             | 157 +++---
 core/sql/executor/ExExeUtilMisc.cpp             | 156 +++---
 core/sql/executor/ExExeUtilVolTab.cpp           |  33 +-
 core/sql/executor/ExHdfsScan.cpp                |   3 +-
 core/sql/executor/HBaseClient_JNI.cpp           | 472 ------------------
 core/sql/executor/HBaseClient_JNI.h             |  91 +---
 core/sql/executor/HdfsClient_JNI.cpp            |   2 +-
 core/sql/executor/HiveClient_JNI.cpp            | 473 +++++++++++++++++++
 core/sql/executor/HiveClient_JNI.h              | 106 +++++
 core/sql/executor/JavaObjectInterface.cpp       |   2 +-
 core/sql/executor/ex_root.cpp                   |  20 -
 core/sql/executor/hiveHook.cpp                  |  60 +--
 core/sql/exp/ExpError.cpp                       |  14 +
 core/sql/exp/ExpError.h                         |   9 +
 core/sql/exp/ExpHbaseInterface.h                |   1 +
 core/sql/nskgmake/executor/Makefile             |   1 +
 core/sql/optimizer/NATable.cpp                  |   2 +-
 core/sql/optimizer/NormRelExpr.cpp              |   5 +-
 core/sql/optimizer/OptimizerSimulator.cpp       |  47 +-
 core/sql/optimizer/hiveHook.h                   |  11 -
 core/sql/sqlcomp/PrivMgrComponentPrivileges.cpp |   5 +-
 core/sql/sqlcomp/PrivMgrMDTable.cpp             |   4 +-
 .../main/java/org/trafodion/sql/HiveClient.java |  95 ++--
 34 files changed, 1040 insertions(+), 1139 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafodion/blob/1f44166c/core/sql/arkcmp/CmpContext.cpp
----------------------------------------------------------------------
diff --git a/core/sql/arkcmp/CmpContext.cpp b/core/sql/arkcmp/CmpContext.cpp
index 4599508..78c3c63 100644
--- a/core/sql/arkcmp/CmpContext.cpp
+++ b/core/sql/arkcmp/CmpContext.cpp
@@ -524,58 +524,6 @@ NABoolean CmpContext::isAuthorizationEnabled( NABoolean errIfNotReady)
   return FALSE;
 }
 
-HiveClient_JNI * CmpContext::getHiveClient(ComDiagsArea *diags)
-{
-  if(NULL == hiveClient_)
-    {
-        hiveClient_ = HiveClient_JNI::getInstance();
-        if ( hiveClient_->isInitialized() == FALSE ||
-             hiveClient_->isConnected() == FALSE)
-        {
-            HVC_RetCode retCode = hiveClient_->init();
-            if (retCode != HVC_OK)
-            {
-              hiveClient_ = NULL;
-            }
-        }  
-    }
-
-  if (hiveClient_ == NULL && diags)
-    *diags << DgSqlCode(-1213);
-
-  return hiveClient_;
-}
-
-NABoolean CmpContext::execHiveSQL(const char* hiveSQL, ComDiagsArea *diags)
-{
-  NABoolean result = FALSE;
-
-  if (!hiveClient_)
-    getHiveClient(diags);
-
-  if (hiveClient_)
-    {
-      HVC_RetCode retcode = hiveClient_->executeHiveSQL(hiveSQL);
-
-      switch (retcode)
-        {
-        case HVC_OK:
-          result = TRUE;
-          break;
-
-        default:
-          result = FALSE;
-        }
-
-      if (!result && diags)
-        *diags << DgSqlCode(-1214)
-               << DgString0(GetCliGlobals()->getJniErrorStr())
-               << DgString1(hiveSQL);
-    }
-
-  return result;
-}
-
 // -----------------------------------------------------------------------
 // The CmpStatement related methods
 // -----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/trafodion/blob/1f44166c/core/sql/arkcmp/CmpContext.h
----------------------------------------------------------------------
diff --git a/core/sql/arkcmp/CmpContext.h b/core/sql/arkcmp/CmpContext.h
index eceb9c1..135cb7e 100644
--- a/core/sql/arkcmp/CmpContext.h
+++ b/core/sql/arkcmp/CmpContext.h
@@ -283,9 +283,6 @@ public :
   
   UInt32 getStatementNum() const { return statementNum_; }
 
-  HiveClient_JNI *getHiveClient(ComDiagsArea *diags = NULL);
-  NABoolean execHiveSQL(const char* hiveSQL, ComDiagsArea *diags = NULL);
-
   // access the NAHeap* for context
   NAHeap* statementHeap();
   NAHeap* heap() { return heap_; }

http://git-wip-us.apache.org/repos/asf/trafodion/blob/1f44166c/core/sql/cli/Context.cpp
----------------------------------------------------------------------
diff --git a/core/sql/cli/Context.cpp b/core/sql/cli/Context.cpp
index ab84711..bfb043f 100644
--- a/core/sql/cli/Context.cpp
+++ b/core/sql/cli/Context.cpp
@@ -96,6 +96,7 @@
 #include "HBaseClient_JNI.h"
 #include "ComDistribution.h"
 #include "LmRoutine.h"
+#include "HiveClient_JNI.h"
 
 // Printf-style tracing macros for the debug build. The macros are
 // no-ops in the release build.
@@ -294,14 +295,14 @@ ContextCli::~ContextCli()
 
 void ContextCli::deleteMe()
 {
-  ComDiagsArea & diags = cliGlobals_->currContext()->diags();
+  ComDiagsArea *diags = NULL;
 
   if (volatileSchemaCreated())
     {
       // drop volatile schema, if one exists
       short rc =
         ExExeUtilCleanupVolatileTablesTcb::dropVolatileSchema
-        (this, NULL, exCollHeap());
+        (this, NULL, exCollHeap(), diags);
       SQL_EXEC_ClearDiagnostics(NULL);
       
       rc =
@@ -2902,10 +2903,11 @@ void ContextCli::endSession(NABoolean cleanupEsps,
 void ContextCli::dropSession(NABoolean clearCmpCache)
 {
   short rc = 0;
+  ComDiagsArea *diags = NULL;
   if (volatileSchemaCreated_)
     {
       rc = ExExeUtilCleanupVolatileTablesTcb::dropVolatileSchema
-        (this, NULL, exHeap());
+        (this, NULL, exHeap(), diags);
       SQL_EXEC_ClearDiagnostics(NULL);
     }
 

http://git-wip-us.apache.org/repos/asf/trafodion/blob/1f44166c/core/sql/cli/Globals.cpp
----------------------------------------------------------------------
diff --git a/core/sql/cli/Globals.cpp b/core/sql/cli/Globals.cpp
index 3eb4502..f716345 100644
--- a/core/sql/cli/Globals.cpp
+++ b/core/sql/cli/Globals.cpp
@@ -61,11 +61,11 @@
 #include <pthread.h>
 #include "HBaseClient_JNI.h"
 #include "HdfsClient_JNI.h"
+#include "HiveClient_JNI.h"
 #include "LmLangManagerC.h"
 #include "LmLangManagerJava.h"
 #include "CliSemaphore.h"
 
-
 #include "ExCextdecs.h"
 CliGlobals * cli_globals = NULL;
 

http://git-wip-us.apache.org/repos/asf/trafodion/blob/1f44166c/core/sql/executor/ExExeUtil.h
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtil.h b/core/sql/executor/ExExeUtil.h
index 85173c8..46349d9 100644
--- a/core/sql/executor/ExExeUtil.h
+++ b/core/sql/executor/ExExeUtil.h
@@ -270,7 +270,7 @@ class ExExeUtilTcb : public ex_tcb
   ExeCliInterface * cliInterface() { return cliInterface_; };
   ExeCliInterface * cliInterface2() { return cliInterface2_; };
 
-  ComDiagsArea * getDiagsArea() { return diagsArea_; }
+  ComDiagsArea *&getDiagsArea() { return diagsArea_; }
 
   void setDiagsArea(ComDiagsArea * d) { diagsArea_ = d; }
 
@@ -1020,10 +1020,10 @@ class ExExeUtilCleanupVolatileTablesTcb : public ExExeUtilVolatileTablesTcb
   static short dropVolatileSchema(ContextCli * currContext,
                                   char * schemaName,
                                   CollHeap * heap,
-                                  ex_globals *globals = NULL,
-                                  ComDiagsArea * diagsArea = NULL);
+                                  ComDiagsArea *&diagsArea,
+                                  ex_globals *globals = NULL);
   static short dropVolatileTables(ContextCli * currContext, CollHeap * heap);
-  short dropHiveTempTablesForCSEs(ComDiagsArea * diagsArea = NULL);
+  short dropHiveTempTablesForCSEs();
 
  private:
   enum Step

http://git-wip-us.apache.org/repos/asf/trafodion/blob/1f44166c/core/sql/executor/ExExeUtilCli.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilCli.cpp b/core/sql/executor/ExExeUtilCli.cpp
index be80cf7..dc9c4e2 100644
--- a/core/sql/executor/ExExeUtilCli.cpp
+++ b/core/sql/executor/ExExeUtilCli.cpp
@@ -219,7 +219,6 @@ Lng32 ExeCliInterface::allocStuff(SQLMODULE_ID * &module,
   )
 {
   Lng32 retcode = 0;
-
   deallocStuff(module, stmt, sql_src, input_desc, output_desc);
 
   clearGlobalDiags();
@@ -926,6 +925,8 @@ Lng32 ExeCliInterface::close()
   return retcode;
 }
 
+
+
 Lng32 ExeCliInterface::executeImmediatePrepare(const char * stmtStr,
 					       char * outputBuf,
 					       Lng32 * outputBufLen,
@@ -935,7 +936,6 @@ Lng32 ExeCliInterface::executeImmediatePrepare(const char * stmtStr,
 					      )
 {
   Lng32 retcode = 0;
-
   if (outputBufLen)
     *outputBufLen = 0;
 
@@ -993,8 +993,7 @@ Lng32 ExeCliInterface::executeImmediateExec(const char * stmtStr,
 					   Lng32 * outputBufLen,
 					   NABoolean nullTerminate,
 					   Int64 * rowsAffected,
-                                           ComDiagsArea *diagsArea
-					   )
+                                           ComDiagsArea *diagsArea)
 {
   Lng32 retcode = 0;
 
@@ -1050,7 +1049,6 @@ Lng32 ExeCliInterface::executeImmediateExec(const char * stmtStr,
   }
   if (diagsArea != NULL) 
      retcode = SQL_EXEC_MergeDiagnostics_Internal(*diagsArea);
-
   clearGlobalDiags();
 
   retcode = close();
@@ -1070,35 +1068,31 @@ Lng32 ExeCliInterface::executeImmediate(const char * stmtStr,
 				       NABoolean nullTerminate,
 				       Int64 * rowsAffected,
 				       NABoolean monitorThis,
-				       ComDiagsArea * globalDiags
-				       )
+				       ComDiagsArea *globalDiags)
 {
   Lng32 retcode = 0;
 
   ComDiagsArea * tempDiags = NULL;
   if (globalDiags)
-    {
-      tempDiags = ComDiagsArea::allocate(heap_);
-      tempDiags->mergeAfter(*globalDiags);
-    }
+  {
+     tempDiags = ComDiagsArea::allocate(heap_);
+     tempDiags->mergeAfter(*globalDiags);
+  }
 
   clearGlobalDiags();
-
   outputBuf_ = NULL;
   inputBuf_ = NULL;
   retcode = executeImmediatePrepare(stmtStr, 
 				    (nullTerminate ? outputBuf_ : outputBuf),
 				    outputBufLen,
 				    rowsAffected,monitorThis);
-  if (retcode < 0)
-    goto ExecuteImmediateReturn;
-
+  if (retcode < 0) 
+     goto ExecuteImmediateReturn;
   retcode = executeImmediateExec(stmtStr, 
 				 outputBuf, outputBufLen,
 				 nullTerminate,
 				 rowsAffected,
                                  globalDiags);
-
 ExecuteImmediateReturn:
   if ((globalDiags) && (tempDiags))
     {
@@ -1110,8 +1104,7 @@ ExecuteImmediateReturn:
       tempDiags->clear();
       tempDiags->deAllocate();
     }
-
-  return retcode;
+   return retcode;
 }
 
 short ExeCliInterface::fetchRowsPrologue(const char * sqlStrBuf, 
@@ -1439,6 +1432,7 @@ Lng32 ExeCliInterface::executeImmediateCEFC(const char * stmtStr,
 {
   Lng32 retcode = 0;
 
+
   clearGlobalDiags();
 
   outputBuf_ = NULL;
@@ -1821,7 +1815,6 @@ short ExeCliInterface::prepareAndExecRowsPrologue(const char * sqlInitialStrBuf,
   Lng32 retcode = 0;
   
   SQL_EXEC_ClearDiagnostics(NULL);
-
   retcode = allocStuff(module_, stmt_, sql_src_, input_desc_, output_desc_);
   if (retcode < 0)
     return (short)retcode;
@@ -2091,27 +2084,57 @@ Lng32 ExeCliInterface::deleteContext(char* contextHandle) // in buf contains con
 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;
+}
 
-  if (toDiags != NULL)
-    {
-      retcode = SQL_EXEC_MergeDiagnostics_Internal(*toDiags);
-      SQL_EXEC_ClearDiagnostics(NULL);
-    }
-  else
+
+ComDiagsArea *ExeCliInterface::allocAndRetrieveSQLDiagnostics(ComDiagsArea *&toDiags)
+{
+  Lng32 retcode;
+
+  if (diagsArea_ != NULL)
     {
-      diagsArea_ = ComDiagsArea::allocate(heap_);
-      retcode = SQL_EXEC_MergeDiagnostics_Internal(*diagsArea_);
+      diagsArea_->clear();
+      diagsArea_->deAllocate();
     }
+  if (toDiags == NULL)
+      toDiags = ComDiagsArea::allocate(heap_);
 
-  return retcode;
+  retcode = SQL_EXEC_MergeDiagnostics_Internal(*toDiags);
+  SQL_EXEC_ClearDiagnostics(NULL);
+ 
+  if (retcode == 0)
+     return toDiags;
+  else
+     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)
 {

http://git-wip-us.apache.org/repos/asf/trafodion/blob/1f44166c/core/sql/executor/ExExeUtilCli.h
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilCli.h b/core/sql/executor/ExExeUtilCli.h
index 8c1aa9b..ce33de4 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,
@@ -246,6 +246,8 @@ private:
   Lng32 deleteContext(char* contextHandle); // in buf contains context handle
 
   Lng32 retrieveSQLDiagnostics(ComDiagsArea *toDiags);
+  ComDiagsArea *allocAndRetrieveSQLDiagnostics(ComDiagsArea *&toDiags);
+  void retrieveOrSaveSQLDiagnostics(Lng32 cliRetCode, ComDiagsArea *toDiags);
 
   CollHeap * getHeap() { return heap_; }
 
@@ -264,19 +266,19 @@ private:
 
   Lng32 GetRowsAffected(Int64 *rowsAffected);
 
-  Lng32 holdAndSetCQD(const char * defaultName, const char * defaultValue, ComDiagsArea * globalDiags = NULL);
-  Lng32 restoreCQD(const char * defaultName, ComDiagsArea * globalDiags = NULL);
+  Lng32 holdAndSetCQD(const char * defaultName, const char * defaultValue, ComDiagsArea *globalDiags = NULL);
+  Lng32 restoreCQD(const char * defaultName, ComDiagsArea *globalDiags = NULL);
 
   Lng32 getCQDval(const char * defaultName,
 		  char * val,
-		  ComDiagsArea * globalDiags = NULL);
+		  ComDiagsArea *globalDiags = NULL);
 
   void setNotExeUtilInternalQuery(NABoolean v)
     {(v ? flags_ |= NOT_EXEUTIL_INTERNAL_QUERY : flags_ &= ~NOT_EXEUTIL_INTERNAL_QUERY); };
   NABoolean notExeUtilInternalQuery() { return (flags_ & NOT_EXEUTIL_INTERNAL_QUERY) != 0; };
 
-  Lng32 setCQS(const char * shape, ComDiagsArea * globalDiags = NULL);
-  Lng32 resetCQS(ComDiagsArea * globalDiags = NULL);
+  Lng32 setCQS(const char * shape, ComDiagsArea *globalDiags = NULL);
+  Lng32 resetCQS(ComDiagsArea *globalDiags = NULL);
 
   // methods for routine invocation
   Lng32 getRoutine(

http://git-wip-us.apache.org/repos/asf/trafodion/blob/1f44166c/core/sql/executor/ExExeUtilCommon.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilCommon.cpp b/core/sql/executor/ExExeUtilCommon.cpp
index 6f3cb26..09f7126 100644
--- a/core/sql/executor/ExExeUtilCommon.cpp
+++ b/core/sql/executor/ExExeUtilCommon.cpp
@@ -202,10 +202,10 @@ ExExeUtilTcb::ExExeUtilTcb(const ComTdbExeUtil & exe_util_tdb,
 					     SQLCHARSETCODE_ISO88591,  // ISO_MAPPING=ISO88591
 					     currContext,
 					     parentQid);
-  
-  //diagsArea_ = NULL;
-  setDiagsArea(ComDiagsArea::allocate(getHeap()));
 
+  diagsArea_ = NULL;
+  //setDiagsArea(ComDiagsArea::allocate(getHeap()));
+  
   pqStep_ = PROLOGUE_;
 
   VersionToString(COM_VERS_MXV, versionStr_);
@@ -462,8 +462,8 @@ Lng32 ExExeUtilTcb::changeAuditAttribute(char * tableName,
 }
 
 void ExExeUtilTcb::handleErrors(Lng32 rc)
-{
-  cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+{ 
+  setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 }
 
 short ExExeUtilTcb::initializeInfoList(Queue* &infoList)
@@ -669,7 +669,9 @@ short ExExeUtilTcb::executeQuery(char * task,
 	    char * stringParam1 = NULL;
 	    Lng32   intParam1 = ComDiags_UnInitialized_Int;
 
-	    retcode = (short)cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+            setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
+            if (getDiagsArea() != NULL)
+	        retcode = 0;
 	    if (moveErrorRow)
 	      {
 		if (retcode == 0)
@@ -770,7 +772,6 @@ short ExExeUtilTcb::holdAndSetCQD(const char * defaultName, const char * default
   if (cliRC < 0)
     {
       handleErrors(cliRC);
-
       return -1;
     }
 
@@ -785,7 +786,6 @@ short ExExeUtilTcb::restoreCQD(const char * defaultName, ComDiagsArea * globalDi
   if (cliRC < 0)
     {
       handleErrors(cliRC);
-
       return -1;
     }
 
@@ -822,7 +822,6 @@ short ExExeUtilTcb::setCS(const char * csName, char * csValue,
   if (cliRC < 0)
     {
       handleErrors(cliRC);
-
       return -1;
     }
 
@@ -837,7 +836,6 @@ short ExExeUtilTcb::resetCS(const char * csName, ComDiagsArea * globalDiags)
   if (cliRC < 0)
     {
       handleErrors(cliRC);
-
       return -1;
     }
 
@@ -898,7 +896,6 @@ short ExExeUtilTcb::disableCQS()
   if (rc < 0)
     {
       handleErrors(rc);
-
       return -1;
     }
 
@@ -912,7 +909,6 @@ short ExExeUtilTcb::restoreCQS()
   if (rc < 0)
     {
       handleErrors(rc);
-
       return -1;
     }
 
@@ -1056,7 +1052,7 @@ short ExExeUtilTcb::setSystemVersion()
 					 sysVersionStr_, &sysVersionStrLen_);
       if (cliRC < 0)
 	{
-	  cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+          setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 	  return -1;
 	}
       
@@ -1125,7 +1121,7 @@ short ExExeUtilTcb::getObjectUid(char * catName, char * schName,
 				     uid, &uidLen);
   if (cliRC < 0)
     {
-      cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+      setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
       return -1;
     }
   uid[uidLen] = 0;

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

http://git-wip-us.apache.org/repos/asf/trafodion/blob/1f44166c/core/sql/executor/ExExeUtilGet.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilGet.cpp b/core/sql/executor/ExExeUtilGet.cpp
index ff40c40..2ce8607 100644
--- a/core/sql/executor/ExExeUtilGet.cpp
+++ b/core/sql/executor/ExExeUtilGet.cpp
@@ -71,6 +71,7 @@
 #include "sql_buffer_size.h"
 
 #include "NAType.h"
+#include "HiveClient_JNI.h"
 
 //******************************************************************************
 //                                                                             *
@@ -688,8 +689,7 @@ Lng32 ExExeUtilGetMetadataInfoTcb::getUsingView(Queue * infoList,
 	    cliRC = cliInterface()->fetchRowsPrologue(query);
 	    if (cliRC < 0)
 	      {
-		cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
-
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		vStep_ = VIEWS_ERROR_;
 		break;
 	      }
@@ -703,8 +703,7 @@ Lng32 ExExeUtilGetMetadataInfoTcb::getUsingView(Queue * infoList,
 	    cliRC = cliInterface()->fetch();
 	    if (cliRC < 0)
 	      {
-		cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
-
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		vStep_ = VIEWS_ERROR_;
 		break;
 	      }
@@ -732,8 +731,7 @@ Lng32 ExExeUtilGetMetadataInfoTcb::getUsingView(Queue * infoList,
 	    cliRC = cliInterface()->fetchRowsEpilogue(0);
 	    if (cliRC < 0)
 	      {
-		cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
-
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		vStep_ = VIEWS_ERROR_;
 		break;
 	      }
@@ -847,8 +845,7 @@ Lng32 ExExeUtilGetMetadataInfoTcb::getUsedObjects(Queue * infoList,
 	    cliRC = cliInterface()->fetchRowsPrologue(query);
 	    if (cliRC < 0)
 	      {
-		cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
-
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		vStep_ = VIEWS_ERROR_;
 		break;
 	      }
@@ -862,8 +859,7 @@ Lng32 ExExeUtilGetMetadataInfoTcb::getUsedObjects(Queue * infoList,
 	    cliRC = cliInterface()->fetch();
 	    if (cliRC < 0)
 	      {
-		cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
-
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		vStep_ = VIEWS_ERROR_;
 		break;
 	      }
@@ -891,8 +887,7 @@ Lng32 ExExeUtilGetMetadataInfoTcb::getUsedObjects(Queue * infoList,
 	    cliRC = cliInterface()->fetchRowsEpilogue(0);
 	    if (cliRC < 0)
 	      {
-		cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
-
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		vStep_ = VIEWS_ERROR_;
 		break;
 	      }
@@ -1424,7 +1419,7 @@ Int32 ExExeUtilGetMetadataInfoTcb::getAuthID(
   cliRC = fetchAllRows(infoList_, queryBuf_, numOutputEntries_, FALSE, rc);
   if (cliRC < 0) 
   {
-    cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+    setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
     return NA_UserIdDefault;
   }
 
@@ -1498,7 +1493,7 @@ char * ExExeUtilGetMetadataInfoTcb::getRoleList(
   cliRC = fetchAllRows(infoList_, queryBuf_, numOutputEntries_, FALSE, rc);
   if (cliRC < 0)
   {
-    cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+    setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
     return NULL;
   }
 
@@ -1818,8 +1813,9 @@ short ExExeUtilGetMetadataInfoTcb::work()
 	    {
                if (!CmpCommon::context()->isAuthorizationEnabled())
                {
-                  ComDiagsArea * diags = getDiagsArea();
-                  *diags << DgSqlCode(-CAT_AUTHORIZATION_NOT_ENABLED);
+                  ComDiagsArea * diagsArea = getDiagsArea();
+                  ExRaiseSqlError(getHeap(), &diagsArea, -CAT_AUTHORIZATION_NOT_ENABLED);
+                  setDiagsArea(diagsArea);
                   step_ = HANDLE_ERROR_;
                   break;
                }
@@ -2277,9 +2273,11 @@ short ExExeUtilGetMetadataInfoTcb::work()
                   // easier to just return with an error.
                   if (authID == 0)
                     { 
-                      ComDiagsArea * diags = getDiagsArea();
-                      *diags << DgSqlCode(-8732)
-                             << DgString0(getMItdb().getParam1());
+                      ComDiagsArea * diagsArea = getDiagsArea();
+                      ExRaiseSqlError(getHeap(), &diagsArea, -8732,
+                          NULL, NULL, NULL,
+                          getMItdb().getParam1());
+                      setDiagsArea(diagsArea);
                       step_ = HANDLE_ERROR_;
                       break;
                     }
@@ -2290,9 +2288,11 @@ short ExExeUtilGetMetadataInfoTcb::work()
                        // error if authID is not a role
                        if (!CmpSeabaseDDLauth::isRoleID(authID) && authID != PUBLIC_USER)
                         {
-                          ComDiagsArea * diags = getDiagsArea();
-                          *diags << DgSqlCode(-CAT_IS_NOT_A_ROLE)
-                                 << DgString0(getMItdb().getParam1());
+                          ComDiagsArea * diagsArea = getDiagsArea();
+                          ExRaiseSqlError(getHeap(), &diagsArea, -CAT_IS_NOT_A_ROLE, 
+                              NULL, NULL, NULL,
+                              getMItdb().getParam1());
+                          setDiagsArea(diagsArea);
                           step_ = HANDLE_ERROR_;
                           break;
                         }
@@ -2303,9 +2303,11 @@ short ExExeUtilGetMetadataInfoTcb::work()
                       // Return an error if authID is not a user
                       if (!CmpSeabaseDDLauth::isUserID(authID))
                         {
-                          ComDiagsArea * diags = getDiagsArea();
-                          *diags << DgSqlCode(-CAT_IS_NOT_A_USER)
-                                 << DgString0(getMItdb().getParam1());
+                          ComDiagsArea * diagsArea = getDiagsArea();
+                          ExRaiseSqlError(getHeap(), &diagsArea, -CAT_IS_NOT_A_USER, 
+                              NULL, NULL, NULL,
+                              getMItdb().getParam1());
+                          setDiagsArea(diagsArea);
                           step_ = HANDLE_ERROR_;
                           break;
                         }
@@ -2634,10 +2636,8 @@ short ExExeUtilGetMetadataInfoTcb::work()
 	    if (fetchAllRows(infoList_, queryBuf_, numOutputEntries_,
 			     FALSE, retcode) < 0)
 	      {
-		cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
-
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		step_ = HANDLE_ERROR_;
-
 		break;
 	      }
 
@@ -3227,14 +3227,14 @@ short ExExeUtilGetMetadataInfoComplexTcb::work()
 	    if (fetchAllRows(infoList_, queryBuf_, 1, FALSE, retcode) < 0)
 	      {
                 // if error is 4222 (command not supported), ignore it.
-                if (getDiagsArea()->mainSQLCODE() != -4222)
-                  {
+                if (getDiagsArea() != NULL) {
+                   if (getDiagsArea()->mainSQLCODE() != -4222)
+                   {
                     step_ = HANDLE_ERROR_;
-                    
                     break;
                   }
-
-                getDiagsArea()->clear();
+                  getDiagsArea()->clear();
+                }
 	      }
 
 	    // insert a NULL entry, this will cause a blank row to be returned
@@ -3252,14 +3252,15 @@ short ExExeUtilGetMetadataInfoComplexTcb::work()
 	    if (fetchAllRows(infoList_, queryBuf_, 1, FALSE, retcode) < 0)
 	      {
                 // if error is 4222 (command not supported), ignore it.
-                if (getDiagsArea()->mainSQLCODE() != -4222)
+                if (getDiagsArea() != NULL) {
+                  if (getDiagsArea()->mainSQLCODE() != -4222)
                   {
                     step_ = HANDLE_ERROR_;
                     
                     break;
                   }
-
-                getDiagsArea()->clear();
+                  getDiagsArea()->clear();
+                }
 	      }
 
 	    // insert a NULL entry, this will cause a blank row to be returned
@@ -3380,14 +3381,15 @@ short ExExeUtilGetMetadataInfoComplexTcb::work()
                     if (fetchAllRows(infoList_, queryBuf_, 1, FALSE, retcode) < 0)
                       {
                         // if error is 4222 (command not supported), ignore it.
-                        if (getDiagsArea()->mainSQLCODE() != -4222)
+                        if (getDiagsArea() != NULL) {
+                          if (getDiagsArea()->mainSQLCODE() != -4222)
                           {
                             step_ = HANDLE_ERROR_;
                             
                             break;
                           }
-                        
-                        getDiagsArea()->clear();
+                          getDiagsArea()->clear();
+                        }
                       }
                   }
                 
@@ -3409,14 +3411,14 @@ short ExExeUtilGetMetadataInfoComplexTcb::work()
                     if (fetchAllRows(infoList_, queryBuf_, 1, FALSE, retcode) < 0)
                       {
                         // if error is 4222 (command not supported), ignore it.
-                        if (getDiagsArea()->mainSQLCODE() != -4222)
-                          {
-                            step_ = HANDLE_ERROR_;
-                            
-                            break;
-                          }
-                        
-                        getDiagsArea()->clear();
+                        if (getDiagsArea() != NULL) {
+                           if (getDiagsArea()->mainSQLCODE() != -4222)
+                           {
+                             step_ = HANDLE_ERROR_;
+                             break;
+                           }
+                           getDiagsArea()->clear();
+                        }
                       }
                   }
                 
@@ -4237,7 +4239,7 @@ short ExExeUtilGetHiveMetadataInfoTcb::work()
 	    retcode = fetchAllHiveRows(infoList_, 1, rc);
 	    if (retcode < 0)
 	      {
-                cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		step_ = HANDLE_ERROR_;
 		break;
 	      }
@@ -5067,7 +5069,7 @@ short ExExeUtilLobShowddlTcb::fetchRows(char * query, short &rc)
     fetchAllRows(infoList_, query, 1, FALSE, rc);
   if (cliRC < 0) 
     {
-      cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+      setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 
       step_ = HANDLE_ERROR_;
 
@@ -5503,8 +5505,6 @@ short ExExeUtilHiveMDaccessTcb::work()
   ExMasterStmtGlobals *masterGlob = exeGlob->castToExMasterStmtGlobals();
   ContextCli * currContext = masterGlob->getStatement()->getContext();
   
-  ComDiagsArea * diags = getDiagsArea();
-
   while (1)
     {
       switch (step_)
@@ -5522,11 +5522,14 @@ short ExExeUtilHiveMDaccessTcb::work()
             retStatus = hiveMD_->init();
             if (!retStatus)
               {
-                *diags << DgSqlCode(-1190)
-                       << DgString0(hiveMD_->getErrMethodName())
-                       << DgString1(hiveMD_->getErrCodeStr())
-                       << DgString2(hiveMD_->getErrDetail())
-                       << DgInt0(hiveMD_->getErrCode());
+                Lng32 intParam1 =  hiveMD_->getErrCode();
+                ComDiagsArea *diagsArea =  getDiagsArea();
+                ExRaiseSqlError(getHeap(), &diagsArea, -1190, 
+                       &intParam1, NULL, NULL,
+                       hiveMD_->getErrMethodName(),
+                       hiveMD_->getErrCodeStr(),
+                       hiveMD_->getErrDetail());
+                setDiagsArea(diagsArea);
                 step_ = HANDLE_ERROR_;
                 break;
               }
@@ -5540,17 +5543,16 @@ short ExExeUtilHiveMDaccessTcb::work()
 	    if ((hiveMDtdb().mdType_ == ComTdbExeUtilHiveMDaccess::SCHEMAS_) ||
                 (! hiveMDtdb().getSchema()))
               {
-                HVC_RetCode retCode = hiveMD_->getClient()->
-                  getAllSchemas(schNames_);
+                HVC_RetCode retCode = HiveClient_JNI::getAllSchemas((NAHeap *)getHeap(), schNames_);
                 if ((retCode != HVC_OK) && (retCode != HVC_DONE)) 
                   {
-                    *diags << DgSqlCode(-1190)
-                           << DgString0((char*)
-                                        "HiveClient_JNI::getAllSchemas()")
-                           << DgString1(hiveMD_->getClient()->
-                                        getErrorText(retCode))
-                           << DgInt0(retCode)
-                           << DgString2(GetCliGlobals()->getJniErrorStr());
+		    ComDiagsArea * diagsArea = getDiagsArea();
+		    ExRaiseSqlError(getHeap(), &diagsArea, -1190, 
+                           (Lng32 *)&retCode, NULL, NULL, 
+                           (char*)"HiveClient_JNI::getAllSchemas()",
+                           HiveClient_JNI::getErrorText(retCode),
+                           GetCliGlobals()->getJniErrorStr());
+                    setDiagsArea(diagsArea);
                     step_ = HANDLE_ERROR_;
                     break;
                   }
@@ -5602,24 +5604,26 @@ short ExExeUtilHiveMDaccessTcb::work()
 
             if (! currObj)
               {
-                HVC_RetCode retCode = hiveMD_->getClient()->
-                  getAllTables(currSch, tblNames_);
+                HVC_RetCode retCode = HiveClient_JNI::getAllTables((NAHeap *)getHeap(), currSch, tblNames_);
                 if (retCode == HVC_ERROR_EXISTS_EXCEPTION)
                   {
-                    *diags << DgSqlCode(-1003)
-                           << DgSchemaName(NAString("hive") + "." + currSch);
+		    ComDiagsArea * diagsArea = getDiagsArea();
+		    ExRaiseSqlError(getHeap(), &diagsArea, -1003, 
+                           NULL, NULL, NULL, 
+                           (NAString("hive") + "." + currSch).data());
+                    setDiagsArea(diagsArea);
                     step_ = HANDLE_ERROR_;
                     break;
                   }
                 else if ((retCode != HVC_OK) && (retCode != HVC_DONE)) 
                   {
-                    *diags << DgSqlCode(-1190)
-                           << DgString0((char*)
-                                        "HiveClient_JNI::getAllTables()")
-                           << DgString1(hiveMD_->getClient()->
-                                        getErrorText(retCode))
-                           << DgInt0(retCode)
-                           << DgString2(GetCliGlobals()->getJniErrorStr());
+		    ComDiagsArea * diagsArea = getDiagsArea();
+		    ExRaiseSqlError(getHeap(), &diagsArea, -1190, 
+                           (Lng32 *)&retCode, NULL, NULL, 
+                           (char*)"HiveClient_JNI::getAllTables()",
+                           HiveClient_JNI::getErrorText(retCode),
+                           GetCliGlobals()->getJniErrorStr());
+                    setDiagsArea(diagsArea);
                     step_ = HANDLE_ERROR_;
                     break;
                   }
@@ -5803,9 +5807,11 @@ short ExExeUtilHiveMDaccessTcb::work()
 		char strP[300];
 		sprintf(strP, "Datatype %s is not supported.", 
                         (hcd ? hcd->type_ : hpd->type_));
-		*diags << DgSqlCode(-CLI_GET_METADATA_INFO_ERROR)
-		       << DgString0(strP);
-		
+                ComDiagsArea *diagsArea = getDiagsArea();
+                ExRaiseSqlError(getHeap(), &diagsArea, -CLI_GET_METADATA_INFO_ERROR,
+                      NULL, NULL, NULL,
+                      strP);
+                setDiagsArea(diagsArea);
 		step_ = HANDLE_ERROR_;
 		break;
 	      }
@@ -7033,8 +7039,6 @@ short ExExeUtilClusterStatsTcb::work()
   ExMasterStmtGlobals *masterGlob = exeGlob->castToExMasterStmtGlobals();
   ContextCli * currContext = masterGlob->getCliGlobals()->currContext();
 
-  ComDiagsArea * diags = getDiagsArea();
-
   while (1)
     {
       switch (step_)
@@ -7061,8 +7065,9 @@ short ExExeUtilClusterStatsTcb::work()
               }
             else if (retcode < 0)
               {
-		*diags << DgSqlCode(-8451);
-
+                ComDiagsArea *diagsArea = getDiagsArea();
+                ExRaiseSqlError(getHeap(), &diagsArea, -8451);
+                setDiagsArea(diagsArea);
                 step_ = HANDLE_ERROR_;
                 break;
               }

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

http://git-wip-us.apache.org/repos/asf/trafodion/blob/1f44166c/core/sql/executor/ExExeUtilLoad.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilLoad.cpp b/core/sql/executor/ExExeUtilLoad.cpp
index fca307c..33a93f8 100644
--- a/core/sql/executor/ExExeUtilLoad.cpp
+++ b/core/sql/executor/ExExeUtilLoad.cpp
@@ -139,9 +139,10 @@ short ExExeUtilCreateTableAsTcb::work()
 	    // allow a user transaction if NO LOAD was specified
 	    if (xnAlreadyStarted && !ctaTdb().noLoad())
               {
-                *getDiagsArea() << DgSqlCode(-20123)
-                                << DgString0("This DDL operation");
-                
+                ComDiagsArea *diagsArea = getDiagsArea();
+                ExRaiseSqlError(getHeap(), &diagsArea, -20123, NULL, NULL, NULL,
+                                "This DDL operation");
+                setDiagsArea(diagsArea);
                 step_ = ERROR_;
                 break;
               }
@@ -184,7 +185,7 @@ short ExExeUtilCreateTableAsTcb::work()
 		  }
 		else
 		  {
-		    cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+		    setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		    
 		    step_ = ERROR_;
 		    break;
@@ -341,7 +342,7 @@ short ExExeUtilCreateTableAsTcb::work()
 		 &rowsAffected);
 	    if (cliRC < 0)
             {
-              cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+              setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
               step_ = HANDLE_ERROR_;
             }
             else
@@ -427,7 +428,7 @@ short ExExeUtilCreateTableAsTcb::work()
               cliInterface()->setIsoMapping(savedIsoMapping);
 	      if (cliRC < 0)
               {
-                cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
                 step_ = HANDLE_ERROR_;
               }
               else
@@ -446,7 +447,7 @@ short ExExeUtilCreateTableAsTcb::work()
 		 &rowsAffected);
 	    if (cliRC < 0)
 	    {
-              cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+              setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
               step_ = HANDLE_ERROR_;
             }
             else
@@ -480,8 +481,7 @@ short ExExeUtilCreateTableAsTcb::work()
 	    NADELETEBASIC(usQuery, getHeap());
 	    if (cliRC < 0)
 	      {
-		cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
-
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		step_ = HANDLE_ERROR_;
 		break;
 	      }
@@ -796,7 +796,7 @@ ExWorkProcRetcode ExExeUtilAqrWnrInsertTcb::work()
 
         if (cliRC < 0)
         {
-          cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+          setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
           SETSTEP(ERROR_);
         }
         else
@@ -821,7 +821,7 @@ ExWorkProcRetcode ExExeUtilAqrWnrInsertTcb::work()
         NADELETEBASIC(query_, getMyHeap());
         if (cliRC < 0)
         {
-          cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+          setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
           SETSTEP(ERROR_);
         }
         else
@@ -960,7 +960,7 @@ ExWorkProcRetcode ExExeUtilAqrWnrInsertTcb::work()
         {
         // mjh - tbd - warning or EMS message to give context to error on
         // delete after error on the insert?
-          cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+          setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
         }
         else
           masterGlob->setAqrWnrInsertCleanedup();
@@ -1114,7 +1114,7 @@ short ExExeUtilHBaseBulkLoadTcb::work()
   short rc;
   Lng32 errorRowCount = 0;
   int len;
-  ComDiagsArea *diagsArea;
+  ComDiagsArea *diagsArea = NULL;
 
   // if no parent request, return
   if (qparent_.down->isEmpty())
@@ -1148,8 +1148,9 @@ short ExExeUtilHBaseBulkLoadTcb::work()
           !hblTdb().getIndexTableOnly())
       {
         //8111 - Transactions are not allowed with Bulk load.
-        ComDiagsArea * da = getDiagsArea();
-        *da << DgSqlCode(-8111);
+        ComDiagsArea * diagsArea = getDiagsArea();
+        ExRaiseSqlError(getHeap(), &diagsArea, -8111);
+        setDiagsArea(diagsArea);
         step_ = LOAD_ERROR_;
           break;
       }
@@ -1221,7 +1222,7 @@ short ExExeUtilHBaseBulkLoadTcb::work()
 
       if (cliRC < 0)
       {
-        cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+        setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
         step_ = LOAD_ERROR_;
         break;
       }
@@ -1257,6 +1258,7 @@ short ExExeUtilHBaseBulkLoadTcb::work()
                           " ",
                           getHbaseErrStr(retcode),
                           (char *)GetCliGlobals()->getJniErrorStr());
+        setDiagsArea(diagsArea);
         step_ = LOAD_END_ERROR_;
         break;
       }
@@ -1296,7 +1298,7 @@ short ExExeUtilHBaseBulkLoadTcb::work()
       clnpQuery = NULL;
       if (cliRC < 0)
       {
-        cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+        setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
         step_ = LOAD_END_ERROR_;
         break;
       }
@@ -1335,7 +1337,7 @@ short ExExeUtilHBaseBulkLoadTcb::work()
       diQuery = NULL;
       if (cliRC < 0)
       {
-        cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+        setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
         step_ = LOAD_END_ERROR_;
         break;
       }
@@ -1413,7 +1415,10 @@ short ExExeUtilHBaseBulkLoadTcb::work()
             }
           }
         diagsArea = getDiagsArea();
-
+        if (diagsArea == NULL) {
+           diagsArea = ComDiagsArea::allocate(getHeap());
+           setDiagsArea(diagsArea);
+        }
         cliRC = cliInterface()->executeImmediate(loadQuery,
             NULL,
             NULL,
@@ -1421,26 +1426,27 @@ short ExExeUtilHBaseBulkLoadTcb::work()
             &rowsAffected_,
             FALSE,
             diagsArea);
-
         if (parserFlagSet)
             masterGlob->getStatement()->getContext()->resetSqlParserFlags(0x20000);
         if (cliRC < 0)
         {
           rowsAffected_ = 0;
-          cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+          setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
           step_ = LOAD_END_ERROR_;
           break;
         }
         else {
            step_ = COMPLETE_BULK_LOAD_;
-           ComCondition *cond;
-           Lng32 entryNumber;
-           while ((cond = diagsArea->findCondition(EXE_ERROR_ROWS_FOUND, &entryNumber)) != NULL) {
-              if (errorRowCount < cond->getOptionalInteger(0))
-                 errorRowCount = cond->getOptionalInteger(0);
-              diagsArea->deleteWarning(entryNumber);
+           if (diagsArea != NULL) {
+              ComCondition *cond;
+              Lng32 entryNumber;
+              while ((cond = diagsArea->findCondition(EXE_ERROR_ROWS_FOUND, &entryNumber)) != NULL) {
+                 if (errorRowCount < cond->getOptionalInteger(0))
+                    errorRowCount = cond->getOptionalInteger(0);
+                 diagsArea->deleteWarning(entryNumber);
+              }
+              diagsArea->setRowCount(0);
            }
-           diagsArea->setRowCount(0);
         }
         if (rowsAffected_ == 0)
           step_ = LOAD_END_;
@@ -1463,7 +1469,7 @@ short ExExeUtilHBaseBulkLoadTcb::work()
         upsQuery = NULL;
         if (cliRC < 0)
         {
-          cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+          setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
           step_ = LOAD_ERROR_;
           break;
         }
@@ -1522,7 +1528,7 @@ short ExExeUtilHBaseBulkLoadTcb::work()
           strcat(clQuery, ")");
         strcat(clQuery, ";");
 
-      cliRC = cliInterface()->executeImmediate(clQuery, NULL,NULL,TRUE,NULL,TRUE, getDiagsArea());
+      cliRC = cliInterface()->executeImmediate(clQuery, NULL,NULL,TRUE,NULL,TRUE);
 
       NADELETEBASIC(clQuery, getMyHeap());
       clQuery = NULL;
@@ -1533,7 +1539,7 @@ short ExExeUtilHBaseBulkLoadTcb::work()
       if (cliRC < 0)
       {
         rowsAffected_ = 0;
-        cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+        setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
         setEndStatusMsg(" COMPLETION", len, TRUE);
         step_ = LOAD_END_ERROR_;
         break;
@@ -1580,7 +1586,7 @@ short ExExeUtilHBaseBulkLoadTcb::work()
 
       if (cliRC < 0)
       {
-        cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+        setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
         step_ = LOAD_END_ERROR_;
         break;
       }
@@ -1640,7 +1646,7 @@ short ExExeUtilHBaseBulkLoadTcb::work()
 
         if (cliRC < 0)
         {
-          cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+          setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
           step_ = LOAD_END_ERROR_;
         }
         else
@@ -2011,12 +2017,12 @@ short ExExeUtilHBaseBulkUnLoadTcb::resetExplainSettings()
 {
   if (cliInterface()->executeImmediate("control session reset 'EXPLAIN';") < 0)
   {
-    cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+    setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
     return -1;
   }
   if (restoreCQD("generate_explain") < 0)
   {
-    cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+    setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
     return -1;
   }
   return 0;
@@ -2037,7 +2043,7 @@ short ExExeUtilHBaseBulkUnLoadTcb::getTrafodionScanTables()
 
   if (holdAndSetCQD("generate_explain", "ON") < 0)
   {
-    cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+    setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
     resetExplainSettings();
     return -1;
   }
@@ -2045,7 +2051,7 @@ short ExExeUtilHBaseBulkUnLoadTcb::getTrafodionScanTables()
   cliRC = cliInterface()->executeImmediate("control session 'EXPLAIN' 'ON';");
   if (cliRC < 0)
   {
-    cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+    setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
     resetExplainSettings();
     return cliRC;
   }
@@ -2053,7 +2059,7 @@ short ExExeUtilHBaseBulkUnLoadTcb::getTrafodionScanTables()
   cliRC = cliInterface()->allocStuff(module, stmt, sql_src, input_desc, output_desc, "__EXPL_STMT_NAME__");
   if (cliRC < 0)
   {
-    cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+    setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
     resetExplainSettings();
     return cliRC;
   }
@@ -2062,7 +2068,7 @@ short ExExeUtilHBaseBulkUnLoadTcb::getTrafodionScanTables()
   cliRC = cliInterface()->prepare(stmtStr, module, stmt, sql_src, input_desc, output_desc, NULL);
   if (cliRC < 0)
   {
-    cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+    setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
     cliInterface()->deallocStuff(module, stmt, sql_src, input_desc, output_desc);
     resetExplainSettings();
     return cliRC;
@@ -2094,7 +2100,7 @@ short ExExeUtilHBaseBulkUnLoadTcb::getTrafodionScanTables()
   cliRC = cliInterface()->fetchAllRows(tbls, (char*)qry_str.data(), 0, FALSE, FALSE, TRUE);
   if (cliRC < 0)
   {
-    cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+    setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
     cliInterface()->deallocStuff(module, stmt, sql_src, input_desc, output_desc);
     return cliRC;
   }
@@ -2107,7 +2113,7 @@ short ExExeUtilHBaseBulkUnLoadTcb::getTrafodionScanTables()
       cliRC = cliInterface()->deallocStuff(module, stmt, sql_src, input_desc, output_desc);
       if (cliRC < 0)
       {
-        cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+        setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
         return cliRC;
       }
     }
@@ -2133,7 +2139,7 @@ short ExExeUtilHBaseBulkUnLoadTcb::getTrafodionScanTables()
   cliRC = cliInterface()->deallocStuff(module, stmt, sql_src, input_desc, output_desc);
   if (cliRC < 0)
   {
-    cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+    setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
     return cliRC;
   }
   return snapshotsList_->entries();
@@ -2173,8 +2179,9 @@ short ExExeUtilHBaseBulkUnLoadTcb::work()
       if (xnAlreadyStarted  )
       {
         //8111 - Transactions are not allowed with Bulk unload.
-        ComDiagsArea * da = getDiagsArea();
-        *da << DgSqlCode(-8111);
+        ComDiagsArea * diagsArea = getDiagsArea();
+        ExRaiseSqlError(getHeap(), &diagsArea, -8111);
+        setDiagsArea(diagsArea);
         step_ = UNLOAD_ERROR_;
         break;
       }
@@ -2201,9 +2208,11 @@ short ExExeUtilHBaseBulkUnLoadTcb::work()
         if (exists)
         {
           //EXE_UNLOAD_FILE_EXISTS
-          ComDiagsArea * da = getDiagsArea();
-          *da << DgSqlCode(- EXE_UNLOAD_FILE_EXISTS)
-                      << DgString0(hblTdb().getMergePath());
+          ComDiagsArea * diagsArea = getDiagsArea();
+          ExRaiseSqlError(getHeap(), &diagsArea, -EXE_UNLOAD_FILE_EXISTS,
+                  NULL, NULL, NULL,
+                  hblTdb().getMergePath());
+          setDiagsArea(diagsArea);
           step_ = UNLOAD_END_ERROR_;
           break;
         }
@@ -2321,10 +2330,12 @@ short ExExeUtilHBaseBulkUnLoadTcb::work()
           hbcRetCode = ehi_->verifySnapshot(*snapshotsList_->at(i)->fullTableName, *snapshotsList_->at(i)->snapshotName, exist);
           if ( hbcRetCode == HBC_OK && !exist)
           {
-            ComDiagsArea * da = getDiagsArea();
-            *da << DgSqlCode(-8112)
-                << DgString0(snapshotsList_->at(i)->snapshotName->data())
-                << DgString1(snapshotsList_->at(i)->fullTableName->data());
+            ComDiagsArea * diagsArea = getDiagsArea();
+            ExRaiseSqlError(getHeap(), &diagsArea, -8112,
+                  NULL, NULL, NULL,
+                  snapshotsList_->at(i)->snapshotName->data(),
+                  snapshotsList_->at(i)->fullTableName->data());
+            setDiagsArea(diagsArea);
             step_ = UNLOAD_END_ERROR_;
             break;
           }
@@ -2363,7 +2374,7 @@ short ExExeUtilHBaseBulkUnLoadTcb::work()
       if (cliRC < 0)
       {
         rowsAffected_ = 0;
-        cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+        setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
         step_ = UNLOAD_END_ERROR_;
         break;
       }
@@ -2906,10 +2917,11 @@ short ExExeUtilLobExtractTcb::work()
 		  ex_queue_entry * up_entry = qparent_.up->getTailEntry();
 
 		  // invalid state, should not be reached.
-		  ComDiagsArea * da = up_entry->getDiagsArea();
+		  ComDiagsArea *diagsArea = up_entry->getDiagsArea();
 		  ExRaiseSqlError(getMyHeap(),
-				  &da,
+				  &diagsArea,
 				  (ExeErrorCode)(EXE_INTERNAL_ERROR));
+                  setDiagsArea(diagsArea);
 		  step_ = CANCEL_;
 		}
 		break;
@@ -2988,10 +3000,11 @@ short ExExeUtilLobExtractTcb::work()
 		     lobHandle_,
 		     lobHandleLen_))
 		  {
-		    ComDiagsArea * da = getDiagsArea();
+		    ComDiagsArea * diagsArea = getDiagsArea();
 		    ExRaiseSqlError(getMyHeap(),
-				    &da,
+				    &diagsArea,
 				    (ExeErrorCode)(EXE_INVALID_LOB_HANDLE));
+                    setDiagsArea(diagsArea);
 		    step_ = HANDLE_ERROR_;
 		    break;
 		  }
@@ -3064,10 +3077,11 @@ short ExExeUtilLobExtractTcb::work()
 		{
 		  // invalid "toType"
 		  ex_queue_entry * up_entry = qparent_.up->getTailEntry();
-		  ComDiagsArea * da = up_entry->getDiagsArea();
+		  ComDiagsArea *diagsArea = up_entry->getDiagsArea();
 		  ExRaiseSqlError(getMyHeap(),
-				  &da,
+				  &diagsArea,
 				  (ExeErrorCode)(EXE_INTERNAL_ERROR));
+                  setDiagsArea(diagsArea);
 		  step_ = CANCEL_;
 		
 		break;
@@ -3255,6 +3269,7 @@ short ExExeUtilLobExtractTcb::work()
 				    (ExeErrorCode)(8442), NULL, &intParam1, 
 				    &cliError, NULL, (char*)"ExpLOBInterfaceSelect",
 				    getLobErrStr(intParam1));
+                    setDiagsArea(diagsArea);
 		    step_ = HANDLE_ERROR_;
 		    break;
 		  }
@@ -3302,6 +3317,7 @@ short ExExeUtilLobExtractTcb::work()
 				(ExeErrorCode)(8442), NULL, &intParam1, 
 				&cliError, NULL, (char*)"ExpLOBInterfaceSelectCursor",
 				getLobErrStr(intParam1));
+                setDiagsArea(diagsArea);
 		step_ = HANDLE_ERROR_;
 		break;
 	      }
@@ -3356,6 +3372,7 @@ short ExExeUtilLobExtractTcb::work()
 				(ExeErrorCode)(8442), NULL, &intParam1, 
 				&cliError, NULL, (char*)"ExpLOBInterfaceSelectCursor",
 				getLobErrStr(intParam1));
+                setDiagsArea(diagsArea);
 		step_ = HANDLE_ERROR_;
 		break;
 	      }
@@ -3382,10 +3399,11 @@ short ExExeUtilLobExtractTcb::work()
 	      {
 		// No other "toType" shoudl reach here - i.e TO_FILE_ or TO_STRING
 		ex_queue_entry * up_entry = qparent_.up->getTailEntry();
-		ComDiagsArea * da = up_entry->getDiagsArea();
+		ComDiagsArea *diagsArea = up_entry->getDiagsArea();
 		ExRaiseSqlError(getMyHeap(),
-				&da,
+				&diagsArea,
 				(ExeErrorCode)(EXE_INTERNAL_ERROR));
+                setDiagsArea(diagsArea);
 		step_ = CANCEL_;
 		
 		break;
@@ -3427,6 +3445,7 @@ short ExExeUtilLobExtractTcb::work()
 				(ExeErrorCode)(8442), NULL, &intParam1, 
 				&cliError, NULL, (char*)"ExpLOBInterfaceSelectCursor",
 				getLobErrStr(intParam1));
+                setDiagsArea(diagsArea);
 		step_ = HANDLE_ERROR_;
 		break;
 	      } 
@@ -3615,10 +3634,11 @@ short ExExeUtilLobUpdateTcb::work()
 		     lobHandle_,
 		     lobHandleLen_))
 		  {
-		    ComDiagsArea * da = getDiagsArea();
+		    ComDiagsArea *diagsArea = getDiagsArea();
 		    ExRaiseSqlError(getMyHeap(),
-				    &da,
+				    &diagsArea,
 				    (ExeErrorCode)(EXE_INVALID_LOB_HANDLE));
+                    setDiagsArea(diagsArea);
 		    step_ = HANDLE_ERROR_;
 		    break;
 		  }
@@ -3732,6 +3752,7 @@ short ExExeUtilLobUpdateTcb::work()
 				(ExeErrorCode)(8442), NULL, &intParam1, 
 				&cliError, NULL, (char*)"ExpLOBInterfaceUpdate",
 				getLobErrStr(intParam1));
+                setDiagsArea(diagsArea);
 		step_ = HANDLE_ERROR_;
 		break;
 	      }  
@@ -3827,7 +3848,8 @@ short ExExeUtilLobUpdateTcb::work()
 		ExRaiseSqlError(getHeap(), &diagsArea, 
 				(ExeErrorCode)(8442), NULL, &intParam1, 
 				&cliError, NULL, (char*)"ExpLOBInterfaceUpdate",
-				getLobErrStr(intParam1));
+			 	getLobErrStr(intParam1));
+                setDiagsArea(diagsArea);
 		step_ = HANDLE_ERROR_;
 		break;
 	      }  
@@ -3926,6 +3948,7 @@ short ExExeUtilLobUpdateTcb::work()
 				(ExeErrorCode)(8442), NULL, &intParam1, 
 				&cliError, NULL, (char*)"ExpLOBInterfaceUpdate",
 				getLobErrStr(intParam1));
+                setDiagsArea(diagsArea);
 		step_ = HANDLE_ERROR_;
 		break;
 	      }  
@@ -4093,6 +4116,7 @@ short ExExeUtilFileExtractTcb::work()
 				(ExeErrorCode)(8442), NULL, &intParam1, 
 				&cliError, NULL, (char*)"ExpLOBInterfaceSelectCursor/open",
 				getLobErrStr(intParam1));
+                setDiagsArea(diagsArea);
 		step_ = HANDLE_ERROR_;
 		break;
 	      }
@@ -4140,6 +4164,7 @@ short ExExeUtilFileExtractTcb::work()
 				(ExeErrorCode)(8442), NULL, &intParam1, 
 				&cliError, NULL, (char*)"ExpLOBInterfaceSelectCursor/read",
 				getLobErrStr(intParam1));
+                setDiagsArea(diagsArea);
 		step_ = HANDLE_ERROR_;
 		break;
 	      }
@@ -4196,6 +4221,7 @@ short ExExeUtilFileExtractTcb::work()
 				(ExeErrorCode)(8442), NULL, &intParam1, 
 				&cliError, NULL, (char*)"ExpLOBInterfaceSelectCursor/close",
 				getLobErrStr(intParam1));
+                setDiagsArea(diagsArea);
 		step_ = HANDLE_ERROR_;
 		break;
 	      }
@@ -4332,6 +4358,7 @@ short ExExeUtilFileLoadTcb::work()
 				    (ExeErrorCode)(8442), NULL, &intParam1, 
 				    &cliError, NULL, (char*)"ExpLOBInterfaceCreate",
 				    getLobErrStr(intParam1));
+                    setDiagsArea(diagsArea);
 		    step_ = HANDLE_ERROR_;
 		    break;
 		  }
@@ -4362,6 +4389,7 @@ short ExExeUtilFileLoadTcb::work()
 		ExRaiseSqlError(getHeap(), &diagsArea, 
 				(ExeErrorCode)(8442), NULL, &intParam1, 
 				&cliError, NULL, (char*)"SourceFile open");
+                setDiagsArea(diagsArea);
 		step_ = HANDLE_ERROR_;
 		break;
 	      }
@@ -4405,6 +4433,7 @@ short ExExeUtilFileLoadTcb::work()
 		ExRaiseSqlError(getHeap(), &diagsArea, 
 				(ExeErrorCode)(8442), NULL, &intParam1, 
 				&cliError, NULL, (char*)"SourceFile read");
+                setDiagsArea(diagsArea);
 		step_ = HANDLE_ERROR_;
 		break;
 	      }
@@ -4450,6 +4479,7 @@ short ExExeUtilFileLoadTcb::work()
 				(ExeErrorCode)(8442), NULL, &intParam1, 
 				&cliError, NULL, (char*)"ExpLOBInterfaceInsert",
 				getLobErrStr(intParam1));
+                setDiagsArea(diagsArea);
 		step_ = HANDLE_ERROR_;
 		break;
 	      }
@@ -4481,6 +4511,7 @@ short ExExeUtilFileLoadTcb::work()
 				(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/1f44166c/core/sql/executor/ExExeUtilMisc.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilMisc.cpp b/core/sql/executor/ExExeUtilMisc.cpp
index 3e11f1e..277d5e1 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)
     {
-      cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+      setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
       return -1;
     }
 
@@ -111,8 +111,7 @@ short ExExeUtilFastDeleteTcb::doPurgedataCat(char * stmt)
 
   if (cliRC < 0)
     {
-      cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
-
+      setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
       restoreCQD("EXE_PARALLEL_PURGEDATA");
       return -1;
     }
@@ -157,7 +156,7 @@ short ExExeUtilFastDeleteTcb::doLabelPurgedata(char * objectName,
 
   if (cliRC < 0)
     {
-      cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+      setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
       retcode = -1;
       goto cleanUpAndReturn;
     }
@@ -215,7 +214,7 @@ short ExExeUtilFastDeleteTcb::doFastDelete(char * objectName,
     executeImmediate("control query shape hold;");
   if (cliRC < 0)
     {
-      cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+      setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
       retcode = -1;
       goto cleanUpAndReturn;
     }
@@ -224,7 +223,7 @@ short ExExeUtilFastDeleteTcb::doFastDelete(char * objectName,
     cliInterface()->executeImmediate("control query shape esp_exchange(cut);");
   if (cliRC < 0)
     {
-      cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+      setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
       retcode = -1;
       goto cleanUpAndReturn;
     }
@@ -236,7 +235,7 @@ short ExExeUtilFastDeleteTcb::doFastDelete(char * objectName,
 	executeImmediate("control query default mv_internal_ignore_uninitialized 'ON';");
       if (cliRC < 0)
 	{
-	  cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+          setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 	  retcode = -1;
 	  goto cleanUpAndReturn;
 	}
@@ -276,7 +275,7 @@ short ExExeUtilFastDeleteTcb::doFastDelete(char * objectName,
 
   if (cliRC < 0)
     {
-      cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+      setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
       retcode = -1;
       goto cleanUpAndReturn;
     }
@@ -333,14 +332,14 @@ short ExExeUtilFastDeleteTcb::injectError(const char * val)
   if (((e1) && (strcmp(e1, val) == 0)) ||
       ((e2) && (strcmp(e2, val) == 0)))
     {
-      ComDiagsArea * da = getDiagsArea();
-      *da << DgSqlCode(-EXE_ERROR_INJECTED)
-	  << (e1 ? DgString0("SQLMX_TEST_POINT") : DgString0("SQLMX_PPD_ERR_TEST_POINT"))
-	  << DgInt0((Lng32)str_atoi(val, strlen(val)));
-
+      Lng32 errNumParam = ((Lng32)str_atoi(val, strlen(val)));
+      ComDiagsArea * diagsArea = getDiagsArea();
+      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;
 }
 
@@ -409,7 +408,7 @@ short ExExeUtilFastDeleteTcb::work()
 		    cliRC = cliInterface()->beginWork();
 		    if (cliRC < 0)
 		      {
-			cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+                        setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 			step_ = ERROR_;
 			break;
 		      }
@@ -444,8 +443,7 @@ short ExExeUtilFastDeleteTcb::work()
 	      {
 		if (cliRC < 0)
 		  {
-		    cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
-		    
+                    setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		    step_ = ERROR_;
 		    break;
 		  }
@@ -458,7 +456,7 @@ short ExExeUtilFastDeleteTcb::work()
 	    cliRC = cliInterface()->beginWork();
 	    if (cliRC < 0)
 	      {
-		cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		step_ = ERROR_;
 		break;
 	      }
@@ -508,8 +506,7 @@ short ExExeUtilFastDeleteTcb::work()
 	      rc = injectError("10");
 	    if (rc < 0)
 	      {
-		cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
-
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		// could not acquire a ddl lock.
 		// try to purgedata using catman sequential purgedata.
 
@@ -552,8 +549,7 @@ short ExExeUtilFastDeleteTcb::work()
 	      }
 	    if (rc < 0)
 	      {
-		cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
-
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		// security validation failed
 		if ((getDiagsArea()->contains(-1017)) ||
 		    (rollbackNoPDErr))
@@ -576,7 +572,7 @@ short ExExeUtilFastDeleteTcb::work()
 	      rc = injectError("12");
 	    if (rc < 0)
 	      {
-		cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		step_ = ROLLBACK_WORK_AND_ERROR_;
 		break;
 	      }
@@ -592,7 +588,7 @@ short ExExeUtilFastDeleteTcb::work()
 		  {
 		    strcpy(failReason_, "Error during commit work.");
 
-		    cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+                    setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		    step_ = ROLLBACK_WORK_AND_ERROR_;
 		    break;
 		  }
@@ -607,7 +603,7 @@ short ExExeUtilFastDeleteTcb::work()
 		strcpy(buf, "SELECT TESTEXIT;");
 		cliRC = cliInterface()->executeImmediate(buf);
 		if (cliRC < 0)
-		  cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+                  setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		  
 		strcpy(failReason_, " ");
 
@@ -625,7 +621,7 @@ short ExExeUtilFastDeleteTcb::work()
 	    cliRC = cliInterface()->beginWork();
 	    if (cliRC < 0)
 	      {
-		cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		step_ = ERROR_;
 		break;
 	      }
@@ -733,14 +729,13 @@ short ExExeUtilFastDeleteTcb::work()
 
 	    if (step_ == ROLLBACK_WORK_AND_ERROR_)
 	      {
-		ComDiagsArea * da = getDiagsArea();
-		
+		ComDiagsArea * diagsArea = getDiagsArea();
 		// convert all errors into warnings
-		NegateAllErrors(da);
-		
-		// add a new error to indicate that parallel purgedata failed.
-		*da << DgSqlCode(-EXE_PARALLEL_PURGEDATA_FAILED)
-		    << DgString0(failReason_);
+		NegateAllErrors(diagsArea);
+                ExRaiseSqlError(getHeap(), &diagsArea, -EXE_PARALLEL_PURGEDATA_FAILED,
+                    NULL, NULL, NULL,
+		    failReason_);
+                setDiagsArea(diagsArea);
 	      }
 
 	    step_ = ERROR_;
@@ -763,7 +758,7 @@ short ExExeUtilFastDeleteTcb::work()
 		strcpy(buf, "SELECT TESTEXIT;");
 		cliInterface()->executeImmediate(buf);
 		if (cliRC < 0)
-		  cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+                  setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		
 		step_ = ERROR_;
 		break;
@@ -774,10 +769,11 @@ short ExExeUtilFastDeleteTcb::work()
 		// raise a warning that parallel purgedata was performed.
 		if (fdTdb().returnPurgedataWarn())
 		  {
-		    ComDiagsArea * da = getDiagsArea();
-		    *da << DgSqlCode(EXE_PURGEDATA_CAT)
-			<< DgString0("Parallel")
-			<< DgString1("");
+		    ComDiagsArea * diagsArea = getDiagsArea();
+                    ExRaiseSqlError(getHeap(), &diagsArea, EXE_PURGEDATA_CAT,
+                        NULL, NULL, NULL,
+			"Parallel", "");
+                    setDiagsArea(diagsArea);
 		  }
 		step_ = DONE_;
 	      }
@@ -791,7 +787,7 @@ short ExExeUtilFastDeleteTcb::work()
 	    cliRC = cliInterface()->beginWork();
 	    if (cliRC < 0)
 	      {
-		cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		step_ = ERROR_;
 		break;
 	      }
@@ -806,7 +802,7 @@ short ExExeUtilFastDeleteTcb::work()
 
 	    if (rc < 0)
 	      {
-		cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		step_ = KILL_MXCMP_AND_ERROR_;
 		break;
 	      }
@@ -823,7 +819,7 @@ short ExExeUtilFastDeleteTcb::work()
 	      rc = injectError("16");
 	    if (rc < 0)
 	      {
-		cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		step_ = KILL_MXCMP_AND_ERROR_;
 		break;
 	      }
@@ -842,7 +838,7 @@ short ExExeUtilFastDeleteTcb::work()
 		  rc = injectError("17");
 		if (rc < 0)
 		  {
-		    cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+                    setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		    step_ = KILL_MXCMP_AND_ERROR_;
 		    break;
 		  }
@@ -851,7 +847,7 @@ short ExExeUtilFastDeleteTcb::work()
 	    cliRC = cliInterface()->commitWork();
 	    if (cliRC < 0)
 	      {
-		cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		step_ = ERROR_;
 		break;
 	      }
@@ -861,10 +857,11 @@ short ExExeUtilFastDeleteTcb::work()
 	    // raise a warning that parallel purgedata was performed.
 	    if (fdTdb().returnPurgedataWarn())
 	      {
-		ComDiagsArea * da = getDiagsArea();
-		*da << DgSqlCode(EXE_PURGEDATA_CAT)
-		    << DgString0("Parallel")
-		    << DgString1("");
+		ComDiagsArea * diagsArea = getDiagsArea();
+                ExRaiseSqlError(getHeap(), &diagsArea, EXE_PURGEDATA_CAT,
+                    NULL, NULL, NULL,
+		    "Parallel", "");
+                setDiagsArea(diagsArea);
 	      }
 	  }
 	break;
@@ -883,15 +880,16 @@ short ExExeUtilFastDeleteTcb::work()
 	    // for parallel purgedata, or because parallel purgedata failed.
 	    if (fdTdb().returnPurgedataWarn())
 	      {
-		ComDiagsArea * da = getDiagsArea();
+		ComDiagsArea * diagsArea = getDiagsArea();
 		if (fdTdb().doPurgedataCat())
-		  *da << DgSqlCode(EXE_PURGEDATA_CAT)
-		      << DgString0("Regular")
-		      << DgString1("Reason: Query or the object did not meet the criteria for parallel purgedata.");
+                  ExRaiseSqlError(getHeap(), &diagsArea, EXE_PURGEDATA_CAT,
+                     NULL, NULL, NULL,
+                     "Regular", "Reason: Query or the object did not meet the criteria for parallel purgedata.");
 		else
-		  *da << DgSqlCode(EXE_PURGEDATA_CAT)
-		      << DgString0("Regular")
-		      << DgString1("Reason: Parallel purgedata failed.");
+                  ExRaiseSqlError(getHeap(), &diagsArea, EXE_PURGEDATA_CAT,
+                     NULL, NULL, NULL,
+                     "Regular", "Reason: Parallel purgedata failed.");
+                setDiagsArea(diagsArea);
 	      }
 
 	    rc = doPurgedataCat(fdTdb().purgedataStmt());
@@ -1365,7 +1363,7 @@ short ExExeUtilLongRunningTcb::executeLongRunningQuery()
         "control query default HIST_ON_DEMAND_STATS_SIZE '0'");
       if (cliRC < 0) 
         {
-          cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+          setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 	  return cliRC;
         }
       
@@ -1374,7 +1372,7 @@ short ExExeUtilLongRunningTcb::executeLongRunningQuery()
       short rtc = processInitial(rc);
       if ((rc != 0) && (rc != 100))
         {
-          cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+          setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
         }
 
       cliRC = 
@@ -1382,7 +1380,7 @@ short ExExeUtilLongRunningTcb::executeLongRunningQuery()
             "control query default HIST_ON_DEMAND_STATS_SIZE 'RESET'");
       if (cliRC < 0) 
         {
-          cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+          setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 	  return cliRC;
         }
       
@@ -1418,7 +1416,7 @@ short ExExeUtilLongRunningTcb::executeLongRunningQuery()
       short rtc = processContinuing(rc);
       if ((rc != 0) && (rc != 100))
         {
-          cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
+          setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
         }
 
 #ifdef _DEBUG
@@ -1980,8 +1978,7 @@ short ExExeUtilPopulateInMemStatsTcb::work()
 	    
 	    if (cliRC < 0)
 	      {
-		cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
-
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		step_ = ERROR_;
 	      }
 	    else
@@ -2037,8 +2034,7 @@ short ExExeUtilPopulateInMemStatsTcb::work()
 	    
 	    if (cliRC < 0)
 	      {
-		cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
-
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		step_ = ERROR_;
 	      }
 	    else
@@ -2094,8 +2090,7 @@ short ExExeUtilPopulateInMemStatsTcb::work()
 	    
 	    if (cliRC < 0)
 	      {
-		cliInterface()->retrieveSQLDiagnostics(getDiagsArea());
-
+                setDiagsArea(cliInterface()->allocAndRetrieveSQLDiagnostics(getDiagsArea()));
 		step_ = ERROR_;
 	      }
 	    else
@@ -2256,18 +2251,13 @@ ExExeUtilHiveTruncateTcb::~ExExeUtilHiveTruncateTcb()
 void ExExeUtilHiveTruncateTcb::freeResources()
 {
   if (htTdb().getDropOnDealloc())
-    {
+  {
       NAString hiveDropDDL("drop table ");
-      HiveClient_JNI *hiveClient = HiveClient_JNI::getInstance();
-
       hiveDropDDL += htTdb().getHiveTableName();
 
-      // ignore errors on drop
-      if (!hiveClient->isInitialized() ||
-          !hiveClient->isConnected())
-        hiveClient->init();
-      hiveClient->executeHiveSQL(hiveDropDDL);
-    }
+      // TODO: is it ok to ignore the error 
+      HiveClient_JNI::executeHiveSQL(hiveDropDDL);
+  }
   if (lobGlob_) {
     ExpLOBinterfaceCleanup(lobGlob_);
     lobGlob_ = NULL;
@@ -2426,7 +2416,6 @@ short ExExeUtilHiveTruncateTcb::work()
                           NULL, NULL, NULL,
                           reason,
                           NULL, NULL);
-          
           pentry_down->setDiagsArea(diagsArea);
           step_ = ERROR_;
         }
@@ -2572,15 +2561,16 @@ short ExExeUtilHiveQueryTcb::work()
           
         case PROCESS_QUERY_:
           {
-            ComDiagsArea * diags = getDiagsArea();
-
-            if (!CmpCommon::context()->execHiveSQL(htTdb().getHiveQuery(),
-                                                   diags))
-              {
+            if (HiveClient_JNI::executeHiveSQL(htTdb().getHiveQuery()) != HVC_OK)
+            {
+                ComDiagsArea * diagsArea = NULL;
+                ExRaiseSqlError(getHeap(), &diagsArea, -1214,
+                        NULL, NULL, NULL,
+                        getSqlJniErrorStr(), htTdb().getHiveQuery()); 
+                setDiagsArea(diagsArea);
                 step_ = ERROR_;
                 break;
-              }
-
+            }
             step_ = DONE_;
           }
           break;
@@ -2589,8 +2579,8 @@ short ExExeUtilHiveQueryTcb::work()
           {
             if (handleError())
               return WORK_OK;
-
-	    getDiagsArea()->clear();
+            if (getDiagsArea() != NULL)
+	       getDiagsArea()->clear();
             
             step_ = DONE_;
           }

http://git-wip-us.apache.org/repos/asf/trafodion/blob/1f44166c/core/sql/executor/ExExeUtilVolTab.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilVolTab.cpp b/core/sql/executor/ExExeUtilVolTab.cpp
index 9201374..365b9cd 100644
--- a/core/sql/executor/ExExeUtilVolTab.cpp
+++ b/core/sql/executor/ExExeUtilVolTab.cpp
@@ -517,9 +517,9 @@ short ExExeUtilCleanupVolatileTablesTcb::work()
 	      {
 		// cannot have a transaction running.
 		// Return error.
-                ComDiagsArea * diags = getDiagsArea();
-                *diags << DgSqlCode(-EXE_BEGIN_TRANSACTION_ERROR);
-
+                ComDiagsArea * diagsArea = getDiagsArea();
+                ExRaiseSqlError(getHeap(), &diagsArea, -EXE_BEGIN_TRANSACTION_ERROR);
+                setDiagsArea(diagsArea);
 		step_ = ERROR_;
 		break;
 	      }
@@ -558,13 +558,11 @@ short ExExeUtilCleanupVolatileTablesTcb::work()
 	    char * schemaName = vi->get(0);
 	    retcode =
 	      dropVolatileSchema(masterGlob->getStatement()->getContext(),
-				 schemaName, getHeap(), getGlobals(),
-                                 getDiagsArea());
+				 schemaName, getHeap(), getDiagsArea(), getGlobals());
 	    if (retcode < 0)
 	      {
                 // changes errors to warnings and move on to next schema.
-                if (getDiagsArea())
-                  getDiagsArea()->negateAllErrors();
+                getDiagsArea()->negateAllErrors();
 
 		// clear diags and move on to next schema.
 		// Remember that an error was returned, we will
@@ -594,9 +592,11 @@ short ExExeUtilCleanupVolatileTablesTcb::work()
 	      {
 		// add a warning to indicate that some schemas were not
 		// dropped.
-                ComDiagsArea * diags = getDiagsArea();
-                *diags << DgSqlCode(1069)
-                       << DgSchemaName(errorSchemas_);
+                ComDiagsArea * diagsArea = getDiagsArea();
+                ExRaiseSqlError(getHeap(), &diagsArea, 1069,
+                       NULL, NULL, NULL,
+                       errorSchemas_);
+                setDiagsArea(diagsArea);
 	      }
 	    step_ = CLEANUP_HIVE_TABLES_;
 	  }
@@ -605,7 +605,7 @@ short ExExeUtilCleanupVolatileTablesTcb::work()
 	case CLEANUP_HIVE_TABLES_:
 	  {
             if (cvtTdb().cleanupHiveCSETables())
-              dropHiveTempTablesForCSEs(getDiagsArea());
+              dropHiveTempTablesForCSEs();
 
 	    step_ = DONE_;
 	  }
@@ -644,8 +644,8 @@ short ExExeUtilCleanupVolatileTablesTcb::dropVolatileSchema
 (ContextCli * currContext,
  char * schemaName,
  CollHeap * heap,
- ex_globals *glob,
- ComDiagsArea *diagsArea)
+ ComDiagsArea *&diagsArea,
+ ex_globals *glob)
 {
   const char *parentQid = NULL;
   if (glob)
@@ -688,7 +688,7 @@ short ExExeUtilCleanupVolatileTablesTcb::dropVolatileSchema
 
   // issue the drop schema command 
   Lng32 cliRC = cliInterface.executeImmediate(dropSchema);
-  cliInterface.retrieveSQLDiagnostics(diagsArea);
+  cliInterface.allocAndRetrieveSQLDiagnostics(diagsArea);
                 
   // reset volatile schema bit
   //  currContext->resetSqlParserFlags(0x8000); // ALLOW_VOLATILE_SCHEMA_CREATION
@@ -736,8 +736,7 @@ short ExExeUtilCleanupVolatileTablesTcb::dropVolatileTables
   return cliRC;
 }
 
-short ExExeUtilCleanupVolatileTablesTcb::dropHiveTempTablesForCSEs(
-     ComDiagsArea * diagsArea)
+short ExExeUtilCleanupVolatileTablesTcb::dropHiveTempTablesForCSEs()
 {
   Queue * hiveTableNames = NULL;
   // Todo: CSE: support schemas other than default for temp tables
@@ -774,7 +773,7 @@ short ExExeUtilCleanupVolatileTablesTcb::dropHiveTempTablesForCSEs(
           NAString dropHiveTable("drop table ");
 
           dropHiveTable += origTableName;
-          if (!CmpCommon::context()->execHiveSQL(dropHiveTable.data()))
+          if (HiveClient_JNI::executeHiveSQL(dropHiveTable.data()) != HVC_OK)
             ; // ignore errors for now
         }
 

http://git-wip-us.apache.org/repos/asf/trafodion/blob/1f44166c/core/sql/executor/ExHdfsScan.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExHdfsScan.cpp b/core/sql/executor/ExHdfsScan.cpp
index a9ab2d2..91bdc62 100644
--- a/core/sql/executor/ExHdfsScan.cpp
+++ b/core/sql/executor/ExHdfsScan.cpp
@@ -1552,7 +1552,8 @@ ExWorkProcRetcode ExHdfsScanTcb::work()
 	        da = ComDiagsArea::allocate(getHeap());
 	        workAtp_->setDiagsArea(da);
 	      }
-	      *da << DgSqlCode(-EXE_MAX_ERROR_ROWS_EXCEEDED);
+              ExRaiseSqlError(getHeap(), &da,
+                (ExeErrorCode)(EXE_MAX_ERROR_ROWS_EXCEEDED));
 	      step_ = HANDLE_ERROR_WITH_CLOSE;
 	      break;
 	    }