DBZ-7143 Add constructor for testing in MysqlValueConverters

This commit is contained in:
nicholas-fwang 2023-12-07 09:23:21 +09:00 committed by Jiri Pechanec
parent d710ee6b9f
commit fcee5e7bdc
5 changed files with 33 additions and 18 deletions

View File

@ -6,6 +6,7 @@
package io.debezium.connector.mysql;
import static io.debezium.config.CommonConnectorConfig.EventConvertingFailureHandlingMode.FAIL;
import static io.debezium.config.CommonConnectorConfig.EventConvertingFailureHandlingMode.WARN;
import java.io.IOException;
import java.math.BigDecimal;
@ -137,10 +138,32 @@ else if (70 <= year && year <= 99) {
*/
@VisibleForTesting
public MySqlValueConverters(DecimalMode decimalMode, TemporalPrecisionMode temporalPrecisionMode, BigIntUnsignedMode bigIntUnsignedMode,
BinaryHandlingMode binaryMode, EventConvertingFailureHandlingMode eventConvertingFailureHandlingMode) {
this(decimalMode, temporalPrecisionMode, bigIntUnsignedMode, binaryMode, x -> x, resolveDefaultAdapter(), eventConvertingFailureHandlingMode);
BinaryHandlingMode binaryMode) {
this(decimalMode, temporalPrecisionMode, bigIntUnsignedMode, binaryMode, x -> x, resolveDefaultAdapter(), WARN);
}
/**
* Create a new instance that always uses UTC for the default time zone when converting values without timezone information
* to values that require timezones.
* <p>
*
* @param decimalMode how {@code DECIMAL} and {@code NUMERIC} values should be treated; may be null if
* {@link io.debezium.jdbc.JdbcValueConverters.DecimalMode#PRECISE} is to be used
* @param temporalPrecisionMode temporal precision mode based on {@link io.debezium.jdbc.TemporalPrecisionMode}
* @param bigIntUnsignedMode how {@code BIGINT UNSIGNED} values should be treated; may be null if
* {@link io.debezium.jdbc.JdbcValueConverters.BigIntUnsignedMode#PRECISE} is to be used
* @param binaryMode how binary columns should be represented
* @param adjuster a temporal adjuster to make a database specific time modification before conversion
* @param connectorAdapter the connector adapter
*/
@VisibleForTesting
public MySqlValueConverters(DecimalMode decimalMode, TemporalPrecisionMode temporalPrecisionMode, BigIntUnsignedMode bigIntUnsignedMode,
BinaryHandlingMode binaryMode,
TemporalAdjuster adjuster, ConnectorAdapter connectorAdapter) {
this(decimalMode, temporalPrecisionMode, bigIntUnsignedMode, binaryMode, adjuster, connectorAdapter, WARN);
}
private static ConnectorAdapter resolveDefaultAdapter() {
Configuration config = Configuration.empty();
MySqlConnectorConfig connectorConfig = new MySqlConnectorConfig(config);

View File

@ -35,7 +35,6 @@
import org.junit.Test;
import io.debezium.config.CommonConnectorConfig.BinaryHandlingMode;
import io.debezium.config.CommonConnectorConfig.EventConvertingFailureHandlingMode;
import io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser;
import io.debezium.doc.FixFor;
import io.debezium.jdbc.JdbcValueConverters;
@ -82,8 +81,7 @@ public void beforeEach() {
JdbcValueConverters.DecimalMode.DOUBLE,
TemporalPrecisionMode.ADAPTIVE_TIME_MICROSECONDS,
JdbcValueConverters.BigIntUnsignedMode.PRECISE,
BinaryHandlingMode.BYTES,
EventConvertingFailureHandlingMode.WARN);
BinaryHandlingMode.BYTES);
tableSchemaBuilder = new TableSchemaBuilder(
converters,
new MySqlDefaultValueConverter(converters),

View File

@ -69,8 +69,7 @@ private MySqlDatabaseSchema getSchema(Configuration config) {
BigIntUnsignedMode.LONG,
BinaryHandlingMode.BYTES,
MySqlValueConverters::adjustTemporal,
connectorConfig.getConnectorAdapter(),
EventConvertingFailureHandlingMode.WARN);
connectorConfig.getConnectorAdapter());
return new MySqlDatabaseSchema(
connectorConfig,
mySqlValueConverters,

View File

@ -23,7 +23,6 @@
import org.junit.Test;
import io.debezium.config.CommonConnectorConfig.BinaryHandlingMode;
import io.debezium.config.CommonConnectorConfig.EventConvertingFailureHandlingMode;
import io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser;
import io.debezium.doc.FixFor;
import io.debezium.jdbc.JdbcValueConverters;
@ -55,8 +54,7 @@ public void beforeEach() {
converters = new MySqlValueConverters(JdbcValueConverters.DecimalMode.DOUBLE,
TemporalPrecisionMode.CONNECT,
JdbcValueConverters.BigIntUnsignedMode.LONG,
BinaryHandlingMode.BYTES,
EventConvertingFailureHandlingMode.WARN);
BinaryHandlingMode.BYTES);
parser = new MySqlAntlrDdlParser(converters);
tables = new Tables();
tableSchemaBuilder = new TableSchemaBuilder(
@ -196,8 +194,7 @@ public void parseUnsignedBigIntDefaultValueToBigDecimal() {
final MySqlValueConverters converters = new MySqlValueConverters(JdbcValueConverters.DecimalMode.DOUBLE,
TemporalPrecisionMode.CONNECT,
JdbcValueConverters.BigIntUnsignedMode.PRECISE,
BinaryHandlingMode.BYTES,
EventConvertingFailureHandlingMode.WARN);
BinaryHandlingMode.BYTES);
final AbstractDdlParser parser = new MySqlAntlrDdlParser(converters);
final TableSchemaBuilder tableSchemaBuilder = new TableSchemaBuilder(
converters,
@ -355,8 +352,7 @@ public void parseNumericAndDecimalToDecimalDefaultValue() {
final MySqlValueConverters converters = new MySqlValueConverters(JdbcValueConverters.DecimalMode.PRECISE,
TemporalPrecisionMode.CONNECT,
JdbcValueConverters.BigIntUnsignedMode.LONG,
BinaryHandlingMode.BYTES,
EventConvertingFailureHandlingMode.WARN);
BinaryHandlingMode.BYTES);
final AbstractDdlParser parser = new MySqlAntlrDdlParser(converters);
final TableSchemaBuilder tableSchemaBuilder = new TableSchemaBuilder(
converters,

View File

@ -81,8 +81,7 @@ public void testJsonValues() {
String sql = "CREATE TABLE JSON_TABLE (" + " A JSON," + " B JSON NOT NULL" + ");";
MySqlValueConverters converters = new MySqlValueConverters(JdbcValueConverters.DecimalMode.DOUBLE,
TemporalPrecisionMode.CONNECT, JdbcValueConverters.BigIntUnsignedMode.LONG, BinaryHandlingMode.BYTES,
EventConvertingFailureHandlingMode.WARN);
TemporalPrecisionMode.CONNECT, JdbcValueConverters.BigIntUnsignedMode.LONG, BinaryHandlingMode.BYTES);
DdlParser parser = new MySqlAntlrDdlParser();
Tables tables = new Tables();
@ -163,7 +162,7 @@ public void testFallbackDecimalValueScale() {
MySqlValueConverters converters = new MySqlValueConverters(JdbcValueConverters.DecimalMode.PRECISE,
TemporalPrecisionMode.CONNECT, JdbcValueConverters.BigIntUnsignedMode.LONG, BinaryHandlingMode.BYTES,
x -> x, null, EventConvertingFailureHandlingMode.WARN);
x -> x, null);
DdlParser parser = new MySqlAntlrDdlParser();
Tables tables = new Tables();
@ -184,7 +183,7 @@ public void testZonedDateTimeWithMicrosecondPrecision() {
MySqlValueConverters converters = new MySqlValueConverters(JdbcValueConverters.DecimalMode.PRECISE,
TemporalPrecisionMode.ADAPTIVE_TIME_MICROSECONDS, JdbcValueConverters.BigIntUnsignedMode.LONG, BinaryHandlingMode.BYTES,
x -> x, null, EventConvertingFailureHandlingMode.WARN);
x -> x, null);
DdlParser parser = new MySqlAntlrDdlParser();
Tables tables = new Tables();