public String createTable()

in manager/manager/src/main/java/org/apache/doris/stack/driver/DorisDataBuildDriver.java [61:215]


    public String createTable(TableCreateReq createInfo) throws Exception {
        if (StringUtils.isEmpty(createInfo.getName()) || createInfo.getFieldInfos() == null
                || createInfo.getFieldInfos().isEmpty()) {
            log.error("Table name or fields is empty");
            throw new RequestFieldNullException();
        }

        StringBuffer buffer = new StringBuffer();
        buffer.append("CREATE TABLE ");
        buffer.append(createInfo.getName());
        buffer.append(LEFT_BRACKET);
        buffer.append(ENTER);

        // field information
        for (FieldInfo field : createInfo.getFieldInfos()) {
            if (StringUtils.isEmpty(field.getName())) {
                log.error("Table field name is null");
                throw new RequestFieldNullException();
            }
            buffer.append(field.getName());
            buffer.append(SPACE + field.transDatabaseType());
            if (!field.isBeNull() || field.isKey()) {
                buffer.append(SPACE + "NOT NULL");
            }

            // default value
            if (field.getDefaultValue() != null && !field.getDefaultValue().isEmpty()) {
                buffer.append(SPACE + "DEFAULT" + SPACE);
                buffer.append("\"");
                buffer.append(field.getDefaultValue());
                buffer.append("\"");
            }

            // Column comment
            if (field.getExtra() != null && !field.getExtra().isEmpty()) {
                buffer.append(SPACE + "COMMENT" + SPACE);
                buffer.append("\"");
                buffer.append(field.getExtra());
                buffer.append("\"");
            }

            buffer.append(COMMA);
        }
        buffer.deleteCharAt(buffer.length() - 1);
        buffer.append(RIGHT_BRACKET);
        buffer.append(ENTER);

        // Engine information
        if (createInfo.getEngine() != null) {
            buffer.append("ENGINE=" + createInfo.getEngine().name());
        } else {
            buffer.append("ENGINE=" + TableCreateReq.Engine.olap.name());
        }
        buffer.append(ENTER);

        // Key type and field information
        if (createInfo.getKeyColumnNames() != null && !createInfo.getKeyColumnNames().isEmpty()) {
            if (createInfo.getKeyType() != null) {
                buffer.append(createInfo.getKeyType().toSqlString());
            } else {
                buffer.append(TableCreateReq.KeyType.DUP_KEYS.toSqlString());
            }

            buffer.append(LEFT_BRACKET);
            for (String key : createInfo.getKeyColumnNames()) {
                buffer.append(key);
                buffer.append(COMMA);
            }
            buffer.deleteCharAt(buffer.length() - 1);
            buffer.append(RIGHT_BRACKET);
            buffer.append(ENTER);
        }

        // Table comment information
        if (!StringUtils.isEmpty(createInfo.getDescribe())) {
            buffer.append("COMMENT" + SPACE);
            buffer.append("\"");
            buffer.append(createInfo.getDescribe());
            buffer.append("\"");
            buffer.append(ENTER);
        }

        // Partition information
        if (createInfo.getPartitionColumnNames() != null && !createInfo.getPartitionColumnNames().isEmpty()) {
            // Partition key information
            buffer.append("PARTITION BY RANGE");
            buffer.append(LEFT_BRACKET);
            for (String partitionKey : createInfo.getPartitionColumnNames()) {
                buffer.append(partitionKey);
                buffer.append(COMMA);
            }
            buffer.deleteCharAt(buffer.length() - 1);
            buffer.append(RIGHT_BRACKET);
            buffer.append(ENTER);

            // Partition value information
            buffer.append(LEFT_BRACKET);
            buffer.append(ENTER);
            for (TableCreateReq.Partition partition : createInfo.getPartitionInfos()) {
                buffer.append("PARTITION");
                buffer.append(SPACE);
                buffer.append(partition.getName());
                buffer.append(SPACE);
                buffer.append("VALUES");
                buffer.append("[");
                for (List<String> values : partition.getValues()) {
                    buffer.append(LEFT_BRACKET);
                    for (String value : values) {
                        buffer.append("\"");
                        buffer.append(value);
                        buffer.append("\"");
                        buffer.append(COMMA);
                    }
                    buffer.deleteCharAt(buffer.length() - 1);
                    buffer.append(RIGHT_BRACKET);
                    buffer.append(COMMA);
                }
                buffer.deleteCharAt(buffer.length() - 1);
                buffer.append(RIGHT_BRACKET);
                buffer.append(COMMA);
                buffer.append(ENTER);
            }
            buffer.deleteCharAt(buffer.length() - 2);
            buffer.append(RIGHT_BRACKET);
            buffer.append(ENTER);
        }

        // BUCKETS information
        if (createInfo.getHashColumnNames() != null && !createInfo.getHashColumnNames().isEmpty()) {
            buffer.append("DISTRIBUTED BY HASH");
            buffer.append(LEFT_BRACKET);
            for (String haskKey : createInfo.getHashColumnNames()) {
                buffer.append(haskKey);
                buffer.append(COMMA);
            }
            buffer.deleteCharAt(buffer.length() - 1);
            buffer.append(RIGHT_BRACKET);
            buffer.append(" BUCKETS ");
            buffer.append(createInfo.getBuckets());
            buffer.append(ENTER);
        }

        // olap properties information
        if ((createInfo.getEngine() == null
                || createInfo.getEngine() == TableCreateReq.Engine.olap)
                && createInfo.getProperties() != null) {
            buffer.append("PROPERTIES");
            buffer.append(LEFT_BRACKET);
            buffer.append(createInfo.getProperties().tranDatabaseString());
            buffer.append(RIGHT_BRACKET);
        }
        buffer.append(";");

        return buffer.toString();
    }