public Node visitCreateTableStatement()

in fastmodel-transform/fastmodel-transform-starrocks/src/main/java/com/aliyun/fastmodel/transform/starrocks/parser/visitor/StarRocksAstBuilder.java [182:241]


    public Node visitCreateTableStatement(CreateTableStatementContext ctx) {
        // table name
        QualifiedNameContext qualifiedNameContext = ctx.qualifiedName();
        QualifiedName qualifiedName = (QualifiedName)visit(qualifiedNameContext);
        // comment
        CommentContext comment = ctx.comment();
        Optional<Comment> tableComment = ParserHelper.visitIfPresent(this, comment, Comment.class);
        //columns
        List<ColumnDefinition> columns = ParserHelper.visit(this, ctx.columnDesc(), ColumnDefinition.class);
        //index
        List<TableIndex> listTableIndex = ParserHelper.visit(this, ctx.indexDesc(), TableIndex.class);
        //constraint
        Optional<BaseConstraint> list = ParserHelper.visitIfPresent(this, ctx.keyDesc(), BaseConstraint.class);
        List<BaseConstraint> constraints = Lists.newArrayList();
        list.ifPresent(constraints::add);

        //distribute key constraint
        if (ctx.distributionDesc() != null) {
            DistributeNonKeyConstraint distributeKeyConstraint = (DistributeNonKeyConstraint)visit(ctx.distributionDesc());
            constraints.add(distributeKeyConstraint);
        }
        //rollup_index
        if (ctx.rollupDesc() != null) {
            RollupNonKeyConstraint rollupConstraint = (RollupNonKeyConstraint)visit(ctx.rollupDesc());
            constraints.add(rollupConstraint);
        }
        //order by constraint
        if (ctx.orderByDesc() != null) {
            OrderByNonKeyConstraint orderByConstraint = (OrderByNonKeyConstraint)visit(ctx.orderByDesc());
            constraints.add(orderByConstraint);
        }
        PropertiesContext properties = ctx.properties();
        List<Property> propertyList = Lists.newArrayList();
        if (properties != null) {
            propertyList = ParserHelper.visit(this, properties.property(), Property.class);
        }
        //extend properties
        List<Property> extendProperties = toExtend(ctx);
        List<Property> all = Lists.newArrayList();
        if (propertyList != null) {
            all.addAll(propertyList);
        }
        all.addAll(extendProperties);

        //partition by
        PartitionDescContext partitionDescContext = ctx.partitionDesc();
        PartitionedBy partitionedBy = null;
        if (partitionDescContext != null) {
            partitionedBy = (PartitionedBy)visit(partitionDescContext);
        }
        return CreateTable.builder()
            .tableName(qualifiedName)
            .tableIndex(listTableIndex)
            .columns(columns)
            .constraints(constraints)
            .comment(tableComment.orElse(null))
            .properties(all)
            .partition(partitionedBy)
            .build();
    }