[enhance](mtmv) allow add index for MTMV (#34225) (#35443)

Previously, the limitation on whether operations can be performed on materialized views was to determine `opType`.

Now, a `allowOpMTMV()` method is implemented through various `clauses`.

Because some operations have the same `opType`, but some operations allow and some do not.

For example, the `opType` for both `add column` and `create index` is `SCHEMA-CHANGE`, but `add column` is not allowed and `create index` is allowed.
This commit is contained in:
zhangdong
2024-05-27 16:22:16 +08:00
committed by GitHub
parent d71e9d34fe
commit a32db25070
33 changed files with 390 additions and 60 deletions

View File

@ -70,10 +70,4 @@ public enum AlterOpType {
public boolean needCheckCapacity() {
return this == ADD_ROLLUP || this == SCHEMA_CHANGE || this == ADD_PARTITION || this == ENABLE_FEATURE;
}
public boolean mtmvAllowOp() {
return this == MODIFY_TABLE_PROPERTY || this == MODIFY_DISTRIBUTION || this == MODIFY_TABLE_COMMENT
|| this == ADD_PARTITION || this == DROP_PARTITION || this == REPLACE_PARTITION
|| this == MODIFY_PARTITION;
}
}

View File

@ -50,8 +50,8 @@ public class AlterOperations {
public void checkMTMVAllow(List<AlterClause> alterClauses) throws DdlException {
for (AlterClause alterClause : alterClauses) {
if (!alterClause.getOpType().mtmvAllowOp()) {
throw new DdlException("Alter operation " + alterClause.getOpType() + " Not allowed to MTMV");
if (!(alterClause.allowOpMTMV())) {
throw new DdlException("Not allowed to perform current operation on MTMV");
}
}
}

View File

@ -110,6 +110,11 @@ public class AddColumnClause extends AlterTableClause {
return this.properties;
}
@Override
public boolean allowOpMTMV() {
return false;
}
@Override
public String toSql() {
StringBuilder sb = new StringBuilder();

View File

@ -78,6 +78,11 @@ public class AddColumnsClause extends AlterTableClause {
}
}
@Override
public boolean allowOpMTMV() {
return false;
}
@Override
public String toSql() {
StringBuilder sb = new StringBuilder();

View File

@ -60,6 +60,11 @@ public class AddPartitionClause extends AlterTableClause {
public void analyze(Analyzer analyzer) throws AnalysisException {
}
@Override
public boolean allowOpMTMV() {
return false;
}
@Override
public String toSql() {
StringBuilder sb = new StringBuilder();

View File

@ -46,6 +46,11 @@ public class AddPartitionLikeClause extends AlterTableClause {
public void analyze(Analyzer analyzer) throws AnalysisException {
}
@Override
public boolean allowOpMTMV() {
return false;
}
@Override
public String toSql() {
StringBuilder sb = new StringBuilder();

View File

@ -89,6 +89,11 @@ public class AddRollupClause extends AlterTableClause {
baseRollupName = Strings.emptyToNull(baseRollupName);
}
@Override
public boolean allowOpMTMV() {
return false;
}
@Override
public String toSql() {
StringBuilder stringBuilder = new StringBuilder();

View File

@ -39,4 +39,8 @@ public abstract class AlterClause implements ParseNode {
public AlterOpType getOpType() {
return opType;
}
public boolean allowOpMTMV() {
return true;
}
}

View File

@ -38,4 +38,6 @@ public abstract class AlterTableClause extends AlterClause {
public void setTableName(TableName tableName) {
this.tableName = tableName;
}
public abstract boolean allowOpMTMV();
}

View File

@ -76,6 +76,11 @@ public class BuildIndexClause extends AlterTableClause {
indexDef.getProperties(), indexDef.getComment());
}
@Override
public boolean allowOpMTMV() {
return true;
}
@Override
public String toSql() {
if (alter) {

View File

@ -63,6 +63,11 @@ public class ColumnRenameClause extends AlterTableClause {
return null;
}
@Override
public boolean allowOpMTMV() {
return false;
}
@Override
public String toSql() {
return "RENAME COLUMN " + colName + " " + newColName;

View File

@ -76,6 +76,11 @@ public class CreateIndexClause extends AlterTableClause {
indexDef.getProperties(), indexDef.getComment());
}
@Override
public boolean allowOpMTMV() {
return true;
}
@Override
public String toSql() {
if (alter) {

View File

@ -65,6 +65,11 @@ public class DropColumnClause extends AlterTableClause {
return this.properties;
}
@Override
public boolean allowOpMTMV() {
return false;
}
@Override
public String toSql() {
StringBuilder sb = new StringBuilder();

View File

@ -68,6 +68,11 @@ public class DropIndexClause extends AlterTableClause {
}
}
@Override
public boolean allowOpMTMV() {
return true;
}
@Override
public String toSql() {
StringBuilder stringBuilder = new StringBuilder();

View File

@ -71,6 +71,11 @@ public class DropPartitionClause extends AlterTableClause {
return null;
}
@Override
public boolean allowOpMTMV() {
return false;
}
@Override
public String toSql() {
StringBuilder sb = new StringBuilder();

View File

@ -77,6 +77,11 @@ public class DropPartitionFromIndexClause extends AlterTableClause {
return null;
}
@Override
public boolean allowOpMTMV() {
return false;
}
@Override
public String toSql() {
StringBuilder sb = new StringBuilder();

View File

@ -48,6 +48,11 @@ public class DropRollupClause extends AlterTableClause {
return this.properties;
}
@Override
public boolean allowOpMTMV() {
return false;
}
@Override
public String toSql() {
StringBuilder stringBuilder = new StringBuilder();

View File

@ -84,6 +84,11 @@ public class EnableFeatureClause extends AlterTableClause {
}
}
@Override
public boolean allowOpMTMV() {
return true;
}
@Override
public String toSql() {
StringBuilder sb = new StringBuilder();

View File

@ -96,6 +96,11 @@ public class ModifyColumnClause extends AlterTableClause {
return this.properties;
}
@Override
public boolean allowOpMTMV() {
return false;
}
@Override
public String toSql() {
StringBuilder sb = new StringBuilder();

View File

@ -59,6 +59,11 @@ public class ModifyColumnCommentClause extends AlterTableClause {
}
}
@Override
public boolean allowOpMTMV() {
return false;
}
@Override
public String toSql() {
StringBuilder sb = new StringBuilder();

View File

@ -40,6 +40,11 @@ public class ModifyDistributionClause extends AlterTableClause {
public void analyze(Analyzer analyzer) throws AnalysisException {
}
@Override
public boolean allowOpMTMV() {
return true;
}
@Override
public String toSql() {
StringBuilder sb = new StringBuilder();

View File

@ -64,6 +64,11 @@ public class ModifyEngineClause extends AlterTableClause {
}
}
@Override
public boolean allowOpMTMV() {
return false;
}
@Override
public String toSql() {
StringBuilder sb = new StringBuilder();

View File

@ -131,6 +131,11 @@ public class ModifyPartitionClause extends AlterTableClause {
return this.needExpand;
}
@Override
public boolean allowOpMTMV() {
return false;
}
@Override
public String toSql() {
StringBuilder sb = new StringBuilder();

View File

@ -50,6 +50,11 @@ public class ModifyTableCommentClause extends AlterTableClause {
return Maps.newHashMap();
}
@Override
public boolean allowOpMTMV() {
return true;
}
@Override
public String toSql() {
StringBuilder sb = new StringBuilder();

View File

@ -314,6 +314,11 @@ public class ModifyTablePropertiesClause extends AlterTableClause {
return this.properties;
}
@Override
public boolean allowOpMTMV() {
return true;
}
@Override
public String toSql() {
StringBuilder sb = new StringBuilder();

View File

@ -63,6 +63,11 @@ public class PartitionRenameClause extends AlterTableClause {
return null;
}
@Override
public boolean allowOpMTMV() {
return false;
}
@Override
public String toSql() {
return "RENAME PARTITION " + partitionName + " " + newPartitionName;

View File

@ -67,6 +67,11 @@ public class ReorderColumnsClause extends AlterTableClause {
return this.properties;
}
@Override
public boolean allowOpMTMV() {
return false;
}
@Override
public String toSql() {
StringBuilder sb = new StringBuilder();

View File

@ -107,6 +107,11 @@ public class ReplacePartitionClause extends AlterTableClause {
return this.properties;
}
@Override
public boolean allowOpMTMV() {
return false;
}
@Override
public String toSql() {
StringBuilder sb = new StringBuilder();

View File

@ -70,6 +70,11 @@ public class ReplaceTableClause extends AlterTableClause {
return this.properties;
}
@Override
public boolean allowOpMTMV() {
return false;
}
@Override
public String toSql() {
StringBuilder sb = new StringBuilder();

View File

@ -63,6 +63,11 @@ public class RollupRenameClause extends AlterTableClause {
return null;
}
@Override
public boolean allowOpMTMV() {
return false;
}
@Override
public String toSql() {
return "RENAME ROLLUP " + rollupName + " " + newRollupName;

View File

@ -53,6 +53,11 @@ public class TableRenameClause extends AlterTableClause {
return null;
}
@Override
public boolean allowOpMTMV() {
return false;
}
@Override
public String toSql() {
return "RENAME " + newTableName;