Github user robertamarton commented on a diff in the pull request:
https://github.com/apache/trafodion/pull/1721#discussion_r225014911
--- Diff: core/sql/sqlcomp/CmpSeabaseDDLroutine.cpp ---
@@ -389,12 +388,245 @@ void CmpSeabaseDDL::createSeabaseLibrary(
}
char * query = new(STMTHEAP) char[1000];
- str_sprintf(query, "insert into %s.\"%s\".%s values (%ld, '%s', %d, 0)",
- getSystemCatalog(), SEABASE_MD_SCHEMA, SEABASE_LIBRARIES,
- objUID,
+
+ //We come here only if CQD says use the old style without blobs .
+ //So insert a NULL into the blob column.
+ str_sprintf(query, "insert into %s.\"%s\".%s values (%ld, '%s',NULL, %d,
0)",
+ getSystemCatalog(), SEABASE_MD_SCHEMA, SEABASE_LIBRARIES,
+ objUID,
libFileName.data(),
createLibraryNode->getVersion());
+
+
+ Lng32 cliRC = cliInterface.executeImmediate(query);
+
+ NADELETEBASIC(query, STMTHEAP);
+ if (cliRC < 0)
+ {
+ cliInterface.retrieveSQLDiagnostics(CmpCommon::diags());
+ processReturn();
+ return;
+ }
+
+
+
+ // hope to remove this call soon by setting thevalid flag to Y sooner
+ if (updateObjectValidDef(&cliInterface,
+ catalogNamePart, schemaNamePart, objectNamePart,
+ COM_LIBRARY_OBJECT_LIT,
+ "Y"))
+ {
+ deallocEHI(ehi);
+ processReturn();
+ return;
+ }
+
+ processReturn();
+
+ return;
+}
+short CmpSeabaseDDL::isLibBlobStoreValid(ExeCliInterface *cliInterface)
+{
+ Int32 cliRC=0;
+ char buf[4000];
+ char * query = new(STMTHEAP) char[1000];
+ str_sprintf(query, "select [first 1] library_storage from %s.\"%s\".%s ",
+ getSystemCatalog(), SEABASE_MD_SCHEMA, SEABASE_LIBRARIES
+ );
+
+ // set pointer in diags area
+ int32_t diagsMark = CmpCommon::diags()->mark();
+ cliRC = cliInterface->fetchRowsPrologue(query, TRUE/*no exec*/);
+ if (cliRC < 0)
+ {
+ cliInterface->retrieveSQLDiagnostics(CmpCommon::diags());
+ CmpCommon::diags()->rewind(diagsMark);
+ NADELETEBASIC(query, STMTHEAP);
+ return -1;
+ }
+
+ cliRC = cliInterface->clearExecFetchClose(NULL, 0);
+ if (cliRC < 0)
+ {
+ cliInterface->retrieveSQLDiagnostics(CmpCommon::diags());
+ CmpCommon::diags()->rewind(diagsMark);
+ NADELETEBASIC(query, STMTHEAP);
+ return -1;
+ }
+
+ if (cliRC >=0)
+ {
+ //found the new column.
+ NADELETEBASIC(query, STMTHEAP);
+ CmpCommon::diags()->rewind(diagsMark);
+ return 0;
+ }
+
+ return 0;
+ NADELETEBASIC(query, STMTHEAP);
+
+}
+
+void CmpSeabaseDDL::createSeabaseLibrary2(
+ StmtDDLCreateLibrary * createLibraryNode,
+ NAString &currCatName,
+ NAString &currSchName)
--- End diff --
There is a lot of duplicate code between createSeabaseLibrary and
createSeabaseLibrary2. In a future release, maybe these can be refactored.
---