[
https://issues.apache.org/jira/browse/TRAFODION-3216?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16649575#comment-16649575
]
ASF GitHub Bot commented on TRAFODION-3216:
-------------------------------------------
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.
> UDR libraries need to be stored in metadata table as a blob
> -----------------------------------------------------------
>
> Key: TRAFODION-3216
> URL: https://issues.apache.org/jira/browse/TRAFODION-3216
> Project: Apache Trafodion
> Issue Type: Improvement
> Components: sql-general
> Affects Versions: 2.4
> Reporter: Sandhya Sundaresan
> Assignee: Sandhya Sundaresan
> Priority: Major
> Fix For: 2.4
>
> Attachments: Support for LOB storage in metadata for UDR
> libraries.docx
>
>
> This is one of many infrastructure changes for SPJs that was planned.
> * {color:#0070c0}Store UDR libraries in BLOBs {color}
> * {color:#0070c0}Add BLOB column to library metadata table{color}
> * {color:#0070c0}Change CREATE LIBRARY command to store library in
> BLOB{color}
> * {color:#0070c0}Change library file names to include the timestamp (so
> updating a library changes the name){color}
> * {color:#0070c0}Add a cache for libraries (a new directory,
> $TRAF_HOME/udr/public/lib){color}
> * {color:#0070c0}Change UDR code to read library from the metadata table
> when not in cache{color}
> * {color:#0070c0}Upgrade support{color}
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)