[feature-wip](unique-key-merge-on-write) unique key table with MOW supports sequence column (#11808)

This commit is contained in:
Xin Liao
2022-08-17 10:56:14 +08:00
committed by GitHub
parent c3e6a841c1
commit 12c4d1f4dd
10 changed files with 258 additions and 24 deletions

View File

@ -245,7 +245,9 @@ public class Column implements Writable {
}
public boolean isSequenceColumn() {
return !visible && aggregationType == AggregateType.REPLACE && nameEquals(SEQUENCE_COL, true);
// aggregationType is NONE for unique table with merge on write.
return !visible && (aggregationType == AggregateType.REPLACE
|| aggregationType == AggregateType.NONE) && nameEquals(SEQUENCE_COL, true);
}
public PrimitiveType getDataType() {

View File

@ -885,8 +885,16 @@ public class OlapTable extends Table {
this.hasSequenceCol = true;
this.sequenceType = type;
// sequence column is value column with REPLACE aggregate type
Column sequenceCol = ColumnDef.newSequenceColumnDef(type, AggregateType.REPLACE).toColumn();
Column sequenceCol;
if (getEnableUniqueKeyMergeOnWrite()) {
// sequence column is value column with NONE aggregate type for
// unique key table with merge on write
sequenceCol = ColumnDef.newSequenceColumnDef(type, AggregateType.NONE).toColumn();
} else {
// sequence column is value column with REPLACE aggregate type for
// unique key table
sequenceCol = ColumnDef.newSequenceColumnDef(type, AggregateType.REPLACE).toColumn();
}
// add sequence column at last
fullSchema.add(sequenceCol);
nameToColumn.put(Column.SEQUENCE_COL, sequenceCol);

View File

@ -1903,11 +1903,6 @@ public class InternalCatalog implements CatalogIf<Database> {
try {
sequenceColType = PropertyAnalyzer.analyzeSequenceType(properties, olapTable.getKeysType());
if (sequenceColType != null) {
// TODO(zhannngchen) will support sequence column later.
if (olapTable.getEnableUniqueKeyMergeOnWrite()) {
throw new AnalysisException("Unique key table with MoW(merge on write) not support "
+ "sequence column for now");
}
olapTable.setSequenceInfo(sequenceColType);
}
} catch (Exception e) {