hailin0 commented on code in PR #8134:
URL: https://github.com/apache/seatunnel/pull/8134#discussion_r1858001209
##########
seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/JdbcDialect.java:
##########
@@ -527,281 +533,242 @@ default boolean columnExists(Connection connection,
TablePath tablePath, String
default void applySchemaChange(
Connection connection, TablePath tablePath,
AlterTableAddColumnEvent event)
throws SQLException {
- String tableIdentifierWithQuoted = tableIdentifier(tablePath);
- Column addColumn = event.getColumn();
- String afterColumn = event.getAfterColumn();
- String addColumnSQL =
- buildAlterTableSql(
- event.getSourceDialectName(),
- addColumn.getSourceType(),
- AlterType.ADD.name(),
- addColumn,
- tableIdentifierWithQuoted,
- StringUtils.EMPTY,
- afterColumn);
+ boolean someCatalog =
event.getSourceDialectName().equals(dialectName());
+ BasicTypeDefine typeDefine =
getTypeConverter().reconvert(event.getColumn());
+ String columnType =
+ someCatalog ? event.getColumn().getSourceType() :
typeDefine.getColumnType();
+ StringBuilder sqlBuilder =
+ new StringBuilder()
+ .append("ALTER TABLE")
+ .append(" ")
+ .append(tableIdentifier(tablePath))
+ .append(" ")
+ .append("ADD COLUMN")
+ .append(" ")
+ .append(quoteIdentifier(event.getColumn().getName()))
+ .append(" ")
+ .append(columnType);
+
+ // Only decorate with default value when source dialect is same as
sink dialect
+ // Todo Support for cross-database default values for ddl statements
+ if (event.getColumn().getDefaultValue() == null) {
+ sqlBuilder.append(" ").append(event.getColumn().isNullable() ?
"NULL" : "NOT NULL");
+ } else {
+ if (event.getColumn().isNullable()) {
+ sqlBuilder.append(" NULL");
+ } else if (someCatalog) {
+ sqlBuilder.append(" ").append(event.getColumn().isNullable() ?
"NULL" : "NOT NULL");
+ } else if
(SqlType.TIMESTAMP.equals(event.getColumn().getDataType().getSqlType())) {
+ log.warn(
+ "Default value is not supported for column {} in table
{}. Skipping add column operation. event: {}",
+ event.getColumn().getName(),
+ tablePath.getFullName(),
+ event);
+ } else {
+ sqlBuilder.append(" NOT NULL");
Review Comment:
Please check line 561
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]