Github user robertamarton commented on a diff in the pull request:
https://github.com/apache/trafodion/pull/1721#discussion_r225014757
--- Diff: core/sql/executor/ExExeUtilLoad.cpp ---
@@ -3288,6 +3288,45 @@ short ExExeUtilLobExtractTcb::work()
return 0;
}
+
+short ExExeUtilLobExtractLibrary(ExeCliInterface *cliInterface,char
*libHandle, char *cachedLibName,ComDiagsArea *toDiags)
+{
+ char buf[1000];
+ Int32 cliRC =0;
+ str_sprintf(buf, "extract lobtofile(LOB
'%s','%s');",libHandle,cachedLibName);
+
+
+ cliRC = cliInterface->fetchRowsPrologue(buf, TRUE/*no exec*/);
+ if (cliRC < 0)
+ {
+ cliInterface->retrieveSQLDiagnostics(toDiags);
--- End diff --
Now that I have a better understanding of how diags areas work, is toDiags
always guaranteed to be not NULL? That is, should you call
allocAndRetrieveSQLDiagnostics? The reason I mentioned this is that I am in
the process of fixing an issue in ExExeUtilGet where the diags pointer is NULL
and the code does a retrieveSQLDiags instead of allocAndRetrieve ..
---