in flink-doris-connector/src/main/java/org/apache/doris/flink/sink/schema/SQLParserSchemaManager.java [80:126]
public List<String> parseAlterDDLs(
SourceConnector sourceConnector, String ddl, String dorisTable) {
List<String> ddlList = new ArrayList<>();
try {
Statement statement = CCJSqlParserUtil.parse(ddl);
if (statement instanceof Alter) {
Alter alterStatement = (Alter) statement;
List<AlterExpression> alterExpressions = alterStatement.getAlterExpressions();
for (AlterExpression alterExpression : alterExpressions) {
AlterOperation operation = alterExpression.getOperation();
switch (operation) {
case DROP:
String dropColumnDDL =
processDropColumnOperation(alterExpression, dorisTable);
ddlList.add(dropColumnDDL);
break;
case ADD:
List<String> addColumnDDL =
processAddColumnOperation(
sourceConnector, alterExpression, dorisTable);
ddlList.addAll(addColumnDDL);
break;
case CHANGE:
String changeColumnDDL =
processChangeColumnOperation(alterExpression, dorisTable);
ddlList.add(changeColumnDDL);
break;
case RENAME:
String renameColumnDDL =
processRenameColumnOperation(alterExpression, dorisTable);
ddlList.add(renameColumnDDL);
break;
default:
LOG.warn(
"Unsupported alter ddl operations, operation={}, ddl={}",
operation.name(),
ddl);
}
}
} else {
LOG.warn("Unsupported ddl operations, ddl={}", ddl);
}
} catch (JSQLParserException e) {
LOG.warn("Failed to parse DDL SQL, SQL={}", ddl, e);
}
return ddlList;
}