in fastmodel-transform/fastmodel-transform-mysql/src/main/java/com/aliyun/fastmodel/transform/mysql/format/MysqlVisitor.java [87:131]
public Boolean visitCreateTable(CreateTable node, Integer indent) {
boolean columnEmpty = node.isColumnEmpty();
//maxcompute不支持没有列的表
boolean executable = true;
if (columnEmpty) {
executable = false;
}
builder.append("CREATE TABLE ");
if (node.isNotExists()) {
builder.append("IF NOT EXISTS ");
}
String tableName = node.getIdentifier();
builder.append(tableName);
if (!columnEmpty) {
builder.append("\n(\n");
String elementIndent = indentString(indent + 1);
String columnList = formatColumnList(node.getColumnDefines(), elementIndent);
builder.append(columnList);
if (!node.isPartitionEmpty()) {
builder.append(",\n");
String list = formatColumnList(node.getPartitionedBy().getColumnDefinitions(), elementIndent);
builder.append(list);
}
if (!node.isConstraintEmpty()) {
appendConstraint(node, indent);
}
if (!node.isIndexEmpty()) {
Iterator<TableIndex> iterator = node.getTableIndexList().iterator();
while (iterator.hasNext()) {
builder.append(",\n");
process(iterator.next(), indent + 1);
}
}
builder.append("\n").append(")");
} else {
if (!node.isCommentElementEmpty()) {
builder.append(newLine("/*("));
String elementIndent = indentString(indent + 1);
builder.append(formatCommentElement(node.getColumnCommentElements(), elementIndent));
builder.append(newLine(")*/"));
}
}
builder.append(formatComment(node.getComment()));
return executable;
}