in fastmodel-parser/src/main/java/com/aliyun/fastmodel/parser/visitor/TableColumnVisitor.java [83:139]
public Node visitChangeAll(ChangeAllContext ctx) {
AlterStatementSuffixRenameColContext renameColContext = ctx.alterStatementSuffixRenameCol();
AlterColumnConstraintContext tree = renameColContext.alterColumnConstraint();
BaseConstraint baseConstraint = visitIfPresent(tree, BaseConstraint.class).orElse(null);
Boolean primary = isPrimary(baseConstraint);
Boolean notNull = isNotNull(baseConstraint);
if (BooleanUtils.isTrue(primary)) {
notNull = true;
}
CommentContext comment = renameColContext.comment();
AliasedName aliasedName = visitIfPresent(ctx.alterStatementSuffixRenameCol().alias(), AliasedName.class).orElse(
null);
Identifier visit = (Identifier)visit(renameColContext.newIdentifier);
Comment visit1 = null;
if (comment != null) {
visit1 = (Comment)visit(comment);
}
BaseDataType baseDataType = (BaseDataType)visit(renameColContext.colType());
List<Property> properties = ImmutableList.of();
if (renameColContext.setProperties() != null) {
properties = visit(renameColContext.setProperties().tableProperties().keyValueProperty(),
Property.class);
}
CategoryContext category = renameColContext.category();
ColumnCategory columnCategory = null;
if (category != null) {
columnCategory = ColumnCategory.getByCode(category.getText());
}
List<Identifier> indicators = ImmutableList.of();
QualifiedName refDimensions = null;
ReferencesObjectsContext referencesObjectsContext = renameColContext.referencesObjects();
if (referencesObjectsContext != null) {
ReferenceColumnListContext referenceColumnListContext = referencesObjectsContext.referenceColumnList();
if (referenceColumnListContext != null) {
indicators =
visit(referenceColumnListContext.columnParenthesesList().columnNameList().columnName(),
Identifier.class);
} else {
refDimensions = getQualifiedName(referencesObjectsContext.qualifiedName());
}
}
return new ChangeCol(getQualifiedName(ctx.tableName()),
(Identifier)visit(renameColContext.old),
ColumnDefinition.builder()
.colName(visit)
.aliasedName(aliasedName)
.primary(primary)
.notNull(notNull)
.category(columnCategory)
.comment(visit1)
.properties(properties)
.dataType(baseDataType)
.refIndicators(indicators)
.refDimension(refDimensions)
.build()
);
}