@@ -1578,6 +1578,8 @@ public void process(List<AlterClause> alterClauses, String clusterName, Database
1578
1578
throws UserException {
1579
1579
olapTable .writeLockOrDdlException ();
1580
1580
try {
1581
+ //alterClauses can or cannot light schema change
1582
+ boolean ligthSchemaChange = true ;
1581
1583
// index id -> index schema
1582
1584
Map <Long , List <Column >> indexSchemaMap = new HashMap <>();
1583
1585
for (Map .Entry <Long , List <Column >> entry : olapTable .getIndexIdToSchema (true ).entrySet ()) {
@@ -1654,55 +1656,59 @@ public void process(List<AlterClause> alterClauses, String clusterName, Database
1654
1656
1655
1657
if (alterClause instanceof AddColumnClause ) {
1656
1658
// add column
1657
- boolean ligthSchemaChange = processAddColumn ((AddColumnClause ) alterClause , olapTable , indexSchemaMap );
1658
- LOG .debug ("processAddColumn, table: {}({}), getMaxColUniqueId(): {}, ligthSchemaChange: {}" , olapTable .getName (), olapTable .getId (),
1659
- olapTable .getMaxColUniqueId (), ligthSchemaChange );
1660
- if (ligthSchemaChange ) {
1661
- //for schema change add column optimize, direct modify table meta.
1662
- Catalog .getCurrentCatalog ().modifyTableAddOrDropColumns (db , olapTable , indexSchemaMap , newIndexes , false );
1663
- return ;
1659
+ boolean clauseCanLigthSchemaChange = processAddColumn ((AddColumnClause ) alterClause , olapTable , indexSchemaMap );
1660
+ if (clauseCanLigthSchemaChange == false ) {
1661
+ ligthSchemaChange = false ;
1664
1662
}
1665
1663
} else if (alterClause instanceof AddColumnsClause ) {
1666
1664
// add columns
1667
- boolean ligthSchemaChange = processAddColumns ((AddColumnsClause ) alterClause , olapTable , indexSchemaMap , false );
1668
- LOG .debug ("processAddColumns, table: {}({}), getMaxColUniqueId(): {}, ligthSchemaChange: {}" , olapTable .getName (), olapTable .getId (),
1669
- olapTable .getMaxColUniqueId (), ligthSchemaChange );
1670
- if (ligthSchemaChange ) {
1671
- //for schema change add column optimize, direct modify table meta.
1672
- Catalog .getCurrentCatalog ().modifyTableAddOrDropColumns (db , olapTable , indexSchemaMap , newIndexes , false );
1673
- return ;
1665
+ boolean clauseCanLigthSchemaChange = processAddColumns ((AddColumnsClause ) alterClause , olapTable , indexSchemaMap , false );
1666
+ if (clauseCanLigthSchemaChange == false ) {
1667
+ ligthSchemaChange = false ;
1674
1668
}
1675
1669
} else if (alterClause instanceof DropColumnClause ) {
1676
1670
// drop column and drop indexes on this column
1677
- boolean ligthSchemaChange = processDropColumn ((DropColumnClause ) alterClause , olapTable , indexSchemaMap , newIndexes );
1678
- LOG .debug ("processDropColumn, table: {}({}), getMaxColUniqueId(): {}" , olapTable .getName (), olapTable .getId (), olapTable .getMaxColUniqueId ());
1679
- if (ligthSchemaChange ) {
1680
- //for schema change add column optimize, direct modify table meta.
1681
- Catalog .getCurrentCatalog ().modifyTableAddOrDropColumns (db , olapTable , indexSchemaMap , newIndexes , false );
1682
- return ;
1671
+ boolean clauseCanLigthSchemaChange = processDropColumn ((DropColumnClause ) alterClause , olapTable , indexSchemaMap , newIndexes );
1672
+ if (clauseCanLigthSchemaChange == false ) {
1673
+ ligthSchemaChange = false ;
1683
1674
}
1684
1675
} else if (alterClause instanceof ModifyColumnClause ) {
1685
1676
// modify column
1686
1677
processModifyColumn ((ModifyColumnClause ) alterClause , olapTable , indexSchemaMap );
1678
+ ligthSchemaChange = false ;
1687
1679
} else if (alterClause instanceof ReorderColumnsClause ) {
1688
1680
// reorder column
1689
1681
processReorderColumn ((ReorderColumnsClause ) alterClause , olapTable , indexSchemaMap );
1682
+ ligthSchemaChange = false ;
1690
1683
} else if (alterClause instanceof ModifyTablePropertiesClause ) {
1691
1684
// modify table properties
1692
1685
// do nothing, properties are already in propertyMap
1686
+ ligthSchemaChange = false ;
1693
1687
} else if (alterClause instanceof CreateIndexClause ) {
1694
1688
if (processAddIndex ((CreateIndexClause ) alterClause , olapTable , newIndexes )) {
1695
1689
return ;
1696
1690
}
1691
+ ligthSchemaChange = false ;
1697
1692
} else if (alterClause instanceof DropIndexClause ) {
1698
1693
if (processDropIndex ((DropIndexClause ) alterClause , olapTable , newIndexes )) {
1699
1694
return ;
1700
1695
}
1696
+ ligthSchemaChange = false ;
1701
1697
} else {
1702
1698
Preconditions .checkState (false );
1703
1699
}
1704
- } // end for alter clausesnnnnnn
1705
- createJob (db .getId (), olapTable , indexSchemaMap , propertyMap , newIndexes );
1700
+ } // end for alter clauses
1701
+
1702
+ LOG .debug ("processAddColumns, table: {}({}), getMaxColUniqueId(): {}, ligthSchemaChange: {}" , olapTable .getName (),
1703
+ olapTable .getId (), olapTable .getMaxColUniqueId (), ligthSchemaChange );
1704
+
1705
+ if (ligthSchemaChange ) {
1706
+ //for schema change add/drop value column optimize, direct modify table meta.
1707
+ Catalog .getCurrentCatalog ().modifyTableAddOrDropColumns (db , olapTable , indexSchemaMap , newIndexes , false );
1708
+ return ;
1709
+ } else {
1710
+ createJob (db .getId (), olapTable , indexSchemaMap , propertyMap , newIndexes );
1711
+ }
1706
1712
} finally {
1707
1713
olapTable .writeUnlock ();
1708
1714
}
0 commit comments