Skip to content

Commit 165c155

Browse files
subodh1810octavia-squidington-iii
authored andcommitted
mysql-source:fix tinyint unsigned handling (airbytehq#18619)
* mysql-source:fix tinyint unsigned handling * update doc * format * upgrade version * auto-bump connector version Co-authored-by: Octavia Squidington III <[email protected]>
1 parent 5a27df9 commit 165c155

File tree

8 files changed

+111
-79
lines changed

8 files changed

+111
-79
lines changed

airbyte-config/init/src/main/resources/seed/source_definitions.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -792,7 +792,7 @@
792792
- name: MySQL
793793
sourceDefinitionId: 435bb9a5-7887-4809-aa58-28c27df0d7ad
794794
dockerRepository: airbyte/source-mysql
795-
dockerImageTag: 1.0.9
795+
dockerImageTag: 1.0.10
796796
documentationUrl: https://docs.airbyte.com/integrations/sources/mysql
797797
icon: mysql.svg
798798
sourceType: database

airbyte-config/init/src/main/resources/seed/source_specs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7587,7 +7587,7 @@
75877587
supportsNormalization: false
75887588
supportsDBT: false
75897589
supported_destination_sync_modes: []
7590-
- dockerImage: "airbyte/source-mysql:1.0.9"
7590+
- dockerImage: "airbyte/source-mysql:1.0.10"
75917591
spec:
75927592
documentationUrl: "https://docs.airbyte.com/integrations/sources/mysql"
75937593
connectionSpecification:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*
2+
* Copyright (c) 2022 Airbyte, Inc., all rights reserved.
3+
*/
4+
5+
package io.airbyte.integrations.debezium.internals;
6+
7+
import io.debezium.connector.mysql.converters.TinyIntOneToBooleanConverter;
8+
import io.debezium.spi.converter.RelationalColumn;
9+
import org.apache.kafka.connect.data.SchemaBuilder;
10+
11+
public class CustomMySQLTinyIntOneToBooleanConverter extends TinyIntOneToBooleanConverter {
12+
13+
@Override
14+
public void converterFor(final RelationalColumn field, final ConverterRegistration<SchemaBuilder> registration) {
15+
if (!"TINYINT".equalsIgnoreCase(field.typeName())) {
16+
return;
17+
}
18+
super.converterFor(field, registration);
19+
}
20+
21+
}

airbyte-integrations/connectors/source-mysql-strict-encrypt/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ ENV APPLICATION source-mysql-strict-encrypt
1616

1717
COPY --from=build /airbyte /airbyte
1818

19-
LABEL io.airbyte.version=1.0.9
19+
LABEL io.airbyte.version=1.0.10
2020

2121
LABEL io.airbyte.name=airbyte/source-mysql-strict-encrypt

airbyte-integrations/connectors/source-mysql/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ ENV APPLICATION source-mysql
1616

1717
COPY --from=build /airbyte /airbyte
1818

19-
LABEL io.airbyte.version=1.0.9
19+
LABEL io.airbyte.version=1.0.10
2020

2121
LABEL io.airbyte.name=airbyte/source-mysql

airbyte-integrations/connectors/source-mysql/src/main/java/io/airbyte/integrations/source/mysql/MySqlCdcProperties.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ private static Properties commonProperties(final JdbcDatabase database) {
5050
* {@link MySQLConverter}
5151
*/
5252
props.setProperty("converters", "boolean, datetime");
53-
props.setProperty("boolean.type", "io.debezium.connector.mysql.converters.TinyIntOneToBooleanConverter");
53+
props.setProperty("boolean.type", "io.airbyte.integrations.debezium.internals.CustomMySQLTinyIntOneToBooleanConverter");
5454
props.setProperty("datetime.type", "io.airbyte.integrations.debezium.internals.MySQLDateTimeConverter");
5555

5656
// For CDC mode, the user cannot provide timezone arguments as JDBC parameters - they are

airbyte-integrations/connectors/source-mysql/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/AbstractMySqlSourceDatatypeTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,15 @@ protected void initTests() {
100100
.addExpectedValues(null, "true", "false")
101101
.build());
102102

103+
addDataTypeTestData(
104+
TestDataHolder.builder()
105+
.sourceType("tinyint")
106+
.fullSourceDataType("tinyint(1) unsigned")
107+
.airbyteType(JsonSchemaType.INTEGER)
108+
.addInsertValues("null", "0", "1", "2", "3")
109+
.addExpectedValues(null, "0", "1", "2", "3")
110+
.build());
111+
103112
addDataTypeTestData(
104113
TestDataHolder.builder()
105114
.sourceType("tinyint")

docs/integrations/sources/mysql.md

Lines changed: 76 additions & 74 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)