DBZ-1185 Use Boolean instead of Optional
This commit is contained in:
parent
958d207121
commit
13f49f02a9
@ -10,7 +10,6 @@
|
|||||||
|
|
||||||
import java.sql.Types;
|
import java.sql.Types;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
import org.apache.kafka.connect.data.Field;
|
import org.apache.kafka.connect.data.Field;
|
||||||
import org.apache.kafka.connect.data.Schema;
|
import org.apache.kafka.connect.data.Schema;
|
||||||
@ -39,7 +38,7 @@ public class ColumnDefinitionParserListener extends MySqlParserBaseListener {
|
|||||||
private final TableEditor tableEditor;
|
private final TableEditor tableEditor;
|
||||||
private ColumnEditor columnEditor;
|
private ColumnEditor columnEditor;
|
||||||
private boolean uniqueColumn;
|
private boolean uniqueColumn;
|
||||||
private Optional<Boolean> optionalColumn;
|
private Boolean optionalColumn;
|
||||||
|
|
||||||
private final MySqlValueConverters converters;
|
private final MySqlValueConverters converters;
|
||||||
private final MySqlDefaultValuePreConverter defaultValuePreConverter = new MySqlDefaultValuePreConverter();
|
private final MySqlDefaultValuePreConverter defaultValuePreConverter = new MySqlDefaultValuePreConverter();
|
||||||
@ -66,14 +65,16 @@ public Column getColumn() {
|
|||||||
@Override
|
@Override
|
||||||
public void enterColumnDefinition(MySqlParser.ColumnDefinitionContext ctx) {
|
public void enterColumnDefinition(MySqlParser.ColumnDefinitionContext ctx) {
|
||||||
uniqueColumn = false;
|
uniqueColumn = false;
|
||||||
optionalColumn = Optional.empty();
|
optionalColumn = null;
|
||||||
resolveColumnDataType(ctx.dataType());
|
resolveColumnDataType(ctx.dataType());
|
||||||
super.enterColumnDefinition(ctx);
|
super.enterColumnDefinition(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void exitColumnDefinition(MySqlParser.ColumnDefinitionContext ctx) {
|
public void exitColumnDefinition(MySqlParser.ColumnDefinitionContext ctx) {
|
||||||
optionalColumn.ifPresent(optional -> columnEditor.optional(optional.booleanValue()));
|
if (optionalColumn != null) {
|
||||||
|
columnEditor.optional(optionalColumn.booleanValue());
|
||||||
|
}
|
||||||
if (uniqueColumn && !tableEditor.hasPrimaryKey()) {
|
if (uniqueColumn && !tableEditor.hasPrimaryKey()) {
|
||||||
// take the first unique constrain if no primary key is set
|
// take the first unique constrain if no primary key is set
|
||||||
tableEditor.addColumn(columnEditor.create());
|
tableEditor.addColumn(columnEditor.create());
|
||||||
@ -92,7 +93,7 @@ public void enterUniqueKeyColumnConstraint(MySqlParser.UniqueKeyColumnConstraint
|
|||||||
public void enterPrimaryKeyColumnConstraint(MySqlParser.PrimaryKeyColumnConstraintContext ctx) {
|
public void enterPrimaryKeyColumnConstraint(MySqlParser.PrimaryKeyColumnConstraintContext ctx) {
|
||||||
// this rule will be parsed only if no primary key is set in a table
|
// this rule will be parsed only if no primary key is set in a table
|
||||||
// otherwise the statement can't be executed due to multiple primary key error
|
// otherwise the statement can't be executed due to multiple primary key error
|
||||||
optionalColumn = Optional.of(Boolean.FALSE);
|
optionalColumn = Boolean.FALSE;
|
||||||
tableEditor.addColumn(columnEditor.create());
|
tableEditor.addColumn(columnEditor.create());
|
||||||
tableEditor.setPrimaryKeyNames(columnEditor.name());
|
tableEditor.setPrimaryKeyNames(columnEditor.name());
|
||||||
super.enterPrimaryKeyColumnConstraint(ctx);
|
super.enterPrimaryKeyColumnConstraint(ctx);
|
||||||
@ -100,7 +101,7 @@ public void enterPrimaryKeyColumnConstraint(MySqlParser.PrimaryKeyColumnConstrai
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void enterNullNotnull(MySqlParser.NullNotnullContext ctx) {
|
public void enterNullNotnull(MySqlParser.NullNotnullContext ctx) {
|
||||||
optionalColumn = Optional.of(Boolean.valueOf(ctx.NOT() == null));
|
optionalColumn = Boolean.valueOf(ctx.NOT() == null);
|
||||||
super.enterNullNotnull(ctx);
|
super.enterNullNotnull(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -266,8 +267,8 @@ else if (dataTypeName.equals("SERIAL")) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void serialColumn() {
|
private void serialColumn() {
|
||||||
if (!optionalColumn.isPresent()) {
|
if (optionalColumn == null) {
|
||||||
optionalColumn = Optional.of(Boolean.FALSE);
|
optionalColumn = Boolean.FALSE;
|
||||||
}
|
}
|
||||||
uniqueColumn = true;
|
uniqueColumn = true;
|
||||||
columnEditor.autoIncremented(true);
|
columnEditor.autoIncremented(true);
|
||||||
@ -275,7 +276,9 @@ private void serialColumn() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void convertDefaultValueToSchemaType(ColumnEditor columnEditor) {
|
private void convertDefaultValueToSchemaType(ColumnEditor columnEditor) {
|
||||||
optionalColumn.ifPresent(optional -> columnEditor.optional(optional.booleanValue()));
|
if (optionalColumn != null) {
|
||||||
|
columnEditor.optional(optionalColumn.booleanValue());
|
||||||
|
}
|
||||||
final Column column = columnEditor.create();
|
final Column column = columnEditor.create();
|
||||||
// if converters is not null and the default value is not null, we need to convert default value
|
// if converters is not null and the default value is not null, we need to convert default value
|
||||||
if (converters != null && columnEditor.defaultValue() != null) {
|
if (converters != null && columnEditor.defaultValue() != null) {
|
||||||
|
Loading…
Reference in New Issue
Block a user