in fastmodel-transform/fastmodel-transform-doris/src/main/java/com/aliyun/fastmodel/transform/doris/parser/visitor/DorisAstBuilder.java [126:200]
public Node visitCreateTable(CreateTableContext ctx) {
boolean ifNotExist = ctx.NOT() != null && ctx.EXISTS() != null;
QualifiedName tableName = (QualifiedName)visit(ctx.name);
List<ColumnDefinition> list = null;
List<TableIndex> tableIndices = null;
Comment comment = null;
if (ctx.ctasCols != null) {
} else {
list = ParserHelper.visit(this,
ctx.columnDefs().columnDef(), ColumnDefinition.class);
if (ctx.indexDefs() != null) {
tableIndices = ParserHelper.visit(this, ctx.indexDefs().indexDef(), TableIndex.class);
}
}
List<Property> properties = Lists.newArrayList();
if (ctx.ENGINE() != null) {
Property property = getEngineProp(ctx.engine);
properties.add(property);
}
List<BaseConstraint> constraints = Lists.newArrayList();
//aggregate, unique, duplicate
if (ctx.AGGREGATE() != null) {
AggregateKeyConstraint aggregateKeyConstraint = getAggregateKeyConstraint(ctx);
constraints.add(aggregateKeyConstraint);
}
if (ctx.UNIQUE() != null) {
UniqueConstraint uniqueConstraint = getUniqueConstraint(ctx);
constraints.add(uniqueConstraint);
}
if (ctx.DUPLICATE() != null) {
DuplicateKeyConstraint duplicateKeyConstraint = getDuplicateKeyConstraint(ctx);
constraints.add(duplicateKeyConstraint);
}
//cluster by
if (ctx.CLUSTER() != null) {
ClusterNonKeyConstraint clusterByConstraint = getClusterByConstraint(ctx);
constraints.add(clusterByConstraint);
}
//distributed by
if (ctx.DISTRIBUTED() != null) {
//distribute key constraint
DistributeNonKeyConstraint distributeKeyConstraint = getDistributeKeyConstraint(ctx);
constraints.add(distributeKeyConstraint);
}
//table comment
if (ctx.STRING_LITERAL() != null) {
String value = StripUtils.strip(ctx.STRING_LITERAL().getText());
comment = new Comment(value);
}
//partition by
PartitionedBy partitionedBy = null;
if (ctx.PARTITION() != null) {
partitionedBy = getPartitionBy(ctx);
}
//table properties
if (ctx.properties != null) {
List<Property> propertyList = ParserHelper.visit(this,
ctx.properties.propertyItemList().propertyItem(), Property.class);
properties.addAll(propertyList);
}
return CreateTable.builder()
.tableName(tableName)
.columns(list)
.properties(properties)
.tableIndex(tableIndices)
.constraints(constraints)
.partition(partitionedBy)
.comment(comment)
.build();
}