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:
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -78,6 +78,11 @@ public class AddColumnsClause extends AlterTableClause {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allowOpMTMV() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toSql() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -39,4 +39,8 @@ public abstract class AlterClause implements ParseNode {
|
||||
public AlterOpType getOpType() {
|
||||
return opType;
|
||||
}
|
||||
|
||||
public boolean allowOpMTMV() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -38,4 +38,6 @@ public abstract class AlterTableClause extends AlterClause {
|
||||
public void setTableName(TableName tableName) {
|
||||
this.tableName = tableName;
|
||||
}
|
||||
|
||||
public abstract boolean allowOpMTMV();
|
||||
}
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -68,6 +68,11 @@ public class DropIndexClause extends AlterTableClause {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allowOpMTMV() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toSql() {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -84,6 +84,11 @@ public class EnableFeatureClause extends AlterTableClause {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allowOpMTMV() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toSql() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -59,6 +59,11 @@ public class ModifyColumnCommentClause extends AlterTableClause {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allowOpMTMV() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toSql() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -64,6 +64,11 @@ public class ModifyEngineClause extends AlterTableClause {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allowOpMTMV() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toSql() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -53,6 +53,11 @@ public class TableRenameClause extends AlterTableClause {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allowOpMTMV() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toSql() {
|
||||
return "RENAME " + newTableName;
|
||||
|
||||
Reference in New Issue
Block a user