DBZ-6554 Added method to override alter statement field delimiter, setting it to comma for MySQL dialect

This commit is contained in:
Christian Jacob Mencias 2023-06-13 18:58:50 +08:00 committed by Jiri Pechanec
parent bda4676108
commit 89ad5c5a40
3 changed files with 15 additions and 1 deletions

View File

@ -96,6 +96,15 @@ public interface DatabaseDialect {
*/ */
String getAlterTableStatement(TableDescriptor table, SinkRecordDescriptor record, Set<String> missingFields); String getAlterTableStatement(TableDescriptor table, SinkRecordDescriptor record, Set<String> missingFields);
/**
* Gets the field delimeter used when contructing {@code ALTER TABLE} statements.
*
* @return the field delimeter for alter table SQL statement
*/
default String getAlterTableStatementFieldDelimiter() {
return " ";
}
/** /**
* Construct a {@code INSERT INTO} statement specific for this dialect. * Construct a {@code INSERT INTO} statement specific for this dialect.
* *

View File

@ -292,7 +292,7 @@ public String getAlterTableStatement(TableDescriptor table, SinkRecordDescriptor
builder.append("ALTER TABLE "); builder.append("ALTER TABLE ");
builder.append(getQualifiedTableName(table.getId())); builder.append(getQualifiedTableName(table.getId()));
builder.append(" "); builder.append(" ");
builder.appendList(" ", missingFields, (name) -> { builder.appendList(getAlterTableStatementFieldDelimiter(), missingFields, (name) -> {
final FieldDescriptor field = record.getFields().get(name); final FieldDescriptor field = record.getFields().get(name);
final StringBuilder addColumnSpec = new StringBuilder(); final StringBuilder addColumnSpec = new StringBuilder();
addColumnSpec.append("ADD "); addColumnSpec.append("ADD ");

View File

@ -111,6 +111,11 @@ protected void registerTypes() {
registerType(MapToJsonType.INSTANCE); registerType(MapToJsonType.INSTANCE);
} }
@Override
public String getAlterTableStatementFieldDelimiter() {
return ",";
}
@Override @Override
public int getMaxVarcharLengthInKey() { public int getMaxVarcharLengthInKey() {
return 255; return 255;