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.
