Repository: trafodion
Updated Branches:
  refs/heads/master d83b97efe -> 8058e144f


http://git-wip-us.apache.org/repos/asf/trafodion/blob/9528f8c0/core/sql/sqlcomp/CmpSeabaseDDLupgrade.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/CmpSeabaseDDLupgrade.cpp 
b/core/sql/sqlcomp/CmpSeabaseDDLupgrade.cpp
index b2cea77..fe09364 100644
--- a/core/sql/sqlcomp/CmpSeabaseDDLupgrade.cpp
+++ b/core/sql/sqlcomp/CmpSeabaseDDLupgrade.cpp
@@ -39,6 +39,7 @@
 #include "CmpDDLCatErrorCodes.h"
 #include "CmpSeabaseDDLupgrade.h"
 #include "CmpSeabaseDDLrepos.h"
+#include "CmpSeabaseDDLroutine.h"
 #include "PrivMgrMD.h"
 
 NABoolean CmpSeabaseMDupgrade::isOldMDtable(const NAString &objName)
@@ -84,6 +85,17 @@ NABoolean CmpSeabaseMDupgrade::isReposUpgradeNeeded()
   return FALSE;
 }
 
+NABoolean CmpSeabaseMDupgrade::isLibrariesUpgradeNeeded()
+{
+  for (Lng32 i = 0; i < sizeof(allLibrariesUpgradeInfo)/sizeof(MDUpgradeInfo); 
i++)
+    {
+      const MDUpgradeInfo &mdti = allLibrariesUpgradeInfo[i];
+      if (mdti.upgradeNeeded)
+        return TRUE;
+    }
+  return FALSE;
+}
+
 // ----------------------------------------------------------------------------
 // isPrivsUpgradeNeeded
 //
@@ -314,7 +326,7 @@ short 
CmpSeabaseMDupgrade::executeSeabaseMDupgrade(CmpDDLwithStatusInfo *mdui,
   // now as they are stateless
   CmpSeabaseUpgradeRepository upgradeRepository;
   CmpSeabaseUpgradePrivMgr upgradePrivMgr;
-
+  CmpSeabaseUpgradeLibraries upgradeLibraries;
   ExeCliInterface cliInterface(STMTHEAP, 0, NULL,
     CmpCommon::context()->sqlSession()->getParentQid());
   ExpHbaseInterface * ehi = NULL;
@@ -323,8 +335,8 @@ short 
CmpSeabaseMDupgrade::executeSeabaseMDupgrade(CmpDDLwithStatusInfo *mdui,
     {
       // The line below is useful when debugging upgrade; it shows the step 
progression
       // through the upgrade state machine.
-      // cout << "mdui->step() is " << mdui->step() 
-      //      << ", mdui->subStep() is " << mdui->subStep() << endl;
+       cout << "mdui->step() is " << mdui->step() 
+            << ", mdui->subStep() is " << mdui->subStep() << endl;
 
       switch (mdui->step())
        {
@@ -649,9 +661,11 @@ short 
CmpSeabaseMDupgrade::executeSeabaseMDupgrade(CmpDDLwithStatusInfo *mdui,
 
                  Int64 mdCurrMajorVersion;
                  Int64 mdCurrMinorVersion;
+                  Int64 mdCurrUpdateVersion;
                  retcode = validateVersions(&ActiveSchemaDB()->getDefaults(), 
ehi,
                                             &mdCurrMajorVersion,
-                                            &mdCurrMinorVersion);
+                                            &mdCurrMinorVersion,
+                                             &mdCurrUpdateVersion);
 
                  deallocEHI(ehi);
 
@@ -668,10 +682,13 @@ short 
CmpSeabaseMDupgrade::executeSeabaseMDupgrade(CmpDDLwithStatusInfo *mdui,
                      
                      return 0;
                    }
-                 else if (retcode == -1395) // mismatch in MAJOR version. Need 
to upgrade
+                 else if (retcode == -1395) // mismatch in version. Need to 
upgrade
                    {
-                     if ((mdCurrMajorVersion == METADATA_OLD_MAJOR_VERSION) &&
-                         (mdCurrMinorVersion == METADATA_OLD_MINOR_VERSION))
+                     if (((mdCurrMajorVersion == METADATA_OLD_MAJOR_VERSION) &&
+                         (mdCurrMinorVersion == METADATA_OLD_MINOR_VERSION)) ||
+                          ((mdCurrMajorVersion == METADATA_MAJOR_VERSION) && 
+                           (mdCurrMinorVersion == METADATA_MINOR_VERSION) &&
+                           (mdCurrUpdateVersion == 
METADATA_OLD_UPDATE_VERSION)/*update version only*/))
                        {
                           NAString upgItems;
                           if (isUpgradeNeeded())
@@ -694,12 +711,18 @@ short 
CmpSeabaseMDupgrade::executeSeabaseMDupgrade(CmpDDLwithStatusInfo *mdui,
                                 {
                                   upgItems += " Repository,";
                                 }
+                              if (upgradeLibraries.needsUpgrade(this))
+                                {
+                                  upgItems += " Libraries,";
+                                }
                               if (NOT upgItems.isNull())
                                 {
                                   upgItems = 
upgItems.strip(NAString::trailing, ',');
                                   upgItems += ".";
                                 }
                             }
+                          // The VERSIONS table hs only a Major and Minor 
version so we have this funny encoding below
+                          // mdUpdate version can be 0 to 10 max. 
                          str_sprintf(msgBuf, "  Metadata needs to be upgraded 
from Version %ld.%ld.%ld to %d.%d.%d.%s",
                                      mdCurrMajorVersion, 
mdCurrMinorVersion/10, 
                                       (mdCurrMinorVersion - 
(mdCurrMinorVersion/10)*10),
@@ -1603,7 +1626,7 @@ short 
CmpSeabaseMDupgrade::executeSeabaseMDupgrade(CmpDDLwithStatusInfo *mdui,
           {
             if (NOT isReposUpgradeNeeded())
               {
-                mdui->setStep(UPGRADE_PRIV_MGR);
+                mdui->setStep(UPGRADE_LIBRARIES);
                 mdui->setSubstep(0);
                 break;
               }
@@ -1637,6 +1660,43 @@ short 
CmpSeabaseMDupgrade::executeSeabaseMDupgrade(CmpDDLwithStatusInfo *mdui,
           }
           break;
 
+        case UPGRADE_LIBRARIES:
+          {
+             if (NOT isLibrariesUpgradeNeeded())
+              {
+                mdui->setStep(UPGRADE_PRIV_MGR);
+                mdui->setSubstep(0);
+                break;
+              }
+
+            if (xnInProgress(&cliInterface))
+              {
+                *CmpCommon::diags() << DgSqlCode(-20123);
+                
+                mdui->setStep(UPGRADE_FAILED_RESTORE_OLD_REPOS);
+                mdui->setSubstep(0);
+                
+                break;
+              }
+            
+            cliRC = upgradeLibraries.doUpgrade(&cliInterface, mdui, this, 
ddlXns);
+            if (cliRC != 0)
+              {
+                mdui->setStep(UPGRADE_FAILED_RESTORE_OLD_LIBRARIES);
+                mdui->setSubstep(-(cliRC+1));
+                
+                break;
+              }
+            
+            if (mdui->endStep())
+              {
+                mdui->setStep(UPGRADE_PRIV_MGR);
+                mdui->setSubstep(0);
+              }
+            
+            return 0;
+          }
+          break;
        case UPDATE_VERSION:
          {
            switch (mdui->subStep())
@@ -1657,7 +1717,7 @@ short 
CmpSeabaseMDupgrade::executeSeabaseMDupgrade(CmpDDLwithStatusInfo *mdui,
                    {
                      *CmpCommon::diags() << DgSqlCode(-20123);
 
-                     mdui->setStep(UPGRADE_FAILED_RESTORE_OLD_REPOS);
+                     mdui->setStep(UPGRADE_FAILED_RESTORE_OLD_LIBRARIES);
                      mdui->setSubstep(0);
 
                      break;
@@ -1668,7 +1728,7 @@ short 
CmpSeabaseMDupgrade::executeSeabaseMDupgrade(CmpDDLwithStatusInfo *mdui,
                    {
                      cliInterface.retrieveSQLDiagnostics(CmpCommon::diags());
 
-                     mdui->setStep(UPGRADE_FAILED_RESTORE_OLD_REPOS);
+                     mdui->setStep(UPGRADE_FAILED_RESTORE_OLD_LIBRARIES);
                      mdui->setSubstep(0);
 
                      break;
@@ -1677,7 +1737,7 @@ short 
CmpSeabaseMDupgrade::executeSeabaseMDupgrade(CmpDDLwithStatusInfo *mdui,
                  cliRC = updateSeabaseVersions(&cliInterface, 
TRAFODION_SYSCAT_LIT);
                  if (cliRC < 0)
                    {
-                     mdui->setStep(UPGRADE_FAILED_RESTORE_OLD_REPOS);
+                     mdui->setStep(UPGRADE_FAILED_RESTORE_OLD_LIBRARIES);
                      mdui->setSubstep(0);
 
                      break;
@@ -1691,7 +1751,7 @@ short 
CmpSeabaseMDupgrade::executeSeabaseMDupgrade(CmpDDLwithStatusInfo *mdui,
                    {
                      cliInterface.retrieveSQLDiagnostics(CmpCommon::diags());
                    
-                     mdui->setStep(UPGRADE_FAILED_RESTORE_OLD_REPOS);
+                     mdui->setStep(UPGRADE_FAILED_RESTORE_OLD_LIBRARIES);
                      mdui->setSubstep(0);
 
                      break;
@@ -1703,7 +1763,7 @@ short 
CmpSeabaseMDupgrade::executeSeabaseMDupgrade(CmpDDLwithStatusInfo *mdui,
                       (NOT isViewsUpgradeNeeded()))
                     mdui->setStep(METADATA_UPGRADED);
                   else
-                    mdui->setStep(OLD_REPOS_DROP);
+                    mdui->setStep(OLD_LIBRARIES_DROP);
                  mdui->setSubstep(0);
                  mdui->setEndStep(TRUE);
                   
@@ -1739,7 +1799,31 @@ short 
CmpSeabaseMDupgrade::executeSeabaseMDupgrade(CmpDDLwithStatusInfo *mdui,
               }
          }
          break;
-
+       case OLD_LIBRARIES_DROP:
+         {
+            if (upgradeLibraries.needsUpgrade(this))
+              {
+                if (upgradeLibraries.doDrops(&cliInterface,mdui,this))
+                  {
+                    // no status message in this case so no return
+                    cliInterface.clearGlobalDiags();
+                    mdui->setStep(OLD_REPOS_DROP);
+                    mdui->setSubstep(0);
+                    mdui->setEndStep(TRUE);
+                  }
+                else
+                  {
+                    if (mdui->endStep())
+                      {
+                        mdui->setStep(OLD_REPOS_DROP);
+                        mdui->setSubstep(0);
+                        mdui->setEndStep(TRUE);
+                      }                   
+                    return 0;
+                  }
+              }
+         }
+         break;
        case OLD_MD_TABLES_HBASE_DELETE:
          {
            switch (mdui->subStep())
@@ -1901,7 +1985,50 @@ short 
CmpSeabaseMDupgrade::executeSeabaseMDupgrade(CmpDDLwithStatusInfo *mdui,
               }
           }
           break;
+        case UPGRADE_FAILED_RESTORE_OLD_LIBRARIES:
+          {
+            // Note: We can't combine this case with UPGRADE_FAILED etc.
+            // below, because the subsystem code uses mdui->subStep()
+            // to keep track of its progress.
+
+            if (upgradeLibraries.needsUpgrade(this))
+              {
+                if (xnInProgress(&cliInterface))
+                  {
+                    cliRC = rollbackXn(&cliInterface);
+                    if (cliRC < 0)
+                      {
+                        // ignore errors
+                      }
+                  }
 
+                if (upgradeLibraries.doUndo(&cliInterface,mdui,this))
+                  {
+                    // ignore errors; no status message so just continue on
+                    cliInterface.clearGlobalDiags();
+                    mdui->setStep(OLD_REPOS_DROP);
+                    mdui->setSubstep(0);
+                    mdui->setEndStep(TRUE);
+                  }
+                else
+                  {
+                    if (mdui->endStep())
+                      {
+                        mdui->setStep(OLD_REPOS_DROP);
+                        mdui->setSubstep(0);
+                        mdui->setEndStep(TRUE);
+                      }
+                    return 0;
+                  }
+              }
+            else
+              {
+                mdui->setStep(OLD_REPOS_DROP);
+                mdui->setSubstep(0);
+                mdui->setEndStep(TRUE);
+              }
+          }
+          break;
        case UPGRADE_FAILED:
        case UPGRADE_FAILED_RESTORE_OLD_MD:
        case UPGRADE_FAILED_DROP_OLD_MD:
@@ -2502,6 +2629,35 @@ short 
CmpSeabaseMDupgrade::customizeNewMDv23tov30(CmpDDLwithStatusInfo *mdui,
 }
 
 // ----------------------------------------------------------------------------
+// Methods for class CmpSeabaseUpgradeLibraries
+// ----------------------------------------------------------------------------
+NABoolean CmpSeabaseUpgradeLibraries::needsUpgrade(CmpSeabaseMDupgrade * 
ddlState)
+{ 
+  return ddlState->isLibrariesUpgradeNeeded();
+}
+
+short CmpSeabaseUpgradeLibraries::doUpgrade(ExeCliInterface * cliInterface,
+  CmpDDLwithStatusInfo * mdui,
+  CmpSeabaseMDupgrade * ddlState,
+  NABoolean /* ddlXns */)
+{
+  return ddlState->upgradeLibraries(cliInterface,mdui);
+}
+
+short CmpSeabaseUpgradeLibraries::doDrops(ExeCliInterface * cliInterface,
+  CmpDDLwithStatusInfo * mdui, CmpSeabaseMDupgrade * ddlState)
+{
+  return ddlState->upgradeLibrariesComplete(cliInterface,mdui);
+}
+
+short CmpSeabaseUpgradeLibraries::doUndo(ExeCliInterface * cliInterface,
+  CmpDDLwithStatusInfo * mdui, CmpSeabaseMDupgrade * ddlState)
+{
+  return ddlState->upgradeLibrariesUndo(cliInterface,mdui);
+}
+
+
+// ----------------------------------------------------------------------------
 // Methods for class CmpSeabaseUpgradeRepository
 // ----------------------------------------------------------------------------
 NABoolean CmpSeabaseUpgradeRepository::needsUpgrade(CmpSeabaseMDupgrade * 
ddlState)

http://git-wip-us.apache.org/repos/asf/trafodion/blob/9528f8c0/core/sql/sqlcomp/CmpSeabaseDDLupgrade.h
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/CmpSeabaseDDLupgrade.h 
b/core/sql/sqlcomp/CmpSeabaseDDLupgrade.h
index 1c3b2ee..8d37766 100644
--- a/core/sql/sqlcomp/CmpSeabaseDDLupgrade.h
+++ b/core/sql/sqlcomp/CmpSeabaseDDLupgrade.h
@@ -212,8 +212,8 @@ struct MDDescsInfo
 // This section should reflect the upgrade steps needed to go from
 // previous to current version.
 // Modify it as needed.
-// Currently it is set to upgrade from V11(source major version 1, minor 
version 1)
-// to V21.
+// Currently it is set to upgrade from V210(source major version 1, minor 
version 1)
+// to V211.
 //////////////////////////////////////////////////////////////
 static const MDUpgradeInfo allMDupgradeInfo[] = {
   {SEABASE_AUTHS, SEABASE_AUTHS_OLD_MD,
@@ -230,6 +230,141 @@ static const MDUpgradeInfo allMDupgradeInfo[] = {
 
   {SEABASE_DEFAULTS, SEABASE_DEFAULTS_OLD_MD,
    seabaseDefaultsDDL, sizeof(seabaseDefaultsDDL),
+   NULL,0,
+   NULL, 0,
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+  
+  {SEABASE_INDEXES, SEABASE_INDEXES_OLD_MD,
+   seabaseIndexesDDL, sizeof(seabaseIndexesDDL),
+   NULL, 0,
+   NULL, 0,
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+
+  {SEABASE_KEYS, SEABASE_KEYS_OLD_MD,
+   seabaseKeysDDL, sizeof(seabaseKeysDDL),
+   NULL, 0,
+   NULL, 0,
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+
+
+  {SEABASE_LIBRARIES_USAGE, SEABASE_LIBRARIES_USAGE_OLD_MD,
+   seabaseLibrariesUsageDDL, sizeof(seabaseLibrariesUsageDDL),
+   NULL,0,
+   NULL, 0,
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+
+
+  {SEABASE_OBJECTS, SEABASE_OBJECTS_OLD_MD,
+   seabaseObjectsDDL, sizeof(seabaseObjectsDDL),
+   NULL, 0,
+   NULL, 0,
+   FALSE,NULL,NULL,NULL, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+
+  {SEABASE_OBJECTS_UNIQ_IDX, SEABASE_OBJECTS_UNIQ_IDX_OLD_MD,
+   seabaseObjectsUniqIdxDDL, sizeof(seabaseObjectsUniqIdxDDL),
+   NULL, 0,
+   NULL, 0,
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE},
+
+  {SEABASE_REF_CONSTRAINTS, SEABASE_REF_CONSTRAINTS_OLD_MD,
+   seabaseRefConstraintsDDL, sizeof(seabaseRefConstraintsDDL),
+   NULL, 0,
+   NULL, 0,
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+
+  {SEABASE_ROUTINES, SEABASE_ROUTINES_OLD_MD,
+   seabaseRoutinesDDL, sizeof(seabaseRoutinesDDL),
+   NULL,NULL,
+   NULL, 0,
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE},
+
+  {SEABASE_SEQ_GEN, SEABASE_SEQ_GEN_OLD_MD,
+   seabaseSeqGenDDL, sizeof(seabaseSeqGenDDL),
+   NULL, 0,
+   NULL, 0,
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+
+  {SEABASE_TABLES, SEABASE_TABLES_OLD_MD,
+   seabaseTablesDDL, sizeof(seabaseTablesDDL),
+   NULL, 0,
+   NULL, 0,
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+
+  {SEABASE_TABLE_CONSTRAINTS, SEABASE_TABLE_CONSTRAINTS_OLD_MD,
+   seabaseTableConstraintsDDL, sizeof(seabaseTableConstraintsDDL),
+   NULL, 0,
+   NULL, 0,
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+
+   
+  {SEABASE_TABLE_CONSTRAINTS_IDX, SEABASE_TABLE_CONSTRAINTS_IDX_OLD_MD, 
+   seabaseTableConstraintsIdxDDL, sizeof(seabaseTableConstraintsIdxDDL),
+   NULL, 0,
+   NULL, 0,
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE},
+
+  {SEABASE_TEXT, SEABASE_TEXT_OLD_MD,
+   seabaseTextDDL, sizeof(seabaseTextDDL),
+   NULL, 0,
+   NULL, 0,
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+
+  {SEABASE_UNIQUE_REF_CONSTR_USAGE, SEABASE_UNIQUE_REF_CONSTR_USAGE_OLD_MD,
+   seabaseUniqueRefConstrUsageDDL, sizeof(seabaseUniqueRefConstrUsageDDL),
+   NULL, 0,
+   NULL, 0,
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+
+  {SEABASE_VERSIONS, SEABASE_VERSIONS_OLD_MD,
+   seabaseVersionsDDL, sizeof(seabaseVersionsDDL),
+   NULL, 0,
+   NULL, 0,
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+
+  {SEABASE_VIEWS, SEABASE_VIEWS_OLD_MD,
+   seabaseViewsDDL, sizeof(seabaseViewsDDL),
+   NULL, 0,
+   NULL, 0,
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+
+  {SEABASE_VIEWS_USAGE, SEABASE_VIEWS_USAGE_OLD_MD,
+   seabaseViewsUsageDDL, sizeof(seabaseViewsUsageDDL),
+   NULL, 0,
+   NULL, 0,
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+
+  {SEABASE_VALIDATE_SPJ, SEABASE_VALIDATE_SPJ_OLD_MD,
+   NULL, 0,
+   NULL, 0,
+   NULL, 0,
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE},
+
+  {SEABASE_VALIDATE_LIBRARY, SEABASE_VALIDATE_LIBRARY_OLD_MD,
+   NULL, 0,
+   NULL, 0,
+   NULL, 0,
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE}
+
+};
+
+//////////////////////////////////////////////////////////////
+// This struct is set up for V110 to V210 upgrade.
+//////////////////////////////////////////////////////////////
+static const MDUpgradeInfo allMDv110tov210TablesInfo[] = {
+ {SEABASE_AUTHS, SEABASE_AUTHS_OLD_MD,
+   seabaseAuthsDDL, sizeof(seabaseAuthsDDL),
+   NULL, 0,
+   NULL, 0,
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+
+  {SEABASE_COLUMNS, SEABASE_COLUMNS_OLD_MD,
+   seabaseColumnsDDL, sizeof(seabaseColumnsDDL),
+   NULL, 0,
+   NULL, 0,
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+
+  {SEABASE_DEFAULTS, SEABASE_DEFAULTS_OLD_MD,
+   seabaseDefaultsDDL, sizeof(seabaseDefaultsDDL),
    seabaseOldTrafMDv11DefaultsDDL, sizeof(seabaseOldTrafMDv11DefaultsDDL),
    NULL, 0,
    TRUE, 
@@ -385,6 +520,9 @@ static const MDUpgradeInfo allMDupgradeInfo[] = {
 
 };
 
+
+
+
 //////////////////////////////////////////////////////////////
 // This struct is set up for V23 to V30 upgrade.
 //////////////////////////////////////////////////////////////
@@ -431,11 +569,11 @@ static const MDUpgradeInfo allMDv23tov30TablesInfo[] = {
    "object_uid, column_name, keyseq_number, column_number, ordering, 
nonkeycol, 0",
    NULL, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE},
 
-  {SEABASE_LIBRARIES, SEABASE_LIBRARIES_OLD_MD,
+  /*{SEABASE_LIBRARIES, SEABASE_LIBRARIES_OLD_MD,
    seabaseLibrariesDDL, sizeof(seabaseLibrariesDDL),
    NULL, 0,
    NULL, 0,
-   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+   FALSE, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},*/
 
   {SEABASE_LIBRARIES_USAGE, SEABASE_LIBRARIES_USAGE_OLD_MD,
    seabaseLibrariesUsageDDL, sizeof(seabaseLibrariesUsageDDL),
@@ -578,12 +716,15 @@ class CmpSeabaseMDupgrade : public CmpSeabaseDDL
     UPDATE_MD_VIEWS,
     UPGRADE_REPOS,
     UPGRADE_PRIV_MGR,
+    UPGRADE_LIBRARIES,
     UPDATE_VERSION,
     OLD_REPOS_DROP,
+    OLD_LIBRARIES_DROP,
     METADATA_UPGRADED,
     UPGRADE_DONE,
     UPGRADE_FAILED,
     UPGRADE_FAILED_RESTORE_OLD_REPOS,
+    UPGRADE_FAILED_RESTORE_OLD_LIBRARIES,
     UPGRADE_FAILED_RESTORE_OLD_MD,
     UPGRADE_FAILED_DROP_OLD_MD,
     GET_MD_VERSION,
@@ -601,18 +742,21 @@ class CmpSeabaseMDupgrade : public CmpSeabaseDDL
   NABoolean isViewsUpgradeNeeded();
   NABoolean isReposUpgradeNeeded();
   NABoolean isPrivsUpgradeNeeded();
+  NABoolean isLibrariesUpgradeNeeded();
   NABoolean isUpgradeNeeded() 
   { return (isMDUpgradeNeeded() || 
             isViewsUpgradeNeeded() ||
             isReposUpgradeNeeded() ||
-            isPrivsUpgradeNeeded());
+            isPrivsUpgradeNeeded() ||
+            isLibrariesUpgradeNeeded());
   }
 
   short dropMDtables(ExpHbaseInterface *ehi, NABoolean oldTbls,
                     NABoolean useOldNameForNewTables = FALSE);
 
   short dropReposTables(ExpHbaseInterface *ehi, NABoolean oldTbls);
-
+  short dropLibrariesTables(ExpHbaseInterface *ehi,
+                            NABoolean oldLibraries);
   short restoreOldMDtables(ExpHbaseInterface *ehi);
 
   short upgradePrivMgr(ExeCliInterface *cliInterface, 
@@ -712,6 +856,35 @@ class CmpSeabaseUpgradeRepository : public 
CmpSeabaseUpgradeSubsystem
 
 };
 
+//Libraries specialization
+class CmpSeabaseUpgradeLibraries : public CmpSeabaseUpgradeSubsystem
+{
+public:
+
+  CmpSeabaseUpgradeLibraries(void) { } ;
+  ~CmpSeabaseUpgradeLibraries(void) { } ;
+  
+  NABoolean needsUpgrade(CmpSeabaseMDupgrade * ddlState);
+
+  short doUpgrade(ExeCliInterface * cliInterface,
+                  CmpDDLwithStatusInfo * mdui,
+                  CmpSeabaseMDupgrade * ddlState,
+                  NABoolean ddlXns);
+
+  short doDrops(ExeCliInterface * cliInterface,
+                CmpDDLwithStatusInfo * mdui,
+                CmpSeabaseMDupgrade * ddlState);
+
+  short doUndo(ExeCliInterface * cliInterface,
+               CmpDDLwithStatusInfo * mdui,
+               CmpSeabaseMDupgrade * ddlState);
+  
+private:
+
+  // avoid having state for now
+
+};
+
 // Privilege Manager specialization
 
 class CmpSeabaseUpgradePrivMgr : public CmpSeabaseUpgradeSubsystem

http://git-wip-us.apache.org/repos/asf/trafodion/blob/9528f8c0/core/sql/sqlcomp/DefaultConstants.h
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/DefaultConstants.h 
b/core/sql/sqlcomp/DefaultConstants.h
index 2098024..de79a27 100644
--- a/core/sql/sqlcomp/DefaultConstants.h
+++ b/core/sql/sqlcomp/DefaultConstants.h
@@ -3349,6 +3349,8 @@ enum DefaultConstants
   // Used to read compressed hdfs text files and to write
   // both compressed and uncompressed hdfs files
   HDFS_IO_INTERIM_BYTEARRAY_SIZE_IN_KB,
+  // Use BLOB column in LIBRARIES tables to store libraries.
+  USE_LIB_BLOB_STORE,
 
   // This enum constant must be the LAST one in the list; it's a count,
   // not an Attribute (it's not IN DefaultDefaults; it's the SIZE of it)!

http://git-wip-us.apache.org/repos/asf/trafodion/blob/9528f8c0/core/sql/sqlcomp/nadefaults.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/nadefaults.cpp b/core/sql/sqlcomp/nadefaults.cpp
index e56efa5..a43a201 100644
--- a/core/sql/sqlcomp/nadefaults.cpp
+++ b/core/sql/sqlcomp/nadefaults.cpp
@@ -2874,13 +2874,13 @@ XDDkwd__(SUBQUERY_UNNESTING,                    "ON"),
 
   DDkwd__(TRAF_AUTO_CREATE_SCHEMA,                 "OFF"),   
 
-  DDkwd__(TRAF_BLOB_AS_VARCHAR,                 "ON"), //set to OFF to enable 
Lobs support  
+  DDkwd__(TRAF_BLOB_AS_VARCHAR,                 "OFF"), //set to OFF to enable 
Lobs support  
 
   DDkwd__(TRAF_BOOLEAN_IO,                        "OFF"),
 
-  DDkwd__(TRAF_BOOTSTRAP_MD_MODE,                            "OFF"),   
+  DDkwd__(TRAF_BOOTSTRAP_MD_MODE,                            "OFF"),     
 
-  DDkwd__(TRAF_CLOB_AS_VARCHAR,                 "ON"), //set to OFF to enable 
Lobs support  
+  DDkwd__(TRAF_CLOB_AS_VARCHAR,                 "OFF"), //set to OFF to enable 
Lobs support  
 
   DDkwd__(TRAF_COL_LENGTH_IS_CHAR,                 "ON"),   
 
@@ -3059,8 +3059,11 @@ XDDkwd__(SUBQUERY_UNNESTING,                     "ON"),
   // Use large queues on RHS of Flow/Nested Join when appropriate
   DDkwd__(USE_LARGE_QUEUES,                     "ON"),
 
+
  XDDkwd__(USE_LIBHDFS,                          "OFF"),
 
+  DDkwd__(USE_LIB_BLOB_STORE,                   "ON"),         
+
   DDkwd__(USE_MAINTAIN_CONTROL_TABLE,          "OFF"),
 
   DDkwd__(USE_OLD_DT_CONSTRUCTOR,      "OFF"),

Reply via email to