Repository: incubator-trafodion
Updated Branches:
  refs/heads/master d5ab1eae3 -> eb036aa0b


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/cd9f7a1a/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp 
b/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp
index 7a0498d..0fdc2a9 100644
--- a/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp
+++ b/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp
@@ -575,9 +575,11 @@ short CmpSeabaseDDL::createSeabaseTableExternal(
   // remove cached definition - this code exists in other create stmte,
   // is it required?
   CorrName cnTgt(objectNamePart, STMTHEAP, schemaNamePart, catalogNamePart);
-  ActiveSchemaDB()->getNATableDB()->removeNATable(cnTgt,
-                                                  NATableDB::REMOVE_MINE_ONLY,
-                                                  COM_BASE_TABLE_OBJECT);
+  ActiveSchemaDB()->getNATableDB()->removeNATable
+    (cnTgt,
+     ComQiScope::REMOVE_MINE_ONLY,
+     COM_BASE_TABLE_OBJECT,
+     createTableNode->ddlXns(), FALSE);
 
   return 0;
 }
@@ -2074,12 +2076,12 @@ short CmpSeabaseDDL::createSeabaseTable2(
   if (identityColPos >= 0)
     {
       ElemDDLColDef *colDef = colArray[identityColPos];
-
+      
       NAString seqName;
       SequenceGeneratorAttributes::genSequenceName
         (catalogNamePart, schemaNamePart, objectNamePart, 
colDef->getColumnName(),
          seqName);
-
+      
       if (colDef->getSGOptions())
         {
           
colDef->getSGOptions()->setFSDataType((ComFSDataType)colDef->getColumnDataType()->getFSDatatype());
@@ -2093,13 +2095,13 @@ short CmpSeabaseDDL::createSeabaseTable2(
               return -1;
             }
         }
-
+      
       SequenceGeneratorAttributes sga;
       colDef->getSGOptions()->genSGA(sga);
-
+      
       NAString idOptions;
       sga.display(NULL, &idOptions, TRUE);
-
+      
       char buf[4000];
       str_sprintf(buf, "create internal sequence %s.\"%s\".\"%s\" %s",
                   catalogNamePart.data(), schemaNamePart.data(), 
seqName.data(),
@@ -2111,16 +2113,18 @@ short CmpSeabaseDDL::createSeabaseTable2(
           cliInterface.retrieveSQLDiagnostics(CmpCommon::diags());
           
           deallocEHI(ehi); 
-
+          
           processReturn();
           
           return -1;
         }
-
+      
       CorrName cn(objectNamePart, STMTHEAP, schemaNamePart, catalogNamePart);
-      ActiveSchemaDB()->getNATableDB()->removeNATable(cn,
-        NATableDB::REMOVE_MINE_ONLY, COM_BASE_TABLE_OBJECT);
-
+      ActiveSchemaDB()->getNATableDB()->removeNATable
+        (cn,
+         ComQiScope::REMOVE_MINE_ONLY, COM_BASE_TABLE_OBJECT,
+         createTableNode->ddlXns(), FALSE);
+      
       // update datatype for this sequence
       str_sprintf(buf, "update %s.\"%s\".%s set fs_data_type = %d where 
seq_type = '%s' and seq_uid = (select object_uid from %s.\"%s\".\"%s\" where 
catalog_name = '%s' and schema_name = '%s' and object_name = '%s' and 
object_type = '%s') ",
                   getSystemCatalog(), SEABASE_MD_SCHEMA, SEABASE_SEQ_GEN,
@@ -2137,107 +2141,110 @@ short CmpSeabaseDDL::createSeabaseTable2(
           cliInterface.retrieveSQLDiagnostics(CmpCommon::diags());
           
           deallocEHI(ehi); 
-
+          
           processReturn();
           
           return -1;
         }
     }
-
-    HbaseStr hbaseTable;
-    hbaseTable.val = (char*)extNameForHbase.data();
-    hbaseTable.len = extNameForHbase.length();
-    if (createHbaseTable(ehi, &hbaseTable, trafColFamVec,
-                         &hbaseCreateOptions, 
-                         numSplits, keyLength,
-                         encodedKeysBuffer) == -1)
-      {
-        deallocEHI(ehi); 
-
-        processReturn();
-
-        return -2;
-      }
-
-    // if this table has lob columns, create the lob files
-    short *lobNumList = new (STMTHEAP) short[numCols];
-    short *lobTypList = new (STMTHEAP) short[numCols];
-    char  **lobLocList = new (STMTHEAP) char*[numCols];
-    Lng32 j = 0;
-    for (Int32 i = 0; i < colArray.entries(); i++)
-      {
-          ElemDDLColDef *column = colArray[i];
+  
+  NABoolean ddlXns = createTableNode->ddlXns();
+  HbaseStr hbaseTable;
+  hbaseTable.val = (char*)extNameForHbase.data();
+  hbaseTable.len = extNameForHbase.length();
+  if (createHbaseTable(ehi, &hbaseTable, trafColFamVec,
+                       &hbaseCreateOptions, 
+                       numSplits, keyLength,
+                       encodedKeysBuffer,
+                       FALSE, ddlXns
+                       ) == -1)
+    {
+      deallocEHI(ehi); 
       
-          Lng32 datatype = column->getColumnDataType()->getFSDatatype();
-          if ((datatype == REC_BLOB) ||
-             (datatype == REC_CLOB))
-           {
-                       
-             lobNumList[j] = i; //column->getColumnNumber();
-             lobTypList[j] = 
-               (short)(column->getLobStorage() == Lob_Invalid_Storage
+      processReturn();
+      
+      return -2;
+    }
+  
+  // if this table has lob columns, create the lob files
+  short *lobNumList = new (STMTHEAP) short[numCols];
+  short *lobTypList = new (STMTHEAP) short[numCols];
+  char  **lobLocList = new (STMTHEAP) char*[numCols];
+  Lng32 j = 0;
+  for (Int32 i = 0; i < colArray.entries(); i++)
+    {
+      ElemDDLColDef *column = colArray[i];
+      
+      Lng32 datatype = column->getColumnDataType()->getFSDatatype();
+      if ((datatype == REC_BLOB) ||
+          (datatype == REC_CLOB))
+        {
+          
+          lobNumList[j] = i; //column->getColumnNumber();
+          lobTypList[j] = 
+            (short)(column->getLobStorage() == Lob_Invalid_Storage
                    ? Lob_HDFS_File : column->getLobStorage());
          
-             //           lobTypList[j] = (short)
-             //             CmpCommon::getDefaultNumeric(LOB_STORAGE_TYPE); 
-             char * loc = new (STMTHEAP) char[1024];
+          //      lobTypList[j] = (short)
+          //        CmpCommon::getDefaultNumeric(LOB_STORAGE_TYPE); 
+          char * loc = new (STMTHEAP) char[1024];
          
-             const char* f = ActiveSchemaDB()->getDefaults().
-               getValue(LOB_STORAGE_FILE_DIR);
+          const char* f = ActiveSchemaDB()->getDefaults().
+            getValue(LOB_STORAGE_FILE_DIR);
          
-             strcpy(loc, f);
+          strcpy(loc, f);
          
-             lobLocList[j] = loc;
-             j++;
-           }
+          lobLocList[j] = loc;
+          j++;
+        }
     }
-
+  
   Int64 lobMaxSize =  CmpCommon::getDefaultNumeric(LOB_MAX_SIZE)*1024*1024;
-    if (j > 0)
-      {
-       //if the table is a volatile table return an error
-       if (createTableNode->isVolatile())
-         {
-          *CmpCommon::diags()
+  if (j > 0)
+    {
+      //if the table is a volatile table return an error
+      if (createTableNode->isVolatile())
+        {
+          *CmpCommon::diags()
             << DgSqlCode(-CAT_LOB_COLUMN_IN_VOLATILE_TABLE)
             << DgTableName(extTableName);
           
           deallocEHI(ehi); 
           processReturn();
           return -1; 
-         }
-        Int64 objUID = getObjectUID(&cliInterface,
-                          catalogNamePart.data(), schemaNamePart.data(), 
-                          objectNamePart.data(),
-                          COM_BASE_TABLE_OBJECT_LIT);
-     
-        ComString newSchName = "\"";
-        newSchName += catalogNamePart;
-        newSchName.append("\".\"");
-        newSchName.append(schemaNamePart);
-        newSchName += "\"";
-        Lng32 rc = SQL_EXEC_LOBddlInterface((char*)newSchName.data(),
-                                          newSchName.length(),
-                                          objUID,
-                                          j,
-                                          LOB_CLI_CREATE,
-                                          lobNumList,
-                                          lobTypList,
-                                          lobLocList,
-                                          lobMaxSize);
-       
-        if (rc < 0)
-          {
-           //sss TBD need to retrive the cli diags here.
-           *CmpCommon::diags() << DgSqlCode(-CAT_CREATE_OBJECT_ERROR)
-                              << DgTableName(extTableName);
-           deallocEHI(ehi);       
-           processReturn();
-          
-           return -2;
-         }
-      }
-
+        }
+      Int64 objUID = getObjectUID(&cliInterface,
+                                  catalogNamePart.data(), 
schemaNamePart.data(), 
+                                  objectNamePart.data(),
+                                  COM_BASE_TABLE_OBJECT_LIT);
+      
+      ComString newSchName = "\"";
+      newSchName += catalogNamePart;
+      newSchName.append("\".\"");
+      newSchName.append(schemaNamePart);
+      newSchName += "\"";
+      Lng32 rc = SQL_EXEC_LOBddlInterface((char*)newSchName.data(),
+                                          newSchName.length(),
+                                          objUID,
+                                          j,
+                                          LOB_CLI_CREATE,
+                                          lobNumList,
+                                          lobTypList,
+                                          lobLocList,
+                                          lobMaxSize);
+      
+      if (rc < 0)
+        {
+          //sss TBD need to retrive the cli diags here.
+          *CmpCommon::diags() << DgSqlCode(-CAT_CREATE_OBJECT_ERROR)
+                              << DgTableName(extTableName);
+          deallocEHI(ehi);        
+          processReturn();
+          
+          return -2;
+        }
+    } // j > 0
+  
   // if not a compound create, update valid def to true.
   if (NOT ((createTableNode->getAddConstraintUniqueArray().entries() > 0) ||
            (createTableNode->getAddConstraintRIArray().entries() > 0) ||
@@ -2261,9 +2268,11 @@ short CmpSeabaseDDL::createSeabaseTable2(
   if (NOT isCompound)
     {
       CorrName cn(objectNamePart, STMTHEAP, schemaNamePart, catalogNamePart);
-      ActiveSchemaDB()->getNATableDB()->removeNATable(cn, 
-                                                      
NATableDB::REMOVE_MINE_ONLY, 
-                                                      COM_BASE_TABLE_OBJECT);
+      ActiveSchemaDB()->getNATableDB()->removeNATable
+        (cn, 
+         ComQiScope::REMOVE_MINE_ONLY, 
+         COM_BASE_TABLE_OBJECT,
+         createTableNode->ddlXns(), FALSE);
     }
 
   processReturn();
@@ -2303,7 +2312,8 @@ void CmpSeabaseDDL::createSeabaseTable(
 
           cleanupObjectAfterError(cliInterface,
                                   catalogNamePart, schemaNamePart, 
objectNamePart,
-                                  COM_BASE_TABLE_OBJECT);
+                                  COM_BASE_TABLE_OBJECT,
+                                  createTableNode->ddlXns());
         }
 
       return;
@@ -2318,6 +2328,7 @@ void CmpSeabaseDDL::addConstraints(
                                    ComObjectName &tableName,
                                    ComAnsiNamePart &currCatAnsiName,
                                    ComAnsiNamePart &currSchAnsiName,
+                                   StmtDDLNode * ddlNode,
                                    StmtDDLAddConstraintPK * pkConstr,
                                    StmtDDLAddConstraintUniqueArray 
&uniqueConstrArr,
                                    StmtDDLAddConstraintRIArray &riConstrArr,
@@ -2516,9 +2527,11 @@ void CmpSeabaseDDL::addConstraints(
                            refdCatNamePart.data());
               
               // remove natable for the table being referenced
-              ActiveSchemaDB()->getNATableDB()->removeNATable(cn2,
-                                                              
NATableDB::REMOVE_FROM_ALL_USERS, 
-                                                              
COM_BASE_TABLE_OBJECT);
+              ActiveSchemaDB()->getNATableDB()->removeNATable
+                (cn2,
+                 ComQiScope::REMOVE_FROM_ALL_USERS, 
+                 COM_BASE_TABLE_OBJECT,
+                 ddlNode->ddlXns(), FALSE);
             }
 
           if (cliRC < 0)
@@ -2580,9 +2593,11 @@ void CmpSeabaseDDL::addConstraints(
                   catalogNamePart.data());
       
       // remove NATable for this table
-      ActiveSchemaDB()->getNATableDB()->removeNATable(cn,
-                                                      
NATableDB::REMOVE_FROM_ALL_USERS, 
-                                                      COM_BASE_TABLE_OBJECT);
+      ActiveSchemaDB()->getNATableDB()->removeNATable
+        (cn,
+         ComQiScope::REMOVE_FROM_ALL_USERS, 
+         COM_BASE_TABLE_OBJECT,
+         ddlNode->ddlXns(), FALSE);
     }
 
   return;
@@ -2637,6 +2652,7 @@ void CmpSeabaseDDL::createSeabaseTableCompound(
     }
 
   addConstraints(tableName, currCatAnsiName, currSchAnsiName,
+                 createTableNode,
                  NULL,
                  createTableNode->getAddConstraintUniqueArray(),
                  createTableNode->getAddConstraintRIArray(),
@@ -2681,9 +2697,11 @@ void CmpSeabaseDDL::createSeabaseTableCompound(
 
   {
     CorrName cn(objectNamePart, STMTHEAP, schemaNamePart, catalogNamePart);
-    ActiveSchemaDB()->getNATableDB()->removeNATable(cn, 
-                                                    
NATableDB::REMOVE_FROM_ALL_USERS, 
-                                                    COM_BASE_TABLE_OBJECT);
+    ActiveSchemaDB()->getNATableDB()->removeNATable
+      (cn, 
+       ComQiScope::REMOVE_FROM_ALL_USERS, 
+       COM_BASE_TABLE_OBJECT,
+       createTableNode->ddlXns(), FALSE);
   }
 
   return;
@@ -2695,7 +2713,8 @@ void CmpSeabaseDDL::createSeabaseTableCompound(
     {
       cleanupObjectAfterError(cliInterface, 
                               catalogNamePart, schemaNamePart, objectNamePart,
-                              COM_BASE_TABLE_OBJECT);
+                              COM_BASE_TABLE_OBJECT,
+                              createTableNode->ddlXns());
       return;
     }
 }
@@ -2704,7 +2723,7 @@ void CmpSeabaseDDL::createSeabaseTableCompound(
 //                  0, all ok.
 short CmpSeabaseDDL::dropSeabaseTable2(
                                        ExeCliInterface *cliInterface,
-                                       StmtDDLDropTable                  * 
dropTableNode,
+                                       StmtDDLDropTable * dropTableNode,
                                        NAString &currCatName, NAString 
&currSchName)
 {
   Lng32 cliRC = 0;
@@ -3377,7 +3396,9 @@ short CmpSeabaseDDL::dropSeabaseTable2(
       NAString ansiName = coName.getExternalName(TRUE);
 
       if (dropSeabaseObject(ehi, ansiName,
-                            idxCatName, idxSchName, COM_INDEX_OBJECT, TRUE, 
FALSE))
+                            idxCatName, idxSchName, COM_INDEX_OBJECT, 
+                            dropTableNode->ddlXns(),
+                            TRUE, FALSE))
         {
           NADELETEBASIC (qiKeys, STMTHEAP);
 
@@ -3476,7 +3497,9 @@ short CmpSeabaseDDL::dropSeabaseTable2(
       NAString ansiName = coName.getExternalName(TRUE);
 
       if (dropSeabaseObject(ehi, ansiName,
-                            idxCatName, idxSchName, COM_INDEX_OBJECT, FALSE, 
TRUE))
+                            idxCatName, idxSchName, COM_INDEX_OBJECT, 
+                            dropTableNode->ddlXns(),
+                            FALSE, TRUE))
         {
           deallocEHI(ehi); 
           processReturn();
@@ -3486,11 +3509,15 @@ short CmpSeabaseDDL::dropSeabaseTable2(
 
 
       CorrName cni(qObjName, STMTHEAP, qSchName, qCatName);
-      ActiveSchemaDB()->getNATableDB()->removeNATable(cni,
-        NATableDB::REMOVE_FROM_ALL_USERS, COM_INDEX_OBJECT);
+      ActiveSchemaDB()->getNATableDB()->removeNATable
+        (cni,
+         ComQiScope::REMOVE_FROM_ALL_USERS, COM_INDEX_OBJECT,
+         dropTableNode->ddlXns(), FALSE);
       cni.setSpecialType(ExtendedQualName::INDEX_TABLE);
-      ActiveSchemaDB()->getNATableDB()->removeNATable(cni,
-        NATableDB::REMOVE_MINE_ONLY, COM_INDEX_OBJECT);
+      ActiveSchemaDB()->getNATableDB()->removeNATable
+        (cni,
+         ComQiScope::REMOVE_MINE_ONLY, COM_INDEX_OBJECT,
+         dropTableNode->ddlXns(), FALSE);
 
     } // for
 
@@ -3564,7 +3591,8 @@ short CmpSeabaseDDL::dropSeabaseTable2(
   //Finally drop the table
 
   if (dropSeabaseObject(ehi, tabName,
-                        currCatName, currSchName, COM_BASE_TABLE_OBJECT))
+                        currCatName, currSchName, COM_BASE_TABLE_OBJECT,
+                        dropTableNode->ddlXns()))
     {
       deallocEHI(ehi); 
       processReturn();
@@ -3576,8 +3604,10 @@ short CmpSeabaseDDL::dropSeabaseTable2(
   processReturn();
 
   CorrName cn2(objectNamePart, STMTHEAP, schemaNamePart, catalogNamePart);
-  ActiveSchemaDB()->getNATableDB()->removeNATable(cn2,
-    NATableDB::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT);
+  ActiveSchemaDB()->getNATableDB()->removeNATable
+    (cn2,
+     ComQiScope::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT,
+     dropTableNode->ddlXns(), FALSE);
   
   for (Int32 i = 0; i < refList.entries(); i++)
     {
@@ -3589,8 +3619,10 @@ short CmpSeabaseDDL::dropSeabaseTable2(
       RefConstraint * refConstr = (RefConstraint*)ariConstr;
       CorrName 
otherCN(refConstr->getUniqueConstraintReferencedByMe().getTableName());
       
-      ActiveSchemaDB()->getNATableDB()->removeNATable(otherCN,
-        NATableDB::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT);
+      ActiveSchemaDB()->getNATableDB()->removeNATable
+        (otherCN,
+         ComQiScope::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT,
+         dropTableNode->ddlXns(), FALSE);
     }
 
   for (Int32 i = 0; i < uniqueList.entries(); i++)
@@ -3610,8 +3642,10 @@ short CmpSeabaseDDL::dropSeabaseTable2(
               CorrName cnr(rc->getTableName().getObjectName().data(), 
STMTHEAP, 
                            rc->getTableName().getSchemaName().data(),
                            rc->getTableName().getCatalogName().data());
-              ActiveSchemaDB()->getNATableDB()->removeNATable(cnr,
-                NATableDB::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT);
+              ActiveSchemaDB()->getNATableDB()->removeNATable
+                (cnr,
+                 ComQiScope::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT,
+                 dropTableNode->ddlXns(), FALSE);
             } // for
           
         } // if
@@ -3650,7 +3684,8 @@ void CmpSeabaseDDL::dropSeabaseTable(
 
           cleanupObjectAfterError(cliInterface,
                                   catalogNamePart, schemaNamePart, 
objectNamePart,
-                                  COM_BASE_TABLE_OBJECT);
+                                  COM_BASE_TABLE_OBJECT,
+                                  dropTableNode->ddlXns());
         }
 
       return;
@@ -3799,10 +3834,10 @@ void CmpSeabaseDDL::renameSeabaseTable(
      return;
   }
 
- CorrName newcn(newObjectNamePart,
-              STMTHEAP,
-              schemaNamePart,
-              catalogNamePart);
+  CorrName newcn(newObjectNamePart,
+                 STMTHEAP,
+                 schemaNamePart,
+                 catalogNamePart);
   
   NATable *newNaTable = bindWA.getNATable(newcn); 
   if (naTable != NULL && (NOT bindWA.errStatus()))
@@ -3896,16 +3931,21 @@ void CmpSeabaseDDL::renameSeabaseTable(
       return;
     }
 
-  retcode = dropHbaseTable(ehi, &hbaseTable);
+  NABoolean ddlXns = renameTableNode->ddlXns();
+  retcode = dropHbaseTable(ehi, &hbaseTable, FALSE, ddlXns);
   if (retcode < 0)
     {
       return;
     }
 
-  ActiveSchemaDB()->getNATableDB()->removeNATable(cn,
-    NATableDB::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT);
-  ActiveSchemaDB()->getNATableDB()->removeNATable(newcn,
-    NATableDB::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT);
+  ActiveSchemaDB()->getNATableDB()->removeNATable
+    (cn,
+     ComQiScope::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT,
+     renameTableNode->ddlXns(), FALSE);
+  ActiveSchemaDB()->getNATableDB()->removeNATable
+    (newcn,
+     ComQiScope::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT,
+     renameTableNode->ddlXns(), FALSE);
 
   return;
 }
@@ -4035,7 +4075,8 @@ void CmpSeabaseDDL::alterSeabaseTableHBaseOptions(
   result = alterHbaseTable(ehi,
                            &hbaseTable,
                            naTable->allColFams(),
-                           &(edhbo->getHbaseOptions()));
+                           &(edhbo->getHbaseOptions()),
+                           hbaseOptionsNode->ddlXns());
   if (result < 0)
     {
       deallocEHI(ehi);
@@ -4045,8 +4086,10 @@ void CmpSeabaseDDL::alterSeabaseTableHBaseOptions(
 
   // invalidate cached NATable info on this table for all users
 
-  ActiveSchemaDB()->getNATableDB()->removeNATable(cn,
-    NATableDB::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT);
+  ActiveSchemaDB()->getNATableDB()->removeNATable
+    (cn,
+     ComQiScope::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT,
+     hbaseOptionsNode->ddlXns(), FALSE);
 
   deallocEHI(ehi);
 
@@ -4073,7 +4116,8 @@ short CmpSeabaseDDL::alignedFormatTableAddDropColumn
  const NAString &catalogNamePart,
  const NAString &schemaNamePart,
  const NAString &objectNamePart,
- char * colName, const NAColumn * nacol)
+ char * colName, const NAColumn * nacol,
+ NABoolean ddlXns)
 {
   Lng32 cliRC = 0;
   Lng32 retcode = 0;
@@ -4355,7 +4399,7 @@ short CmpSeabaseDDL::alignedFormatTableAddDropColumn
  label_error:
   cleanupObjectAfterError(cliInterface,
                           catalogNamePart, schemaNamePart, newTempTab,
-                          COM_BASE_TABLE_OBJECT);
+                          COM_BASE_TABLE_OBJECT, ddlXns);
 
   recreateViews(cliInterface, viewNameList, viewDefnList);
 
@@ -4364,7 +4408,7 @@ short CmpSeabaseDDL::alignedFormatTableAddDropColumn
  label_error0:
   cleanupObjectAfterError(cliInterface,
                           catalogNamePart, schemaNamePart, currTempTab,
-                          COM_BASE_TABLE_OBJECT);
+                          COM_BASE_TABLE_OBJECT, ddlXns);
 
   recreateViews(cliInterface, viewNameList, viewDefnList);
 
@@ -4713,7 +4757,8 @@ void CmpSeabaseDDL::alterSeabaseTableAddColumn(
       cliRC = alterHbaseTable(ehi,
                               &hbaseTable,
                               nal,
-                              &(edhbo.getHbaseOptions()));
+                              &(edhbo.getHbaseOptions()),
+                              alterAddColNode->ddlXns());
       if (cliRC < 0)
         {
           deallocEHI(ehi);
@@ -4723,8 +4768,10 @@ void CmpSeabaseDDL::alterSeabaseTableAddColumn(
       
     }
 
-  ActiveSchemaDB()->getNATableDB()->removeNATable(cn,
-    NATableDB::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT);
+  ActiveSchemaDB()->getNATableDB()->removeNATable
+    (cn,
+     ComQiScope::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT,
+     alterAddColNode->ddlXns(), FALSE);
 
   if ((alterAddColNode->getAddConstraintPK()) OR
       (alterAddColNode->getAddConstraintCheckArray().entries() NEQ 0) OR
@@ -4732,6 +4779,7 @@ void CmpSeabaseDDL::alterSeabaseTableAddColumn(
       (alterAddColNode->getAddConstraintRIArray().entries() NEQ 0))
     {
       addConstraints(tableName, currCatAnsiName, currSchAnsiName,
+                     alterAddColNode,
                      alterAddColNode->getAddConstraintPK(),
                      alterAddColNode->getAddConstraintUniqueArray(),
                      alterAddColNode->getAddConstraintRIArray(),
@@ -4936,7 +4984,8 @@ void CmpSeabaseDDL::alterSeabaseTableDropColumn(
       if (alignedFormatTableAddDropColumn(naTable->objectUid().castToInt64(),
                                           FALSE, // drop col
                                           catalogNamePart, schemaNamePart, 
objectNamePart,
-                                          (char*)colName.data(), NULL))
+                                          (char*)colName.data(), NULL,
+                                          alterDropColNode->ddlXns()))
         {
           processReturn();
           return;
@@ -5095,8 +5144,10 @@ void CmpSeabaseDDL::alterSeabaseTableDropColumn(
   deallocEHI(ehi); 
   heap_->deallocateMemory(col);
 
-  ActiveSchemaDB()->getNATableDB()->removeNATable(cn,
-    NATableDB::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT);
+  ActiveSchemaDB()->getNATableDB()->removeNATable
+    (cn,
+     ComQiScope::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT,
+     alterDropColNode->ddlXns(), FALSE);
 
   processReturn();
 
@@ -5262,8 +5313,10 @@ void CmpSeabaseDDL::alterSeabaseTableAlterIdentityColumn(
     }
 
   //  CorrName cn(objectNamePart, STMTHEAP, schemaNamePart, catalogNamePart);
-  ActiveSchemaDB()->getNATableDB()->removeNATable(cn,
-    NATableDB::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT);
+  ActiveSchemaDB()->getNATableDB()->removeNATable
+    (cn,
+     ComQiScope::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT,
+     alterIdentityColNode->ddlXns(), FALSE);
 
   return;
 }
@@ -5485,8 +5538,10 @@ void CmpSeabaseDDL::alterSeabaseTableAlterColumnDatatype(
   deallocEHI(ehi); 
   heap_->deallocateMemory(col);
   
-  ActiveSchemaDB()->getNATableDB()->removeNATable(cn,
-                                                  
NATableDB::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT);
+  ActiveSchemaDB()->getNATableDB()->removeNATable
+    (cn,
+     ComQiScope::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT,
+     alterColNode->ddlXns(), FALSE);
   
   processReturn();
   
@@ -5677,9 +5732,11 @@ void CmpSeabaseDDL::alterSeabaseTableAddPKeyConstraint(
       if (!Get_SqlParser_Flags(INTERNAL_QUERY_FROM_EXEUTIL))
         {
           // remove NATable for this table
-          ActiveSchemaDB()->getNATableDB()->removeNATable(cn,
-                                                          
NATableDB::REMOVE_FROM_ALL_USERS, 
-                                                          
COM_BASE_TABLE_OBJECT);
+          ActiveSchemaDB()->getNATableDB()->removeNATable
+            (cn,
+             ComQiScope::REMOVE_FROM_ALL_USERS, 
+             COM_BASE_TABLE_OBJECT,
+             alterAddConstraint->ddlXns(), FALSE);
         }
       
       return;
@@ -5768,9 +5825,11 @@ void CmpSeabaseDDL::alterSeabaseTableAddPKeyConstraint(
   if (!Get_SqlParser_Flags(INTERNAL_QUERY_FROM_EXEUTIL))
     {
       // remove NATable for this table
-      ActiveSchemaDB()->getNATableDB()->removeNATable(cn,
-                                                      
NATableDB::REMOVE_FROM_ALL_USERS, 
-                                                      COM_BASE_TABLE_OBJECT);
+      ActiveSchemaDB()->getNATableDB()->removeNATable
+        (cn,
+         ComQiScope::REMOVE_FROM_ALL_USERS, 
+         COM_BASE_TABLE_OBJECT,
+         alterAddConstraint->ddlXns(), FALSE);
     }
 
   return;
@@ -5947,9 +6006,11 @@ void CmpSeabaseDDL::alterSeabaseTableAddUniqueConstraint(
   if (!Get_SqlParser_Flags(INTERNAL_QUERY_FROM_EXEUTIL))
     {
       // remove NATable for this table
-      ActiveSchemaDB()->getNATableDB()->removeNATable(cn,
-                                                      
NATableDB::REMOVE_FROM_ALL_USERS, 
-                                                      COM_BASE_TABLE_OBJECT);
+      ActiveSchemaDB()->getNATableDB()->removeNATable
+        (cn,
+         ComQiScope::REMOVE_FROM_ALL_USERS, 
+         COM_BASE_TABLE_OBJECT,
+         alterAddConstraint->ddlXns(), FALSE);
     }
 
   return;
@@ -6533,15 +6594,19 @@ void CmpSeabaseDDL::alterSeabaseTableAddRIConstraint(
   if (!Get_SqlParser_Flags(INTERNAL_QUERY_FROM_EXEUTIL))
     {
       // remove NATable for this table
-      ActiveSchemaDB()->getNATableDB()->removeNATable(cn,
-                                                      
NATableDB::REMOVE_FROM_ALL_USERS, 
-                                                      COM_BASE_TABLE_OBJECT);
+      ActiveSchemaDB()->getNATableDB()->removeNATable
+        (cn,
+         ComQiScope::REMOVE_FROM_ALL_USERS, 
+         COM_BASE_TABLE_OBJECT,
+         alterAddConstraint->ddlXns(), FALSE);
     }
   
   // remove natable for the table being referenced
-  ActiveSchemaDB()->getNATableDB()->removeNATable(cn2,
-                                                  
NATableDB::REMOVE_FROM_ALL_USERS, 
-                                                  COM_BASE_TABLE_OBJECT);
+  ActiveSchemaDB()->getNATableDB()->removeNATable
+    (cn2,
+     ComQiScope::REMOVE_FROM_ALL_USERS, 
+     COM_BASE_TABLE_OBJECT,
+     alterAddConstraint->ddlXns(), FALSE);
 
   return;
 }
@@ -6940,9 +7005,11 @@ void CmpSeabaseDDL::alterSeabaseTableAddCheckConstraint(
   if (!Get_SqlParser_Flags(INTERNAL_QUERY_FROM_EXEUTIL))
     {
       // remove NATable for this table
-      ActiveSchemaDB()->getNATableDB()->removeNATable(cn,
-                                                      
NATableDB::REMOVE_FROM_ALL_USERS, 
-                                                      COM_BASE_TABLE_OBJECT);
+      ActiveSchemaDB()->getNATableDB()->removeNATable
+        (cn,
+         ComQiScope::REMOVE_FROM_ALL_USERS, 
+         COM_BASE_TABLE_OBJECT,
+         alterAddConstraint->ddlXns(), FALSE);
     }
 
   return;
@@ -7280,22 +7347,26 @@ void CmpSeabaseDDL::alterSeabaseTableDropConstraint(
     }
 
   // remove NATable for this table
-  ActiveSchemaDB()->getNATableDB()->removeNATable(cn,
-    NATableDB::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT);
+  ActiveSchemaDB()->getNATableDB()->removeNATable
+    (cn,
+     ComQiScope::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT,
+     alterDropConstraint->ddlXns(), FALSE);
 
   if (isRefConstr && otherNaTable)
   {
     CorrName otherCn(
       otherNaTable->getExtendedQualName().getQualifiedNameObj(), STMTHEAP);
-    ActiveSchemaDB()->getNATableDB()->removeNATable(otherCn,
-      NATableDB::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT); 
+    ActiveSchemaDB()->getNATableDB()->removeNATable
+      (otherCn,
+       ComQiScope::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT,
+       alterDropConstraint->ddlXns(), FALSE);
   }
   return;
 }
 
 
 void CmpSeabaseDDL::seabaseGrantRevoke(
-                                      StmtDDLNode                  * 
stmtDDLNode,
+                                      StmtDDLNode * stmtDDLNode,
                                       NABoolean isGrant,
                                       NAString &currCatName, NAString 
&currSchName,
                                       NABoolean useHBase)
@@ -7596,7 +7667,7 @@ void CmpSeabaseDDL::seabaseGrantRevoke(
 }
 
 void CmpSeabaseDDL::seabaseGrantRevokeHBase(
-                                             StmtDDLNode                  * 
stmtDDLNode,
+                                             StmtDDLNode * stmtDDLNode,
                                              NABoolean isGrant,
                                              NAString &currCatName, NAString 
&currSchName)
 {
@@ -7862,7 +7933,7 @@ void CmpSeabaseDDL::dropNativeHbaseTable(
   HbaseStr hbaseTable;
   hbaseTable.val = (char*)objectNamePart.data();
   hbaseTable.len = objectNamePart.length();
-  retcode = dropHbaseTable(ehi, &hbaseTable);
+  retcode = dropHbaseTable(ehi, &hbaseTable, FALSE, FALSE);
   if (retcode < 0)
     {
       deallocEHI(ehi); 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/cd9f7a1a/core/sql/sqlcomp/CmpSeabaseDDLupgrade.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/CmpSeabaseDDLupgrade.cpp 
b/core/sql/sqlcomp/CmpSeabaseDDLupgrade.cpp
index dad219d..e6e4caa 100644
--- a/core/sql/sqlcomp/CmpSeabaseDDLupgrade.cpp
+++ b/core/sql/sqlcomp/CmpSeabaseDDLupgrade.cpp
@@ -162,7 +162,7 @@ short CmpSeabaseMDupgrade::dropMDtables(ExpHbaseInterface 
*ehi,
       hbaseTable.val = (char*)extNameForHbase.data();
       hbaseTable.len = extNameForHbase.length();
       
-      retcode = dropHbaseTable(ehi, &hbaseTable);
+      retcode = dropHbaseTable(ehi, &hbaseTable, FALSE, FALSE);
       if (retcode < 0)
        {
          errcode = -1;
@@ -307,6 +307,7 @@ short 
CmpSeabaseDDL::isOldMetadataInitialized(ExpHbaseInterface * ehi)
 }
 
 short CmpSeabaseMDupgrade::executeSeabaseMDupgrade(CmpDDLwithStatusInfo *mdui,
+                                                   NABoolean ddlXns,
                                                   NAString &currCatName, 
NAString &currSchName)
 {
   Lng32 cliRC = 0;
@@ -1327,6 +1328,7 @@ short 
CmpSeabaseMDupgrade::executeSeabaseMDupgrade(CmpDDLwithStatusInfo *mdui,
                      if (dropSeabaseObject(ehi, mdti.oldName,
                                            catName, schName,
                                             objectType,
+                                            FALSE,
                                            TRUE, FALSE))
                        {
                          deallocEHI(ehi); 
@@ -1372,7 +1374,8 @@ short 
CmpSeabaseMDupgrade::executeSeabaseMDupgrade(CmpDDLwithStatusInfo *mdui,
 
                      if (dropSeabaseObject(ehi, oldViewName,
                                            catName, schName,
-                                           COM_VIEW_OBJECT))
+                                           COM_VIEW_OBJECT,
+                                            FALSE))
                        {
                          deallocEHI(ehi); 
 
@@ -1546,7 +1549,7 @@ short 
CmpSeabaseMDupgrade::executeSeabaseMDupgrade(CmpDDLwithStatusInfo *mdui,
                      break;
                    }
                  
-                 cliRC = upgradePrivMgr(&cliInterface, privMgrDoneMsg);
+                 cliRC = upgradePrivMgr(&cliInterface, ddlXns, privMgrDoneMsg);
                  if (cliRC != 0)
                    {
                      mdui->setStep(UPGRADE_FAILED);
@@ -1745,6 +1748,7 @@ short 
CmpSeabaseMDupgrade::executeSeabaseMDupgrade(CmpDDLwithStatusInfo *mdui,
                      if (dropSeabaseObject(ehi, mdti.oldName,
                                            catName, schName,
                                            (mdti.isIndex ? COM_INDEX_OBJECT : 
COM_BASE_TABLE_OBJECT),
+                                            FALSE,
                                            FALSE, TRUE))
                        {
                          // ignore errors. Continue dropping old md tables.
@@ -2426,13 +2430,15 @@ short 
CmpSeabaseMDupgrade::customizeNewMDv23tov30(CmpDDLwithStatusInfo *mdui,
 // ----------------------------------------------------------------------------
 short CmpSeabaseMDupgrade::upgradePrivMgr (
   ExeCliInterface *cliInterface, 
+  NABoolean ddlXns,
   NAString &privMgrDoneMsg)
 {
   std::vector<std::string> tablesCreated;
   std::vector<std::string> tablesUpgraded;
 
   // initSeabaseAuthorization will create or upgrade PrivMgr metadata tables
-  if (initSeabaseAuthorization(cliInterface, tablesCreated, tablesUpgraded) < 
0)
+  if (initSeabaseAuthorization(cliInterface, ddlXns,
+                               tablesCreated, tablesUpgraded) < 0)
     return -1;
 
   // Report which tables were created and which were upgraded

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/cd9f7a1a/core/sql/sqlcomp/CmpSeabaseDDLupgrade.h
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/CmpSeabaseDDLupgrade.h 
b/core/sql/sqlcomp/CmpSeabaseDDLupgrade.h
index e09e687..1316101 100644
--- a/core/sql/sqlcomp/CmpSeabaseDDLupgrade.h
+++ b/core/sql/sqlcomp/CmpSeabaseDDLupgrade.h
@@ -490,14 +490,16 @@ class CmpSeabaseMDupgrade : public CmpSeabaseDDL
 
   short restoreOldMDtables(ExpHbaseInterface *ehi);
 
-  short upgradePrivMgr(ExeCliInterface *cliInterface, NAString 
-                       &privMgrDoneMsg);
+  short upgradePrivMgr(ExeCliInterface *cliInterface, 
+                       NABoolean ddlXns,
+                       NAString &privMgrDoneMsg);
 
   short customizeNewMD(CmpDDLwithStatusInfo *mdui, ExeCliInterface 
&cliInterface);
   short customizeNewMDv23tov30(CmpDDLwithStatusInfo *mdui,
                                ExeCliInterface &cliInterface);
 
   short executeSeabaseMDupgrade(CmpDDLwithStatusInfo *mdui,
+                                NABoolean ddlXns,
                                NAString &currCatName, NAString &currSchName);
 
 };

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/cd9f7a1a/core/sql/sqlcomp/CmpSeabaseDDLview.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/CmpSeabaseDDLview.cpp 
b/core/sql/sqlcomp/CmpSeabaseDDLview.cpp
index b921e70..34ea07c 100644
--- a/core/sql/sqlcomp/CmpSeabaseDDLview.cpp
+++ b/core/sql/sqlcomp/CmpSeabaseDDLview.cpp
@@ -943,8 +943,10 @@ void CmpSeabaseDDL::createSeabaseView(
     }
 
   CorrName cn(objectNamePart, STMTHEAP, schemaNamePart, catalogNamePart);
-  ActiveSchemaDB()->getNATableDB()->removeNATable(cn,
-    NATableDB::REMOVE_MINE_ONLY, COM_VIEW_OBJECT);
+  ActiveSchemaDB()->getNATableDB()->removeNATable
+    (cn,
+     ComQiScope::REMOVE_MINE_ONLY, COM_VIEW_OBJECT,
+     createViewNode->ddlXns(), FALSE);
 
   deallocEHI(ehi); 
   processReturn();
@@ -1098,7 +1100,8 @@ void CmpSeabaseDDL::dropSeabaseView(
          char * viewName = vi->get(0);
          
          if (dropSeabaseObject(ehi, viewName,
-                                currCatName, currSchName, COM_VIEW_OBJECT))
+                                currCatName, currSchName, COM_VIEW_OBJECT,
+                                dropViewNode->ddlXns()))
            {
              deallocEHI(ehi); 
 
@@ -1110,7 +1113,8 @@ void CmpSeabaseDDL::dropSeabaseView(
     }
 
   if (dropSeabaseObject(ehi, tabName,
-                        currCatName, currSchName, COM_VIEW_OBJECT))
+                        currCatName, currSchName, COM_VIEW_OBJECT,
+                        dropViewNode->ddlXns()))
     {
       deallocEHI(ehi); 
 
@@ -1121,8 +1125,10 @@ void CmpSeabaseDDL::dropSeabaseView(
 
   // clear view definition from my cache only. 
   CorrName cn(objectNamePart, STMTHEAP, schemaNamePart, catalogNamePart);
-  ActiveSchemaDB()->getNATableDB()->removeNATable(cn,
-    NATableDB::REMOVE_MINE_ONLY, COM_VIEW_OBJECT);
+  ActiveSchemaDB()->getNATableDB()->removeNATable
+    (cn,
+     ComQiScope::REMOVE_MINE_ONLY, COM_VIEW_OBJECT,
+     dropViewNode->ddlXns(), FALSE);
 
   // clear view from all other caches here. This compensates for a 
   // scenario where the object UID is not available in removeNATable, 
@@ -1148,8 +1154,10 @@ void CmpSeabaseDDL::dropSeabaseView(
                   STMTHEAP,
                   tablesRefdList[i].schemaName,
                   tablesRefdList[i].catalogName);
-      ActiveSchemaDB()->getNATableDB()->removeNATable(cn,
-        NATableDB::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT);
+      ActiveSchemaDB()->getNATableDB()->removeNATable
+        (cn,
+         ComQiScope::REMOVE_FROM_ALL_USERS, COM_BASE_TABLE_OBJECT,
+         dropViewNode->ddlXns(), FALSE);
     }
 
   deallocEHI(ehi); 
@@ -1399,7 +1407,11 @@ short CmpSeabaseDDL::dropMetadataViews(ExeCliInterface * 
cliInterface)
         return -1;
 
       cliRC = cliInterface->executeImmediate(queryBuf);
-      if (cliRC < 0)
+      if (cliRC == -1389) // does not exist, ignore
+        {
+          cliRC = 0;
+        }
+      else if (cliRC < 0)
        {
          cliInterface->retrieveSQLDiagnostics(CmpCommon::diags());
        }

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/cd9f7a1a/core/sql/src/main/java/org/trafodion/sql/HBaseClient.java
----------------------------------------------------------------------
diff --git a/core/sql/src/main/java/org/trafodion/sql/HBaseClient.java 
b/core/sql/src/main/java/org/trafodion/sql/HBaseClient.java
index 61f8081..25e2912 100644
--- a/core/sql/src/main/java/org/trafodion/sql/HBaseClient.java
+++ b/core/sql/src/main/java/org/trafodion/sql/HBaseClient.java
@@ -677,6 +677,8 @@ public class HBaseClient {
               table.dropTable(tblName, transID);
            }
            else {
+               if (! admin.isTableEnabled(tblName))
+                   admin.enableTable(tblName);
               admin.disableTable(tblName);
               admin.deleteTable(tblName);
               admin.close();
@@ -690,7 +692,7 @@ public class HBaseClient {
         return cleanupCache(tblName);
     }
 
-    public boolean dropAll(String pattern) 
+    public boolean dropAll(String pattern, long transID) 
              throws MasterNotRunningException, IOException {
             if (logger.isDebugEnabled()) logger.debug("HBaseClient.dropAll(" + 
pattern + ") called.");
             HBaseAdmin admin = new HBaseAdmin(config);
@@ -706,14 +708,32 @@ public class HBaseClient {
                 int idx = tblName.indexOf("TRAFODION._DTM_");
                 if (idx == 0)
                     continue;
+
+                try {
+                    if(transID != 0) {
+                        //                        System.out.println("tblName 
" + tblName);
+                        table.dropTable(tblName, transID);
+                    }
+                    else {
+                        if (! admin.isTableEnabled(tblName))
+                            admin.enableTable(tblName);
+                        
+                        admin.disableTable(tblName);
+                        admin.deleteTable(tblName);
+                    }
+                }
                 
-                //                System.out.println(tblName);
-                admin.disableTable(tblName);
-                admin.deleteTable(tblName);
-           }
-           
+                catch (IOException e) {
+                    if (logger.isDebugEnabled()) 
logger.debug("HbaseClient.dropAll  error" + e);
+                    throw e;
+                }
+                
+                cleanupCache(tblName);
+            }
+
             admin.close();
-            return cleanup();
+            //            return cleanup();
+            return true;
     }
 
     public ByteArrayList listAll(String pattern) 
@@ -833,7 +853,7 @@ public class HBaseClient {
             return true;
     }
 
-    public boolean exists(String tblName)  
+    public boolean exists(String tblName, long transID)  
            throws MasterNotRunningException, IOException {
             if (logger.isDebugEnabled()) logger.debug("HBaseClient.exists(" + 
tblName + ") called.");
             HBaseAdmin admin = new HBaseAdmin(config);
@@ -1719,6 +1739,7 @@ public class HBaseClient {
         admin.close();
         return true;
     }
+
     HTableDescriptor desc = new HTableDescriptor(tn);
     HColumnDescriptor colDesc = new HColumnDescriptor(famName);
     // A counter table is non-DTM-transactional.


Reply via email to