public Node visitCreateTable()

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();
    }