trafodion-codereview mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From robertamarton <...@git.apache.org>
Subject [GitHub] trafodion pull request #1721: [TRAFODION-3216]UDR libraries need to be store...
Date Sun, 14 Oct 2018 23:52:42 GMT
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.


---

Mime
View raw message