@@ -1547,6 +1547,8 @@ public void process(List<AlterClause> alterClauses, String clusterName, Database
1547
1547
throws UserException {
1548
1548
olapTable .writeLockOrDdlException ();
1549
1549
try {
1550
+ //alterClauses can or cannot light schema change
1551
+ boolean ligthSchemaChange = true ;
1550
1552
// index id -> index schema
1551
1553
Map <Long , List <Column >> indexSchemaMap = new HashMap <>();
1552
1554
for (Map .Entry <Long , List <Column >> entry : olapTable .getIndexIdToSchema (true ).entrySet ()) {
@@ -1610,55 +1612,59 @@ public void process(List<AlterClause> alterClauses, String clusterName, Database
1610
1612
1611
1613
if (alterClause instanceof AddColumnClause ) {
1612
1614
// add column
1613
- boolean ligthSchemaChange = processAddColumn ((AddColumnClause ) alterClause , olapTable , indexSchemaMap );
1614
- LOG .debug ("processAddColumn, table: {}({}), getMaxColUniqueId(): {}, ligthSchemaChange: {}" , olapTable .getName (), olapTable .getId (),
1615
- olapTable .getMaxColUniqueId (), ligthSchemaChange );
1616
- if (ligthSchemaChange ) {
1617
- //for schema change add column optimize, direct modify table meta.
1618
- Catalog .getCurrentCatalog ().modifyTableAddOrDropColumns (db , olapTable , indexSchemaMap , newIndexes , false );
1619
- return ;
1615
+ boolean clauseCanLigthSchemaChange = processAddColumn ((AddColumnClause ) alterClause , olapTable , indexSchemaMap );
1616
+ if (clauseCanLigthSchemaChange == false ) {
1617
+ ligthSchemaChange = false ;
1620
1618
}
1621
1619
} else if (alterClause instanceof AddColumnsClause ) {
1622
1620
// add columns
1623
- boolean ligthSchemaChange = processAddColumns ((AddColumnsClause ) alterClause , olapTable , indexSchemaMap , false );
1624
- LOG .debug ("processAddColumns, table: {}({}), getMaxColUniqueId(): {}, ligthSchemaChange: {}" , olapTable .getName (), olapTable .getId (),
1625
- olapTable .getMaxColUniqueId (), ligthSchemaChange );
1626
- if (ligthSchemaChange ) {
1627
- //for schema change add column optimize, direct modify table meta.
1628
- Catalog .getCurrentCatalog ().modifyTableAddOrDropColumns (db , olapTable , indexSchemaMap , newIndexes , false );
1629
- return ;
1621
+ boolean clauseCanLigthSchemaChange = processAddColumns ((AddColumnsClause ) alterClause , olapTable , indexSchemaMap , false );
1622
+ if (clauseCanLigthSchemaChange == false ) {
1623
+ ligthSchemaChange = false ;
1630
1624
}
1631
1625
} else if (alterClause instanceof DropColumnClause ) {
1632
1626
// drop column and drop indexes on this column
1633
- boolean ligthSchemaChange = processDropColumn ((DropColumnClause ) alterClause , olapTable , indexSchemaMap , newIndexes );
1634
- LOG .debug ("processDropColumn, table: {}({}), getMaxColUniqueId(): {}" , olapTable .getName (), olapTable .getId (), olapTable .getMaxColUniqueId ());
1635
- if (ligthSchemaChange ) {
1636
- //for schema change add column optimize, direct modify table meta.
1637
- Catalog .getCurrentCatalog ().modifyTableAddOrDropColumns (db , olapTable , indexSchemaMap , newIndexes , false );
1638
- return ;
1627
+ boolean clauseCanLigthSchemaChange = processDropColumn ((DropColumnClause ) alterClause , olapTable , indexSchemaMap , newIndexes );
1628
+ if (clauseCanLigthSchemaChange == false ) {
1629
+ ligthSchemaChange = false ;
1639
1630
}
1640
1631
} else if (alterClause instanceof ModifyColumnClause ) {
1641
1632
// modify column
1642
1633
processModifyColumn ((ModifyColumnClause ) alterClause , olapTable , indexSchemaMap );
1634
+ ligthSchemaChange = false ;
1643
1635
} else if (alterClause instanceof ReorderColumnsClause ) {
1644
1636
// reorder column
1645
1637
processReorderColumn ((ReorderColumnsClause ) alterClause , olapTable , indexSchemaMap );
1638
+ ligthSchemaChange = false ;
1646
1639
} else if (alterClause instanceof ModifyTablePropertiesClause ) {
1647
1640
// modify table properties
1648
1641
// do nothing, properties are already in propertyMap
1642
+ ligthSchemaChange = false ;
1649
1643
} else if (alterClause instanceof CreateIndexClause ) {
1650
1644
if (processAddIndex ((CreateIndexClause ) alterClause , olapTable , newIndexes )) {
1651
1645
return ;
1652
1646
}
1647
+ ligthSchemaChange = false ;
1653
1648
} else if (alterClause instanceof DropIndexClause ) {
1654
1649
if (processDropIndex ((DropIndexClause ) alterClause , olapTable , newIndexes )) {
1655
1650
return ;
1656
1651
}
1652
+ ligthSchemaChange = false ;
1657
1653
} else {
1658
1654
Preconditions .checkState (false );
1659
1655
}
1660
- } // end for alter clausesnnnnnn
1661
- createJob (db .getId (), olapTable , indexSchemaMap , propertyMap , newIndexes );
1656
+ } // end for alter clauses
1657
+
1658
+ LOG .debug ("processAddColumns, table: {}({}), getMaxColUniqueId(): {}, ligthSchemaChange: {}" , olapTable .getName (),
1659
+ olapTable .getId (), olapTable .getMaxColUniqueId (), ligthSchemaChange );
1660
+
1661
+ if (ligthSchemaChange ) {
1662
+ //for schema change add/drop value column optimize, direct modify table meta.
1663
+ Catalog .getCurrentCatalog ().modifyTableAddOrDropColumns (db , olapTable , indexSchemaMap , newIndexes , false );
1664
+ return ;
1665
+ } else {
1666
+ createJob (db .getId (), olapTable , indexSchemaMap , propertyMap , newIndexes );
1667
+ }
1662
1668
} finally {
1663
1669
olapTable .writeUnlock ();
1664
1670
}
0 commit comments