Github user zellerh commented on a diff in the pull request:
https://github.com/apache/trafodion/pull/1504#discussion_r178896649
--- Diff: core/sql/executor/ExExeUtilCli.cpp ---
@@ -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)
--- End diff --
A comment would help here that we are returning the diagnostics if
diagsArea is non-null and that we are saving them if NULL is passed in.
---