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);
/**
* 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.
*

View File

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

View File

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