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