diff --git a/airbyte-config/init/src/main/resources/seed/source_definitions.yaml b/airbyte-config/init/src/main/resources/seed/source_definitions.yaml index a04beef39b774..10ca509b86939 100644 --- a/airbyte-config/init/src/main/resources/seed/source_definitions.yaml +++ b/airbyte-config/init/src/main/resources/seed/source_definitions.yaml @@ -41,7 +41,7 @@ - name: AlloyDB for PostgreSQL sourceDefinitionId: 1fa90628-2b9e-11ed-a261-0242ac120002 dockerRepository: airbyte/source-alloydb - dockerImageTag: 1.0.34 + dockerImageTag: 1.0.35 documentationUrl: https://docs.airbyte.com/integrations/sources/alloydb icon: alloydb.svg sourceType: database @@ -249,7 +249,7 @@ - name: ClickHouse sourceDefinitionId: bad83517-5e54-4a3d-9b53-63e85fbd4d7c dockerRepository: airbyte/source-clickhouse - dockerImageTag: 0.1.14 + dockerImageTag: 0.1.15 documentationUrl: https://docs.airbyte.com/integrations/sources/clickhouse icon: clickhouse.svg sourceType: database @@ -281,7 +281,7 @@ - name: Cockroachdb sourceDefinitionId: 9fa5862c-da7c-11eb-8d19-0242ac130003 dockerRepository: airbyte/source-cockroachdb - dockerImageTag: 0.1.18 + dockerImageTag: 0.1.19 documentationUrl: https://docs.airbyte.com/integrations/sources/cockroachdb icon: cockroachdb.svg sourceType: database @@ -780,7 +780,7 @@ - name: IBM Db2 sourceDefinitionId: 447e0381-3780-4b46-bb62-00a4e3c8b8e2 dockerRepository: airbyte/source-db2 - dockerImageTag: 0.1.16 + dockerImageTag: 0.1.17 documentationUrl: https://docs.airbyte.com/integrations/sources/db2 icon: db2.svg sourceType: database @@ -1019,7 +1019,7 @@ - name: Microsoft SQL Server (MSSQL) sourceDefinitionId: b5ea17b1-f170-46dc-bc31-cc744ca984c1 dockerRepository: airbyte/source-mssql - dockerImageTag: 0.4.26 + dockerImageTag: 0.4.27 documentationUrl: https://docs.airbyte.com/integrations/sources/mssql icon: mssql.svg sourceType: database @@ -1075,7 +1075,7 @@ - name: MySQL sourceDefinitionId: 435bb9a5-7887-4809-aa58-28c27df0d7ad dockerRepository: airbyte/source-mysql - dockerImageTag: 1.0.18 + dockerImageTag: 1.0.19 documentationUrl: https://docs.airbyte.com/integrations/sources/mysql icon: mysql.svg sourceType: database @@ -1170,7 +1170,7 @@ - name: Oracle DB sourceDefinitionId: b39a7370-74c3-45a6-ac3a-380d48520a83 dockerRepository: airbyte/source-oracle - dockerImageTag: 0.3.21 + dockerImageTag: 0.3.22 documentationUrl: https://docs.airbyte.com/integrations/sources/oracle icon: oracle.svg sourceType: database @@ -1338,7 +1338,7 @@ - name: Postgres sourceDefinitionId: decd338e-5647-4c0b-adf4-da0e75f5a750 dockerRepository: airbyte/source-postgres - dockerImageTag: 1.0.37 + dockerImageTag: 1.0.38 documentationUrl: https://docs.airbyte.com/integrations/sources/postgres icon: postgresql.svg sourceType: database @@ -1450,7 +1450,7 @@ - name: Redshift sourceDefinitionId: e87ffa8e-a3b5-f69c-9076-6011339de1f6 dockerRepository: airbyte/source-redshift - dockerImageTag: 0.3.15 + dockerImageTag: 0.3.16 documentationUrl: https://docs.airbyte.com/integrations/sources/redshift icon: redshift.svg sourceType: database @@ -1632,7 +1632,7 @@ - name: Snowflake sourceDefinitionId: e2d65910-8c8b-40a1-ae7d-ee2416b2bfa2 dockerRepository: airbyte/source-snowflake - dockerImageTag: 0.1.28 + dockerImageTag: 0.1.29 documentationUrl: https://docs.airbyte.com/integrations/sources/snowflake icon: snowflake.svg sourceType: database @@ -1728,7 +1728,7 @@ - name: TiDB sourceDefinitionId: 0dad1a35-ccf8-4d03-b73e-6788c00b13ae dockerRepository: airbyte/source-tidb - dockerImageTag: 0.2.1 + dockerImageTag: 0.2.2 documentationUrl: https://docs.airbyte.com/integrations/sources/tidb icon: tidb.svg sourceType: database diff --git a/airbyte-config/init/src/main/resources/seed/source_specs.yaml b/airbyte-config/init/src/main/resources/seed/source_specs.yaml index 0193c183b78c1..f411d75623b70 100644 --- a/airbyte-config/init/src/main/resources/seed/source_specs.yaml +++ b/airbyte-config/init/src/main/resources/seed/source_specs.yaml @@ -280,7 +280,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-alloydb:1.0.34" +- dockerImage: "airbyte/source-alloydb:1.0.35" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/postgres" connectionSpecification: @@ -2185,7 +2185,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-clickhouse:0.1.14" +- dockerImage: "airbyte/source-clickhouse:0.1.15" spec: documentationUrl: "https://docs.airbyte.com/integrations/destinations/clickhouse" connectionSpecification: @@ -2476,7 +2476,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-cockroachdb:0.1.18" +- dockerImage: "airbyte/source-cockroachdb:0.1.19" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/cockroachdb" connectionSpecification: @@ -6428,7 +6428,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-db2:0.1.16" +- dockerImage: "airbyte/source-db2:0.1.17" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/db2" connectionSpecification: @@ -6492,9 +6492,6 @@ encryption_method: type: "string" const: "unencrypted" - enum: - - "unencrypted" - default: "unencrypted" - title: "TLS Encrypted (verify certificate)" description: "Verify and use the cert provided by the server." required: @@ -6504,9 +6501,6 @@ encryption_method: type: "string" const: "encrypted_verify_certificate" - enum: - - "encrypted_verify_certificate" - default: "encrypted_verify_certificate" ssl_certificate: title: "SSL PEM file" description: "Privacy Enhanced Mail (PEM) files are concatenated certificate\ @@ -8021,7 +8015,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-mssql:0.4.26" +- dockerImage: "airbyte/source-mssql:0.4.27" spec: documentationUrl: "https://docs.airbyte.com/integrations/destinations/mssql" connectionSpecification: @@ -8884,7 +8878,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-mysql:1.0.18" +- dockerImage: "airbyte/source-mysql:1.0.19" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/mysql" connectionSpecification: @@ -10135,7 +10129,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-oracle:0.3.21" +- dockerImage: "airbyte/source-oracle:0.3.22" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/oracle" connectionSpecification: @@ -10177,7 +10171,6 @@ connection_type: type: "string" const: "service_name" - default: "service_name" order: 0 service_name: title: "Service name" @@ -10191,7 +10184,6 @@ connection_type: type: "string" const: "sid" - default: "sid" order: 0 sid: title: "System ID (SID)" @@ -10239,9 +10231,6 @@ encryption_method: type: "string" const: "unencrypted" - enum: - - "unencrypted" - default: "unencrypted" - title: "Native Network Encryption (NNE)" description: "The native network encryption gives you the ability to encrypt\ \ database connections, without the configuration overhead of TCP/IP\ @@ -10252,9 +10241,6 @@ encryption_method: type: "string" const: "client_nne" - enum: - - "client_nne" - default: "client_nne" encryption_algorithm: type: "string" description: "This parameter defines what encryption algorithm is\ @@ -10274,9 +10260,6 @@ encryption_method: type: "string" const: "encrypted_verify_certificate" - enum: - - "encrypted_verify_certificate" - default: "encrypted_verify_certificate" ssl_certificate: title: "SSL PEM File" description: "Privacy Enhanced Mail (PEM) files are concatenated certificate\ @@ -11395,7 +11378,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-postgres:1.0.37" +- dockerImage: "airbyte/source-postgres:1.0.38" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/postgres" connectionSpecification: @@ -12233,7 +12216,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-redshift:0.3.15" +- dockerImage: "airbyte/source-redshift:0.3.16" spec: documentationUrl: "https://docs.airbyte.com/integrations/destinations/redshift" connectionSpecification: @@ -13709,7 +13692,7 @@ - - "client_secret" oauthFlowOutputParameters: - - "refresh_token" -- dockerImage: "airbyte/source-snowflake:0.1.28" +- dockerImage: "airbyte/source-snowflake:0.1.29" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/snowflake" connectionSpecification: @@ -14557,7 +14540,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-tidb:0.2.1" +- dockerImage: "airbyte/source-tidb:0.2.2" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/tidb" connectionSpecification: diff --git a/airbyte-db/db-lib/src/main/java/io/airbyte/db/jdbc/AbstractJdbcCompatibleSourceOperations.java b/airbyte-db/db-lib/src/main/java/io/airbyte/db/jdbc/AbstractJdbcCompatibleSourceOperations.java index 622ac41c77946..81b1db6af6506 100644 --- a/airbyte-db/db-lib/src/main/java/io/airbyte/db/jdbc/AbstractJdbcCompatibleSourceOperations.java +++ b/airbyte-db/db-lib/src/main/java/io/airbyte/db/jdbc/AbstractJdbcCompatibleSourceOperations.java @@ -23,9 +23,11 @@ import java.text.ParseException; import java.time.Instant; import java.time.LocalDate; +import java.time.LocalTime; import java.time.OffsetDateTime; import java.time.OffsetTime; import java.time.chrono.IsoEra; +import java.time.format.DateTimeParseException; import java.util.Collections; import javax.xml.bind.DatatypeConverter; @@ -121,11 +123,11 @@ protected void putString(final ObjectNode node, final String columnName, final R } protected void putDate(final ObjectNode node, final String columnName, final ResultSet resultSet, final int index) throws SQLException { - node.put(columnName, DataTypeUtils.toISO8601String(resultSet.getDate(index))); + node.put(columnName, DateTimeConverter.convertToDate(getObject(resultSet, index, LocalDate.class))); } protected void putTime(final ObjectNode node, final String columnName, final ResultSet resultSet, final int index) throws SQLException { - node.put(columnName, DataTypeUtils.toISO8601String(resultSet.getTime(index))); + node.put(columnName, DateTimeConverter.convertToTime(getObject(resultSet, index, LocalTime.class))); } protected void putTimestamp(final ObjectNode node, final String columnName, final ResultSet resultSet, final int index) throws SQLException { @@ -143,7 +145,11 @@ protected void putDefault(final ObjectNode node, final String columnName, final } protected void setTime(final PreparedStatement preparedStatement, final int parameterIndex, final String value) throws SQLException { - setTimestamp(preparedStatement, parameterIndex, value); + try { + preparedStatement.setObject(parameterIndex, LocalTime.parse(value)); + } catch (final DateTimeParseException e) { + setTimestamp(preparedStatement, parameterIndex, value); + } } protected void setTimestamp(final PreparedStatement preparedStatement, final int parameterIndex, final String value) throws SQLException { @@ -174,6 +180,14 @@ protected void setTimestamp(final PreparedStatement preparedStatement, final int } protected void setDate(final PreparedStatement preparedStatement, final int parameterIndex, final String value) throws SQLException { + try { + preparedStatement.setObject(parameterIndex, LocalDate.parse(value)); + } catch (final DateTimeParseException e) { + setDateAsTimestamp(preparedStatement, parameterIndex, value); + } + } + + private void setDateAsTimestamp(PreparedStatement preparedStatement, int parameterIndex, String value) throws SQLException { try { final Timestamp from = Timestamp.from(DataTypeUtils.getDateFormat().parse(value).toInstant()); preparedStatement.setDate(parameterIndex, new Date(from.getTime())); diff --git a/airbyte-db/db-lib/src/main/java/io/airbyte/db/jdbc/DateTimeConverter.java b/airbyte-db/db-lib/src/main/java/io/airbyte/db/jdbc/DateTimeConverter.java index 5c8b6a306b07b..110a5e93dfb9b 100644 --- a/airbyte-db/db-lib/src/main/java/io/airbyte/db/jdbc/DateTimeConverter.java +++ b/airbyte-db/db-lib/src/main/java/io/airbyte/db/jdbc/DateTimeConverter.java @@ -12,7 +12,10 @@ import static io.airbyte.db.jdbc.AbstractJdbcCompatibleSourceOperations.resolveEra; import static java.time.ZoneOffset.UTC; +import com.fasterxml.jackson.databind.node.ObjectNode; import java.sql.Date; +import java.sql.ResultSet; +import java.sql.SQLException; import java.sql.Time; import java.sql.Timestamp; import java.time.Duration; @@ -168,4 +171,15 @@ public static String convertToTime(final Object time) { } } + public static void putJavaSQLDate(ObjectNode node, String columnName, ResultSet resultSet, int index) throws SQLException { + final Date date = resultSet.getDate(index); + node.put(columnName, convertToDate(date)); + } + + public static void putJavaSQLTime(ObjectNode node, String columnName, ResultSet resultSet, int index) throws SQLException { + // resultSet.getTime() will lose nanoseconds precision + final LocalTime localTime = resultSet.getTimestamp(index).toLocalDateTime().toLocalTime(); + node.put(columnName, convertToTime(localTime)); + } + } diff --git a/airbyte-db/db-lib/src/test/java/io/airbyte/db/jdbc/TestJdbcUtils.java b/airbyte-db/db-lib/src/test/java/io/airbyte/db/jdbc/TestJdbcUtils.java index 47fc5f7f83e2c..d21ce9ecb5b7f 100644 --- a/airbyte-db/db-lib/src/test/java/io/airbyte/db/jdbc/TestJdbcUtils.java +++ b/airbyte-db/db-lib/src/test/java/io/airbyte/db/jdbc/TestJdbcUtils.java @@ -163,8 +163,8 @@ void testSetStatementField() throws SQLException { sourceOperations.setCursorField(ps, 10, JDBCType.DECIMAL, "1"); sourceOperations.setCursorField(ps, 11, JDBCType.CHAR, "a"); sourceOperations.setCursorField(ps, 12, JDBCType.VARCHAR, "a"); - sourceOperations.setCursorField(ps, 13, JDBCType.DATE, "2020-11-01T00:00:00Z"); - sourceOperations.setCursorField(ps, 14, JDBCType.TIME, "1970-01-01T05:00:00.000Z"); + sourceOperations.setCursorField(ps, 13, JDBCType.DATE, "2020-11-01"); + sourceOperations.setCursorField(ps, 14, JDBCType.TIME, "05:00:00.000"); sourceOperations.setCursorField(ps, 15, JDBCType.TIMESTAMP, "2001-09-29T03:00:00.000Z"); sourceOperations.setCursorField(ps, 16, JDBCType.BINARY, "61616161"); @@ -391,10 +391,8 @@ private ObjectNode expectedValues() { expected.put("decimal", new BigDecimal(1)); expected.put("char", "a"); expected.put("varchar", "a"); - // todo (cgardens) we should parse this to a date string - expected.put("date", "2020-11-01T00:00:00Z"); - // todo (cgardens) we should parse this to a time string - expected.put("time", "1970-01-01T05:00:00Z"); + expected.put("date", "2020-11-01"); + expected.put("time", "05:00:00.000000"); expected.put("timestamp", "2001-09-29T03:00:00.000000Z"); expected.put("binary1", "aaaa".getBytes(Charsets.UTF_8)); return expected; diff --git a/airbyte-integrations/bases/debezium-v1-9-6/src/main/java/io/airbyte/integrations/debezium/internals/MSSQLConverter.java b/airbyte-integrations/bases/debezium-v1-9-6/src/main/java/io/airbyte/integrations/debezium/internals/MSSQLConverter.java index 50a5c77057ff9..09939a2eae9a7 100644 --- a/airbyte-integrations/bases/debezium-v1-9-6/src/main/java/io/airbyte/integrations/debezium/internals/MSSQLConverter.java +++ b/airbyte-integrations/bases/debezium-v1-9-6/src/main/java/io/airbyte/integrations/debezium/internals/MSSQLConverter.java @@ -8,6 +8,7 @@ import com.microsoft.sqlserver.jdbc.Geometry; import com.microsoft.sqlserver.jdbc.SQLServerException; import io.airbyte.db.DataTypeUtils; +import io.airbyte.db.jdbc.DateTimeConverter; import io.debezium.spi.converter.CustomConverter; import io.debezium.spi.converter.RelationalColumn; import java.math.BigDecimal; @@ -107,7 +108,9 @@ private void registerDate(final RelationalColumn field, if (Objects.isNull(input)) { return DebeziumConverterUtils.convertDefaultValue(field); } - + if (field.typeName().equalsIgnoreCase("DATE")) { + return DateTimeConverter.convertToDate(input); + } return DebeziumConverterUtils.convertDate(input); }); } diff --git a/airbyte-integrations/connectors/source-alloydb-strict-encrypt/Dockerfile b/airbyte-integrations/connectors/source-alloydb-strict-encrypt/Dockerfile index ea01b05c88654..9e6ce4500d97d 100644 --- a/airbyte-integrations/connectors/source-alloydb-strict-encrypt/Dockerfile +++ b/airbyte-integrations/connectors/source-alloydb-strict-encrypt/Dockerfile @@ -16,5 +16,5 @@ ENV APPLICATION source-alloydb-strict-encrypt COPY --from=build /airbyte /airbyte -LABEL io.airbyte.version=1.0.34 +LABEL io.airbyte.version=1.0.35 LABEL io.airbyte.name=airbyte/source-alloydb-strict-encrypt diff --git a/airbyte-integrations/connectors/source-alloydb/Dockerfile b/airbyte-integrations/connectors/source-alloydb/Dockerfile index 725fc5eef5e9f..6a1441b16c7f4 100644 --- a/airbyte-integrations/connectors/source-alloydb/Dockerfile +++ b/airbyte-integrations/connectors/source-alloydb/Dockerfile @@ -16,5 +16,5 @@ ENV APPLICATION source-alloydb COPY --from=build /airbyte /airbyte -LABEL io.airbyte.version=1.0.34 +LABEL io.airbyte.version=1.0.35 LABEL io.airbyte.name=airbyte/source-alloydb diff --git a/airbyte-integrations/connectors/source-clickhouse-strict-encrypt/Dockerfile b/airbyte-integrations/connectors/source-clickhouse-strict-encrypt/Dockerfile index 582507952ef21..0b2921c352eb7 100644 --- a/airbyte-integrations/connectors/source-clickhouse-strict-encrypt/Dockerfile +++ b/airbyte-integrations/connectors/source-clickhouse-strict-encrypt/Dockerfile @@ -16,5 +16,5 @@ ENV APPLICATION source-clickhouse-strict-encrypt COPY --from=build /airbyte /airbyte -LABEL io.airbyte.version=0.1.14 +LABEL io.airbyte.version=0.1.15 LABEL io.airbyte.name=airbyte/source-clickhouse-strict-encrypt diff --git a/airbyte-integrations/connectors/source-clickhouse/Dockerfile b/airbyte-integrations/connectors/source-clickhouse/Dockerfile index 6681cc7af3cba..68797ed45ef4f 100644 --- a/airbyte-integrations/connectors/source-clickhouse/Dockerfile +++ b/airbyte-integrations/connectors/source-clickhouse/Dockerfile @@ -16,5 +16,5 @@ ENV APPLICATION source-clickhouse COPY --from=build /airbyte /airbyte -LABEL io.airbyte.version=0.1.14 +LABEL io.airbyte.version=0.1.15 LABEL io.airbyte.name=airbyte/source-clickhouse diff --git a/airbyte-integrations/connectors/source-cockroachdb-strict-encrypt/Dockerfile b/airbyte-integrations/connectors/source-cockroachdb-strict-encrypt/Dockerfile index 86fe67b15e31b..854e9bd36f0b5 100644 --- a/airbyte-integrations/connectors/source-cockroachdb-strict-encrypt/Dockerfile +++ b/airbyte-integrations/connectors/source-cockroachdb-strict-encrypt/Dockerfile @@ -16,5 +16,5 @@ ENV APPLICATION source-cockroachdb-strict-encrypt COPY --from=build /airbyte /airbyte -LABEL io.airbyte.version=0.1.18 +LABEL io.airbyte.version=0.1.19 LABEL io.airbyte.name=airbyte/source-cockroachdb-strict-encrypt diff --git a/airbyte-integrations/connectors/source-cockroachdb/Dockerfile b/airbyte-integrations/connectors/source-cockroachdb/Dockerfile index 1541c933439be..f9ab5ba8ca5bc 100644 --- a/airbyte-integrations/connectors/source-cockroachdb/Dockerfile +++ b/airbyte-integrations/connectors/source-cockroachdb/Dockerfile @@ -16,5 +16,5 @@ ENV APPLICATION source-cockroachdb COPY --from=build /airbyte /airbyte -LABEL io.airbyte.version=0.1.18 +LABEL io.airbyte.version=0.1.19 LABEL io.airbyte.name=airbyte/source-cockroachdb diff --git a/airbyte-integrations/connectors/source-cockroachdb/src/main/java/io/airbyte/integrations/source/cockroachdb/CockroachJdbcSourceOperations.java b/airbyte-integrations/connectors/source-cockroachdb/src/main/java/io/airbyte/integrations/source/cockroachdb/CockroachJdbcSourceOperations.java index fcff6cc366f64..9b9d748e63c07 100644 --- a/airbyte-integrations/connectors/source-cockroachdb/src/main/java/io/airbyte/integrations/source/cockroachdb/CockroachJdbcSourceOperations.java +++ b/airbyte-integrations/connectors/source-cockroachdb/src/main/java/io/airbyte/integrations/source/cockroachdb/CockroachJdbcSourceOperations.java @@ -4,12 +4,15 @@ package io.airbyte.integrations.source.cockroachdb; +import static io.airbyte.db.DataTypeUtils.TIMETZ_FORMATTER; + import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; import io.airbyte.commons.json.Jsons; import io.airbyte.db.jdbc.JdbcSourceOperations; import java.sql.ResultSet; import java.sql.SQLException; +import java.time.OffsetTime; import java.util.Collections; /** @@ -61,6 +64,9 @@ private void putCockroachSpecialDataType(final ResultSet resultSet, final int in if ("numeric".equalsIgnoreCase(columnType)) { final double value = resultSet.getDouble(index); node.put(columnName, value); + } else if ("timetz".equalsIgnoreCase(columnType)) { + final OffsetTime timetz = getObject(resultSet, index, OffsetTime.class); + node.put(columnName, timetz.format(TIMETZ_FORMATTER)); } else { node.put(columnName, (Double) null); } diff --git a/airbyte-integrations/connectors/source-cockroachdb/src/test-integration/java/io/airbyte/integrations/source/cockroachdb/CockroachDbSourceDatatypeTest.java b/airbyte-integrations/connectors/source-cockroachdb/src/test-integration/java/io/airbyte/integrations/source/cockroachdb/CockroachDbSourceDatatypeTest.java index 4688fabe7a564..768dd5d4affaf 100644 --- a/airbyte-integrations/connectors/source-cockroachdb/src/test-integration/java/io/airbyte/integrations/source/cockroachdb/CockroachDbSourceDatatypeTest.java +++ b/airbyte-integrations/connectors/source-cockroachdb/src/test-integration/java/io/airbyte/integrations/source/cockroachdb/CockroachDbSourceDatatypeTest.java @@ -217,7 +217,7 @@ protected void initTests() { .sourceType("date") .airbyteType(JsonSchemaType.STRING) .addInsertValues("'1999-01-08'", "null") - .addExpectedValues("1999-01-08T00:00:00Z", null) + .addExpectedValues("1999-01-08", null) .build()); addDataTypeTestData( @@ -313,14 +313,12 @@ protected void initTests() { .addExpectedValues("a", "abc", "Миші йдуть;", "櫻花分店", "", null, "\\xF0\\x9F\\x9A\\x80") .build()); - // JdbcUtils-> DATE_FORMAT is set as ""yyyy-MM-dd'T'HH:mm:ss'Z'"" for both Date and Time types. - // Time (04:05:06) would be represented like "1970-01-01T04:05:06Z" addDataTypeTestData( TestDataHolder.builder() .sourceType("time") .airbyteType(JsonSchemaType.STRING) .addInsertValues("'04:05:06'", null) - .addExpectedValues("1970-01-01T04:05:06Z") + .addExpectedValues("04:05:06.000000") .addNullExpectedValue() .build()); @@ -330,7 +328,7 @@ protected void initTests() { .sourceType("timetz") .airbyteType(JsonSchemaType.STRING) .addInsertValues("'04:05:06Z'", null) - .addExpectedValues("1970-01-01T04:05:06Z") + .addExpectedValues("04:05:06.000000Z") .addNullExpectedValue() .build()); diff --git a/airbyte-integrations/connectors/source-cockroachdb/src/test/java/io/airbyte/integrations/source/cockroachdb/CockroachDbJdbcSourceAcceptanceTest.java b/airbyte-integrations/connectors/source-cockroachdb/src/test/java/io/airbyte/integrations/source/cockroachdb/CockroachDbJdbcSourceAcceptanceTest.java index 3888920c112c7..1908127186b6b 100644 --- a/airbyte-integrations/connectors/source-cockroachdb/src/test/java/io/airbyte/integrations/source/cockroachdb/CockroachDbJdbcSourceAcceptanceTest.java +++ b/airbyte-integrations/connectors/source-cockroachdb/src/test/java/io/airbyte/integrations/source/cockroachdb/CockroachDbJdbcSourceAcceptanceTest.java @@ -170,7 +170,7 @@ protected List getTestMessages() { .withData(Jsons.jsonNode(ImmutableMap .of(COL_ID, ID_VALUE_1, COL_NAME, "picard", - COL_UPDATED_AT, "2004-10-19T00:00:00Z")))), + COL_UPDATED_AT, "2004-10-19")))), new AirbyteMessage().withType(Type.RECORD) .withRecord(new AirbyteRecordMessage().withStream(streamName) .withNamespace(getDefaultNamespace()) @@ -178,14 +178,14 @@ protected List getTestMessages() { .of(COL_ID, ID_VALUE_2, COL_NAME, "crusher", COL_UPDATED_AT, - "2005-10-19T00:00:00Z")))), + "2005-10-19")))), new AirbyteMessage().withType(Type.RECORD) .withRecord(new AirbyteRecordMessage().withStream(streamName) .withNamespace(getDefaultNamespace()) .withData(Jsons.jsonNode(ImmutableMap .of(COL_ID, ID_VALUE_3, COL_NAME, "vash", - COL_UPDATED_AT, "2006-10-19T00:00:00Z"))))); + COL_UPDATED_AT, "2006-10-19"))))); } @Test @@ -314,13 +314,13 @@ void testReadOneTableIncrementallyTwice() throws Exception { .withData(Jsons.jsonNode(ImmutableMap .of(COL_ID, ID_VALUE_4, COL_NAME, "riker", - COL_UPDATED_AT, "2006-10-19T00:00:00Z"))))); + COL_UPDATED_AT, "2006-10-19"))))); expectedMessages.add(new AirbyteMessage().withType(Type.RECORD) .withRecord(new AirbyteRecordMessage().withStream(streamName).withNamespace(namespace) .withData(Jsons.jsonNode(ImmutableMap .of(COL_ID, ID_VALUE_5, COL_NAME, "data", - COL_UPDATED_AT, "2006-10-19T00:00:00Z"))))); + COL_UPDATED_AT, "2006-10-19"))))); expectedMessages.add(new AirbyteMessage() .withType(Type.STATE) .withState(new AirbyteStateMessage() diff --git a/airbyte-integrations/connectors/source-db2-strict-encrypt/Dockerfile b/airbyte-integrations/connectors/source-db2-strict-encrypt/Dockerfile index ab7aecf547028..5b9702f1a42f0 100644 --- a/airbyte-integrations/connectors/source-db2-strict-encrypt/Dockerfile +++ b/airbyte-integrations/connectors/source-db2-strict-encrypt/Dockerfile @@ -16,5 +16,5 @@ ENV APPLICATION source-db2-strict-encrypt COPY --from=build /airbyte /airbyte -LABEL io.airbyte.version=0.1.16 +LABEL io.airbyte.version=0.1.17 LABEL io.airbyte.name=airbyte/source-db2-strict-encrypt diff --git a/airbyte-integrations/connectors/source-db2-strict-encrypt/src/test/resources/expected_spec.json b/airbyte-integrations/connectors/source-db2-strict-encrypt/src/test/resources/expected_spec.json index 557025936b6f4..3fe1ab7805253 100644 --- a/airbyte-integrations/connectors/source-db2-strict-encrypt/src/test/resources/expected_spec.json +++ b/airbyte-integrations/connectors/source-db2-strict-encrypt/src/test/resources/expected_spec.json @@ -56,9 +56,7 @@ "properties": { "encryption_method": { "type": "string", - "const": "encrypted_verify_certificate", - "enum": ["encrypted_verify_certificate"], - "default": "encrypted_verify_certificate" + "const": "encrypted_verify_certificate" }, "ssl_certificate": { "title": "SSL PEM file", diff --git a/airbyte-integrations/connectors/source-db2/Dockerfile b/airbyte-integrations/connectors/source-db2/Dockerfile index 0bb990e58705b..2c7585110df54 100644 --- a/airbyte-integrations/connectors/source-db2/Dockerfile +++ b/airbyte-integrations/connectors/source-db2/Dockerfile @@ -16,5 +16,5 @@ ENV APPLICATION source-db2 COPY --from=build /airbyte /airbyte -LABEL io.airbyte.version=0.1.16 +LABEL io.airbyte.version=0.1.17 LABEL io.airbyte.name=airbyte/source-db2 diff --git a/airbyte-integrations/connectors/source-db2/src/main/java/io.airbyte.integrations.source.db2/Db2SourceOperations.java b/airbyte-integrations/connectors/source-db2/src/main/java/io.airbyte.integrations.source.db2/Db2SourceOperations.java index 54f56bb914123..7269c6ede29e6 100644 --- a/airbyte-integrations/connectors/source-db2/src/main/java/io.airbyte.integrations.source.db2/Db2SourceOperations.java +++ b/airbyte-integrations/connectors/source-db2/src/main/java/io.airbyte.integrations.source.db2/Db2SourceOperations.java @@ -4,12 +4,18 @@ package io.airbyte.integrations.source.db2; +import static io.airbyte.db.jdbc.DateTimeConverter.putJavaSQLDate; +import static io.airbyte.db.jdbc.DateTimeConverter.putJavaSQLTime; + import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; import io.airbyte.commons.json.Jsons; import io.airbyte.db.jdbc.JdbcSourceOperations; +import java.sql.Date; +import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.time.LocalDate; import java.util.Collections; import java.util.List; import org.slf4j.Logger; @@ -69,4 +75,28 @@ private void putDecfloat(final ObjectNode node, } } + @Override + protected void putDate(final ObjectNode node, + final String columnName, + final ResultSet resultSet, + final int index) + throws SQLException { + putJavaSQLDate(node, columnName, resultSet, index); + } + + @Override + protected void putTime(final ObjectNode node, + final String columnName, + final ResultSet resultSet, + final int index) + throws SQLException { + putJavaSQLTime(node, columnName, resultSet, index); + } + + @Override + protected void setDate(final PreparedStatement preparedStatement, final int parameterIndex, final String value) throws SQLException { + final LocalDate date = LocalDate.parse(value); + preparedStatement.setDate(parameterIndex, Date.valueOf(date)); + } + } diff --git a/airbyte-integrations/connectors/source-db2/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/Db2SourceDatatypeTest.java b/airbyte-integrations/connectors/source-db2/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/Db2SourceDatatypeTest.java index 7e8a778c183a6..4e64894ce8f47 100644 --- a/airbyte-integrations/connectors/source-db2/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/Db2SourceDatatypeTest.java +++ b/airbyte-integrations/connectors/source-db2/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/Db2SourceDatatypeTest.java @@ -303,7 +303,7 @@ protected void initTests() { .sourceType("DATE") .airbyteType(JsonSchemaType.STRING) .addInsertValues("null", "'0001-01-01'", "'9999-12-31'") - .addExpectedValues(null, "0001-01-01T00:00:00Z", "9999-12-31T00:00:00Z") + .addExpectedValues(null, "0001-01-01", "9999-12-31") .build()); addDataTypeTestData( TestDataHolder.builder() @@ -311,7 +311,7 @@ protected void initTests() { .sourceType("TIME") .airbyteType(JsonSchemaType.STRING) .addInsertValues("null", "'00.00.00'", "'1:59 PM'", "'23.59.59'") - .addExpectedValues(null, "1970-01-01T00:00:00Z", "1970-01-01T13:59:00Z", "1970-01-01T23:59:59Z") + .addExpectedValues(null, "00:00:00.000000", "13:59:00.000000", "23:59:59.000000") .build()); addDataTypeTestData( TestDataHolder.builder() diff --git a/airbyte-integrations/connectors/source-jdbc/src/testFixtures/java/io/airbyte/integrations/source/jdbc/test/JdbcSourceAcceptanceTest.java b/airbyte-integrations/connectors/source-jdbc/src/testFixtures/java/io/airbyte/integrations/source/jdbc/test/JdbcSourceAcceptanceTest.java index fe803578aa2ca..590d968f6e8c0 100644 --- a/airbyte-integrations/connectors/source-jdbc/src/testFixtures/java/io/airbyte/integrations/source/jdbc/test/JdbcSourceAcceptanceTest.java +++ b/airbyte-integrations/connectors/source-jdbc/src/testFixtures/java/io/airbyte/integrations/source/jdbc/test/JdbcSourceAcceptanceTest.java @@ -635,8 +635,8 @@ void testIncrementalDateCheckCursor() throws Exception { protected void incrementalDateCheck() throws Exception { incrementalCursorCheck( COL_UPDATED_AT, - "2005-10-18T00:00:00Z", - "2006-10-19T00:00:00Z", + "2005-10-18", + "2006-10-19", List.of(getTestMessages().get(1), getTestMessages().get(2))); } @@ -704,13 +704,13 @@ protected List getExpectedAirbyteMessagesSecondSync(final String .withData(Jsons.jsonNode(Map .of(COL_ID, ID_VALUE_4, COL_NAME, "riker", - COL_UPDATED_AT, "2006-10-19T00:00:00Z"))))); + COL_UPDATED_AT, "2006-10-19"))))); expectedMessages.add(new AirbyteMessage().withType(Type.RECORD) .withRecord(new AirbyteRecordMessage().withStream(streamName).withNamespace(namespace) .withData(Jsons.jsonNode(Map .of(COL_ID, ID_VALUE_5, COL_NAME, "data", - COL_UPDATED_AT, "2006-10-19T00:00:00Z"))))); + COL_UPDATED_AT, "2006-10-19"))))); final DbStreamState state = new DbStreamState() .withStreamName(streamName) .withStreamNamespace(namespace) @@ -1035,20 +1035,20 @@ protected List getTestMessages() { .withData(Jsons.jsonNode(Map .of(COL_ID, ID_VALUE_1, COL_NAME, "picard", - COL_UPDATED_AT, "2004-10-19T00:00:00Z")))), + COL_UPDATED_AT, "2004-10-19")))), new AirbyteMessage().withType(Type.RECORD) .withRecord(new AirbyteRecordMessage().withStream(streamName).withNamespace(getDefaultNamespace()) .withData(Jsons.jsonNode(Map .of(COL_ID, ID_VALUE_2, COL_NAME, "crusher", COL_UPDATED_AT, - "2005-10-19T00:00:00Z")))), + "2005-10-19")))), new AirbyteMessage().withType(Type.RECORD) .withRecord(new AirbyteRecordMessage().withStream(streamName).withNamespace(getDefaultNamespace()) .withData(Jsons.jsonNode(Map .of(COL_ID, ID_VALUE_3, COL_NAME, "vash", - COL_UPDATED_AT, "2006-10-19T00:00:00Z"))))); + COL_UPDATED_AT, "2006-10-19"))))); } protected List createExpectedTestMessages(final List states) { diff --git a/airbyte-integrations/connectors/source-mssql-strict-encrypt/Dockerfile b/airbyte-integrations/connectors/source-mssql-strict-encrypt/Dockerfile index b5ecbf766a7ec..3ec6c69f7c274 100644 --- a/airbyte-integrations/connectors/source-mssql-strict-encrypt/Dockerfile +++ b/airbyte-integrations/connectors/source-mssql-strict-encrypt/Dockerfile @@ -16,5 +16,5 @@ ENV APPLICATION source-mssql-strict-encrypt COPY --from=build /airbyte /airbyte -LABEL io.airbyte.version=0.4.26 +LABEL io.airbyte.version=0.4.27 LABEL io.airbyte.name=airbyte/source-mssql-strict-encrypt diff --git a/airbyte-integrations/connectors/source-mssql/Dockerfile b/airbyte-integrations/connectors/source-mssql/Dockerfile index 853c017b29cbf..b0624aaf167ea 100644 --- a/airbyte-integrations/connectors/source-mssql/Dockerfile +++ b/airbyte-integrations/connectors/source-mssql/Dockerfile @@ -16,5 +16,5 @@ ENV APPLICATION source-mssql COPY --from=build /airbyte /airbyte -LABEL io.airbyte.version=0.4.26 +LABEL io.airbyte.version=0.4.27 LABEL io.airbyte.name=airbyte/source-mssql diff --git a/airbyte-integrations/connectors/source-mssql/src/test-integration/java/io/airbyte/integrations/source/mssql/AbstractMssqlSourceDatatypeTest.java b/airbyte-integrations/connectors/source-mssql/src/test-integration/java/io/airbyte/integrations/source/mssql/AbstractMssqlSourceDatatypeTest.java index 913066af8c06b..99ecc7b4142bc 100644 --- a/airbyte-integrations/connectors/source-mssql/src/test-integration/java/io/airbyte/integrations/source/mssql/AbstractMssqlSourceDatatypeTest.java +++ b/airbyte-integrations/connectors/source-mssql/src/test-integration/java/io/airbyte/integrations/source/mssql/AbstractMssqlSourceDatatypeTest.java @@ -144,7 +144,7 @@ protected void initTests() { .sourceType("date") .airbyteType(JsonSchemaType.STRING) .addInsertValues("'0001-01-01'", "'9999-12-31'", "'1999-01-08'", "null") - .addExpectedValues("0001-01-01T00:00:00Z", "9999-12-31T00:00:00Z", "1999-01-08T00:00:00Z", null) + .addExpectedValues("0001-01-01", "9999-12-31", "1999-01-08", null) .createTablePatternSql(CREATE_TABLE_SQL) .build()); diff --git a/airbyte-integrations/connectors/source-mysql-strict-encrypt/Dockerfile b/airbyte-integrations/connectors/source-mysql-strict-encrypt/Dockerfile index a0321888bad3d..bb8acc44839f0 100644 --- a/airbyte-integrations/connectors/source-mysql-strict-encrypt/Dockerfile +++ b/airbyte-integrations/connectors/source-mysql-strict-encrypt/Dockerfile @@ -16,6 +16,6 @@ ENV APPLICATION source-mysql-strict-encrypt COPY --from=build /airbyte /airbyte -LABEL io.airbyte.version=1.0.18 +LABEL io.airbyte.version=1.0.19 LABEL io.airbyte.name=airbyte/source-mysql-strict-encrypt diff --git a/airbyte-integrations/connectors/source-mysql/Dockerfile b/airbyte-integrations/connectors/source-mysql/Dockerfile index 00e243fb16efe..149618a5dfe6b 100644 --- a/airbyte-integrations/connectors/source-mysql/Dockerfile +++ b/airbyte-integrations/connectors/source-mysql/Dockerfile @@ -16,6 +16,6 @@ ENV APPLICATION source-mysql COPY --from=build /airbyte /airbyte -LABEL io.airbyte.version=1.0.18 +LABEL io.airbyte.version=1.0.19 LABEL io.airbyte.name=airbyte/source-mysql diff --git a/airbyte-integrations/connectors/source-mysql/src/main/java/io/airbyte/integrations/source/mysql/MySqlSourceOperations.java b/airbyte-integrations/connectors/source-mysql/src/main/java/io/airbyte/integrations/source/mysql/MySqlSourceOperations.java index e200f8e29de45..9a1693f328b4a 100644 --- a/airbyte-integrations/connectors/source-mysql/src/main/java/io/airbyte/integrations/source/mysql/MySqlSourceOperations.java +++ b/airbyte-integrations/connectors/source-mysql/src/main/java/io/airbyte/integrations/source/mysql/MySqlSourceOperations.java @@ -212,16 +212,6 @@ public boolean isCursorType(final MysqlType type) { return ALLOWED_CURSOR_TYPES.contains(type); } - @Override - protected void putDate(final ObjectNode node, final String columnName, final ResultSet resultSet, final int index) throws SQLException { - node.put(columnName, DateTimeConverter.convertToDate(getObject(resultSet, index, LocalDate.class))); - } - - @Override - protected void putTime(final ObjectNode node, final String columnName, final ResultSet resultSet, final int index) throws SQLException { - node.put(columnName, DateTimeConverter.convertToTime(getObject(resultSet, index, LocalTime.class))); - } - @Override protected void putTimestamp(final ObjectNode node, final String columnName, final ResultSet resultSet, final int index) throws SQLException { node.put(columnName, DateTimeConverter.convertToTimestamp(getObject(resultSet, index, LocalDateTime.class))); @@ -282,16 +272,4 @@ private void setTimestampWithTimezone(final PreparedStatement preparedStatement, } } - @Override - protected void setTime(final PreparedStatement preparedStatement, final int parameterIndex, final String value) throws SQLException { - try { - preparedStatement.setObject(parameterIndex, LocalTime.parse(value)); - } catch (final DateTimeParseException e) { - LOGGER.warn("Exception occurred while trying to parse value for time column the new way, trying the old way", e); - // This is just for backward compatibility for connectors created on versions before PR - // https://github.com/airbytehq/airbyte/pull/15504 - super.setTime(preparedStatement, parameterIndex, value); - } - } - } diff --git a/airbyte-integrations/connectors/source-oracle-strict-encrypt/Dockerfile b/airbyte-integrations/connectors/source-oracle-strict-encrypt/Dockerfile index af3a651f6cfb3..9ee02828dd283 100644 --- a/airbyte-integrations/connectors/source-oracle-strict-encrypt/Dockerfile +++ b/airbyte-integrations/connectors/source-oracle-strict-encrypt/Dockerfile @@ -17,5 +17,5 @@ ENV TZ UTC COPY --from=build /airbyte /airbyte -LABEL io.airbyte.version=0.3.21 +LABEL io.airbyte.version=0.3.22 LABEL io.airbyte.name=airbyte/source-oracle-strict-encrypt diff --git a/airbyte-integrations/connectors/source-oracle-strict-encrypt/src/test/resources/expected_spec.json b/airbyte-integrations/connectors/source-oracle-strict-encrypt/src/test/resources/expected_spec.json index 17856fc32ad8e..61f6a599e4c94 100644 --- a/airbyte-integrations/connectors/source-oracle-strict-encrypt/src/test/resources/expected_spec.json +++ b/airbyte-integrations/connectors/source-oracle-strict-encrypt/src/test/resources/expected_spec.json @@ -35,7 +35,6 @@ "connection_type": { "type": "string", "const": "service_name", - "default": "service_name", "order": 0 }, "service_name": { @@ -53,7 +52,6 @@ "connection_type": { "type": "string", "const": "sid", - "default": "sid", "order": 0 }, "sid": { @@ -108,9 +106,7 @@ "properties": { "encryption_method": { "type": "string", - "const": "client_nne", - "enum": ["client_nne"], - "default": "client_nne" + "const": "client_nne" }, "encryption_algorithm": { "type": "string", @@ -128,9 +124,7 @@ "properties": { "encryption_method": { "type": "string", - "const": "encrypted_verify_certificate", - "enum": ["encrypted_verify_certificate"], - "default": "encrypted_verify_certificate" + "const": "encrypted_verify_certificate" }, "ssl_certificate": { "title": "SSL PEM File", @@ -146,4 +140,4 @@ } } } -} +} \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-oracle/Dockerfile b/airbyte-integrations/connectors/source-oracle/Dockerfile index 5baa8ea52a26a..3ed7c32f81c6f 100644 --- a/airbyte-integrations/connectors/source-oracle/Dockerfile +++ b/airbyte-integrations/connectors/source-oracle/Dockerfile @@ -8,5 +8,5 @@ ENV TZ UTC COPY build/distributions/${APPLICATION}*.tar ${APPLICATION}.tar RUN tar xf ${APPLICATION}.tar --strip-components=1 -LABEL io.airbyte.version=0.3.21 +LABEL io.airbyte.version=0.3.22 LABEL io.airbyte.name=airbyte/source-oracle diff --git a/airbyte-integrations/connectors/source-oracle/src/main/java/io/airbyte/integrations/source/oracle/OracleSource.java b/airbyte-integrations/connectors/source-oracle/src/main/java/io/airbyte/integrations/source/oracle/OracleSource.java index b0f1ebc2ce267..fdd1a7563af87 100644 --- a/airbyte-integrations/connectors/source-oracle/src/main/java/io/airbyte/integrations/source/oracle/OracleSource.java +++ b/airbyte-integrations/connectors/source-oracle/src/main/java/io/airbyte/integrations/source/oracle/OracleSource.java @@ -53,7 +53,7 @@ enum Protocol { } public OracleSource() { - super(DRIVER_CLASS, AdaptiveStreamingQueryConfig::new, JdbcUtils.getDefaultSourceOperations()); + super(DRIVER_CLASS, AdaptiveStreamingQueryConfig::new, new OracleSourceOperations()); } public static Source sshWrappedSource() { diff --git a/airbyte-integrations/connectors/source-oracle/src/main/java/io/airbyte/integrations/source/oracle/OracleSourceOperations.java b/airbyte-integrations/connectors/source-oracle/src/main/java/io/airbyte/integrations/source/oracle/OracleSourceOperations.java new file mode 100644 index 0000000000000..7cd9ed52a163a --- /dev/null +++ b/airbyte-integrations/connectors/source-oracle/src/main/java/io/airbyte/integrations/source/oracle/OracleSourceOperations.java @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.integrations.source.oracle; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import io.airbyte.db.jdbc.DateTimeConverter; +import io.airbyte.db.jdbc.JdbcSourceOperations; +import java.sql.ResultSet; +import java.sql.SQLException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class OracleSourceOperations extends JdbcSourceOperations { + + private static final Logger LOGGER = LoggerFactory.getLogger(OracleSourceOperations.class); + + /** + * Oracle's DATE type can actually have time values, so we return a full timestamp. + */ + @Override + protected void putDate(ObjectNode node, String columnName, ResultSet resultSet, int index) throws SQLException { + node.put(columnName, DateTimeConverter.convertToTimestamp(resultSet.getTimestamp(index))); + } + +} diff --git a/airbyte-integrations/connectors/source-postgres-strict-encrypt/Dockerfile b/airbyte-integrations/connectors/source-postgres-strict-encrypt/Dockerfile index df697ded6fa69..6e8c951d7a933 100644 --- a/airbyte-integrations/connectors/source-postgres-strict-encrypt/Dockerfile +++ b/airbyte-integrations/connectors/source-postgres-strict-encrypt/Dockerfile @@ -16,5 +16,5 @@ ENV APPLICATION source-postgres-strict-encrypt COPY --from=build /airbyte /airbyte -LABEL io.airbyte.version=1.0.37 +LABEL io.airbyte.version=1.0.38 LABEL io.airbyte.name=airbyte/source-postgres-strict-encrypt diff --git a/airbyte-integrations/connectors/source-postgres/Dockerfile b/airbyte-integrations/connectors/source-postgres/Dockerfile index 291e5c2c77634..04a84a8f6750a 100644 --- a/airbyte-integrations/connectors/source-postgres/Dockerfile +++ b/airbyte-integrations/connectors/source-postgres/Dockerfile @@ -16,5 +16,5 @@ ENV APPLICATION source-postgres COPY --from=build /airbyte /airbyte -LABEL io.airbyte.version=1.0.37 +LABEL io.airbyte.version=1.0.38 LABEL io.airbyte.name=airbyte/source-postgres diff --git a/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/PostgresSourceOperations.java b/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/PostgresSourceOperations.java index 44492b99b0156..6d491c8df10a7 100644 --- a/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/PostgresSourceOperations.java +++ b/airbyte-integrations/connectors/source-postgres/src/main/java/io/airbyte/integrations/source/postgres/PostgresSourceOperations.java @@ -157,17 +157,6 @@ protected void setTimestamp(final PreparedStatement preparedStatement, final int } } - @Override - protected void setTime(final PreparedStatement preparedStatement, final int parameterIndex, final String value) throws SQLException { - try { - preparedStatement.setObject(parameterIndex, LocalTime.parse(value)); - } catch (final DateTimeParseException e) { - // attempt to parse the datetime with timezone. This can be caused by schema created with an older - // version of the connector - preparedStatement.setObject(parameterIndex, OffsetTime.parse(value)); - } - } - @Override protected void setDate(final PreparedStatement preparedStatement, final int parameterIndex, final String value) throws SQLException { preparedStatement.setObject(parameterIndex, LocalDate.parse(value)); @@ -383,16 +372,6 @@ private void putLongArray(final ObjectNode node, final String columnName, final node.set(columnName, arrayNode); } - @Override - protected void putDate(final ObjectNode node, final String columnName, final ResultSet resultSet, final int index) throws SQLException { - node.put(columnName, DateTimeConverter.convertToDate(getObject(resultSet, index, LocalDate.class))); - } - - @Override - protected void putTime(final ObjectNode node, final String columnName, final ResultSet resultSet, final int index) throws SQLException { - node.put(columnName, DateTimeConverter.convertToTime(getObject(resultSet, index, LocalTime.class))); - } - @Override protected void putTimestamp(final ObjectNode node, final String columnName, final ResultSet resultSet, final int index) throws SQLException { node.put(columnName, DateTimeConverter.convertToTimestamp(resultSet.getTimestamp(index))); diff --git a/airbyte-integrations/connectors/source-redshift/Dockerfile b/airbyte-integrations/connectors/source-redshift/Dockerfile index 0a9527c26e368..8a66ebcc16d1a 100644 --- a/airbyte-integrations/connectors/source-redshift/Dockerfile +++ b/airbyte-integrations/connectors/source-redshift/Dockerfile @@ -16,5 +16,5 @@ ENV APPLICATION source-redshift COPY --from=build /airbyte /airbyte -LABEL io.airbyte.version=0.3.15 +LABEL io.airbyte.version=0.3.16 LABEL io.airbyte.name=airbyte/source-redshift diff --git a/airbyte-integrations/connectors/source-redshift/integration_tests/expected_records.jsonl b/airbyte-integrations/connectors/source-redshift/integration_tests/expected_records.jsonl index 1fc4b9afa4237..28c55a076ada6 100644 --- a/airbyte-integrations/connectors/source-redshift/integration_tests/expected_records.jsonl +++ b/airbyte-integrations/connectors/source-redshift/integration_tests/expected_records.jsonl @@ -1,2 +1,2 @@ -{"stream": "sat_basic_dataset", "data": {"id":1,"test_column_1":1,"test_column_2":126,"test_column_3":1024,"test_column_4":556,"test_column_5":777.888,"test_column_6":999.0,"test_column_7":true,"test_column_8":"q","test_column_9":"some text","test_column_10":"2008-12-31T00:00:00Z","test_column_11":"2008-06-01T09:59:59.000000Z","test_column_12":"2008-06-01T14:59:59.000000Z","test_column_13":"1970-01-01T04:05:06Z","test_column_14":"09:05:06+00","test_column_15":"787878"}, "emitted_at": 1669734903259 } -{"stream": "sat_basic_dataset", "data": {"id":2,"test_column_1":-5,"test_column_2":-126,"test_column_3":-1024,"test_column_4":-556,"test_column_5":-777.888,"test_column_6":-999.0,"test_column_7":false,"test_column_8":"g","test_column_9":"new text","test_column_10":"1987-10-10T00:00:00Z","test_column_11":"2005-06-21T12:00:59.000000Z","test_column_12":"2003-10-15T14:59:59.000000Z","test_column_13":"1970-01-01T04:05:00Z","test_column_14":"09:05:00+00","test_column_15":"797979"}, "emitted_at": 1669734903259 } +{"stream": "sat_basic_dataset", "data": {"id":1,"test_column_1":1,"test_column_2":126,"test_column_3":1024,"test_column_4":556,"test_column_5":777.888,"test_column_6":999.0,"test_column_7":true,"test_column_8":"q","test_column_9":"some text","test_column_10":"2008-12-31","test_column_11":"2008-06-01T09:59:59.000000Z","test_column_12":"2008-06-01T14:59:59.000000Z","test_column_13":"04:05:06.000000","test_column_14":"09:05:06+00","test_column_15":"787878"}, "emitted_at": 1669734903259 } +{"stream": "sat_basic_dataset", "data": {"id":2,"test_column_1":-5,"test_column_2":-126,"test_column_3":-1024,"test_column_4":-556,"test_column_5":-777.888,"test_column_6":-999.0,"test_column_7":false,"test_column_8":"g","test_column_9":"new text","test_column_10":"1987-10-10","test_column_11":"2005-06-21T12:00:59.000000Z","test_column_12":"2003-10-15T14:59:59.000000Z","test_column_13":"04:05:00.000000","test_column_14":"09:05:00+00","test_column_15":"797979"}, "emitted_at": 1669734903259 } diff --git a/airbyte-integrations/connectors/source-redshift/src/main/java/io/airbyte/integrations/source/redshift/RedshiftSource.java b/airbyte-integrations/connectors/source-redshift/src/main/java/io/airbyte/integrations/source/redshift/RedshiftSource.java index e91a610426a66..03d570ad2c063 100644 --- a/airbyte-integrations/connectors/source-redshift/src/main/java/io/airbyte/integrations/source/redshift/RedshiftSource.java +++ b/airbyte-integrations/connectors/source-redshift/src/main/java/io/airbyte/integrations/source/redshift/RedshiftSource.java @@ -38,7 +38,7 @@ public class RedshiftSource extends AbstractJdbcSource { // todo (cgardens) - clean up passing the dialect as null versus explicitly adding the case to the // constructor. public RedshiftSource() { - super(DRIVER_CLASS, AdaptiveStreamingQueryConfig::new, JdbcUtils.getDefaultSourceOperations()); + super(DRIVER_CLASS, AdaptiveStreamingQueryConfig::new, new RedshiftSourceOperations()); } @Override diff --git a/airbyte-integrations/connectors/source-redshift/src/main/java/io/airbyte/integrations/source/redshift/RedshiftSourceOperations.java b/airbyte-integrations/connectors/source-redshift/src/main/java/io/airbyte/integrations/source/redshift/RedshiftSourceOperations.java new file mode 100644 index 0000000000000..48a09d6ef8d16 --- /dev/null +++ b/airbyte-integrations/connectors/source-redshift/src/main/java/io/airbyte/integrations/source/redshift/RedshiftSourceOperations.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2022 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.integrations.source.redshift; + +import static io.airbyte.db.jdbc.DateTimeConverter.putJavaSQLDate; +import static io.airbyte.db.jdbc.DateTimeConverter.putJavaSQLTime; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import io.airbyte.db.jdbc.JdbcSourceOperations; +import java.sql.Date; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.time.LocalDate; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class RedshiftSourceOperations extends JdbcSourceOperations { + + private static final Logger LOGGER = LoggerFactory.getLogger(RedshiftSourceOperations.class); + + @Override + protected void putDate(final ObjectNode node, + final String columnName, + final ResultSet resultSet, + final int index) + throws SQLException { + putJavaSQLDate(node, columnName, resultSet, index); + } + + @Override + protected void putTime(final ObjectNode node, + final String columnName, + final ResultSet resultSet, + final int index) + throws SQLException { + putJavaSQLTime(node, columnName, resultSet, index); + } + + @Override + protected void setDate(final PreparedStatement preparedStatement, final int parameterIndex, final String value) throws SQLException { + final LocalDate date = LocalDate.parse(value); + // LocalDate must be converted to java.sql.Date. Please see + // https://docs.aws.amazon.com/redshift/latest/mgmt/jdbc20-data-type-mapping.html + preparedStatement.setDate(parameterIndex, Date.valueOf(date)); + } + +} diff --git a/airbyte-integrations/connectors/source-snowflake/Dockerfile b/airbyte-integrations/connectors/source-snowflake/Dockerfile index 6f9f02f09885a..f34e7d8f03a36 100644 --- a/airbyte-integrations/connectors/source-snowflake/Dockerfile +++ b/airbyte-integrations/connectors/source-snowflake/Dockerfile @@ -16,5 +16,5 @@ ENV APPLICATION source-snowflake COPY --from=build /airbyte /airbyte -LABEL io.airbyte.version=0.1.28 +LABEL io.airbyte.version=0.1.29 LABEL io.airbyte.name=airbyte/source-snowflake diff --git a/airbyte-integrations/connectors/source-snowflake/src/main/java/io.airbyte.integrations.source.snowflake/SnowflakeSourceOperations.java b/airbyte-integrations/connectors/source-snowflake/src/main/java/io.airbyte.integrations.source.snowflake/SnowflakeSourceOperations.java index 9240c2c6c486b..42a81c829f780 100644 --- a/airbyte-integrations/connectors/source-snowflake/src/main/java/io.airbyte.integrations.source.snowflake/SnowflakeSourceOperations.java +++ b/airbyte-integrations/connectors/source-snowflake/src/main/java/io.airbyte.integrations.source.snowflake/SnowflakeSourceOperations.java @@ -4,6 +4,8 @@ package io.airbyte.integrations.source.snowflake; +import static io.airbyte.db.jdbc.DateTimeConverter.putJavaSQLDate; +import static io.airbyte.db.jdbc.DateTimeConverter.putJavaSQLTime; import static io.airbyte.db.jdbc.JdbcConstants.INTERNAL_COLUMN_NAME; import static io.airbyte.db.jdbc.JdbcConstants.INTERNAL_COLUMN_TYPE; import static io.airbyte.db.jdbc.JdbcConstants.INTERNAL_COLUMN_TYPE_NAME; @@ -23,7 +25,6 @@ import java.sql.SQLException; import java.sql.Timestamp; import java.time.LocalDate; -import java.time.LocalTime; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -126,16 +127,21 @@ protected void putTimestamp(final ObjectNode node, final String columnName, fina } @Override - protected void putDate(final ObjectNode node, final String columnName, final ResultSet resultSet, final int index) throws SQLException { - final Date date = resultSet.getDate(index); - node.put(columnName, DateTimeConverter.convertToDate(date)); + protected void putDate(final ObjectNode node, + final String columnName, + final ResultSet resultSet, + final int index) + throws SQLException { + putJavaSQLDate(node, columnName, resultSet, index); } @Override - protected void putTime(final ObjectNode node, final String columnName, final ResultSet resultSet, final int index) throws SQLException { - // resultSet.getTime() will lose nanoseconds precision - final LocalTime localTime = resultSet.getTimestamp(index).toLocalDateTime().toLocalTime(); - node.put(columnName, DateTimeConverter.convertToTime(localTime)); + protected void putTime(final ObjectNode node, + final String columnName, + final ResultSet resultSet, + final int index) + throws SQLException { + putJavaSQLTime(node, columnName, resultSet, index); } } diff --git a/airbyte-integrations/connectors/source-tidb/Dockerfile b/airbyte-integrations/connectors/source-tidb/Dockerfile index 4f69933030920..dc04e3438d379 100755 --- a/airbyte-integrations/connectors/source-tidb/Dockerfile +++ b/airbyte-integrations/connectors/source-tidb/Dockerfile @@ -17,5 +17,5 @@ ENV APPLICATION source-tidb COPY --from=build /airbyte /airbyte # Airbyte's build system uses these labels to know what to name and tag the docker images produced by this Dockerfile. -LABEL io.airbyte.version=0.2.1 +LABEL io.airbyte.version=0.2.2 LABEL io.airbyte.name=airbyte/source-tidb diff --git a/docs/integrations/sources/alloydb.md b/docs/integrations/sources/alloydb.md index 8e1eabbbbfcc0..b9093eaa17406 100644 --- a/docs/integrations/sources/alloydb.md +++ b/docs/integrations/sources/alloydb.md @@ -327,6 +327,7 @@ According to Postgres [documentation](https://www.postgresql.org/docs/14/datatyp | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:-------------------------------------------------| +| 1.0.35 | 2022-12-14 | [20436](https://github.com/airbytehq/airbyte/pull/20346) | Consolidate date/time values mapping for JDBC sources | | 1.0.34 | 2022-12-13 | [20378](https://github.com/airbytehq/airbyte/pull/20378) | Improve descriptions | | 1.0.17 | 2022-10-31 | [18538](https://github.com/airbytehq/airbyte/pull/18538) | Encode database name | | 1.0.16 | 2022-10-25 | [18256](https://github.com/airbytehq/airbyte/pull/18256) | Disable allow and prefer ssl modes in CDC mode | diff --git a/docs/integrations/sources/clickhouse.md b/docs/integrations/sources/clickhouse.md index 07df7cb267baa..5ff8039ab9d6c 100644 --- a/docs/integrations/sources/clickhouse.md +++ b/docs/integrations/sources/clickhouse.md @@ -78,6 +78,7 @@ Using this feature requires additional configuration, when creating the source. | Version | Date | Pull Request | Subject | |:--------| :--- |:---------------------------------------------------------|:-----------------------------------------------------------------| +| 0.1.15 | 2022-12-14 | [20436](https://github.com/airbytehq/airbyte/pull/20346) | Consolidate date/time values mapping for JDBC sources | | 0.1.14 | 2022-09-27 | [17031](https://github.com/airbytehq/airbyte/pull/17031) | Added custom jdbc url parameters field | | 0.1.13 | 2022-09-01 | [16238](https://github.com/airbytehq/airbyte/pull/16238) | Emit state messages more frequently | | 0.1.12 | 2022-08-18 | [14356](https://github.com/airbytehq/airbyte/pull/14356) | DB Sources: only show a table can sync incrementally if at least one column can be used as a cursor field | @@ -96,6 +97,7 @@ Using this feature requires additional configuration, when creating the source. | Version | Date | Pull Request | Subject | |:---| :--- |:---------------------------------------------------------|:---------------------------------------------------------------------------| +| 0.1.15 | 2022-12-14 | [20436](https://github.com/airbytehq/airbyte/pull/20346) | Consolidate date/time values mapping for JDBC sources | | | 2022-10-13 | [15535](https://github.com/airbytehq/airbyte/pull/16238) | Update incremental query to avoid data missing when new data is inserted at the same time as a sync starts under non-CDC incremental mode | | 0.1.14 | 2022-09-27 | [17031](https://github.com/airbytehq/airbyte/pull/17031) | Added custom jdbc url parameters field | | 0.1.13 | 2022-09-01 | [16238](https://github.com/airbytehq/airbyte/pull/16238) | Emit state messages more frequently | diff --git a/docs/integrations/sources/cockroachdb.md b/docs/integrations/sources/cockroachdb.md index b6d6f5cc0c716..025dc06c60be5 100644 --- a/docs/integrations/sources/cockroachdb.md +++ b/docs/integrations/sources/cockroachdb.md @@ -95,6 +95,7 @@ Your database user should now be ready for use with Airbyte. | Version | Date | Pull Request | Subject | |:--------|:-----------| :--- | :--- | +| 0.1.19 | 2022-12-14 | [20436](https://github.com/airbytehq/airbyte/pull/20346) | Consolidate date/time values mapping for JDBC sources | | | 2022-10-13 | [15535](https://github.com/airbytehq/airbyte/pull/16238) | Update incremental query to avoid data missing when new data is inserted at the same time as a sync starts under non-CDC incremental mode | | 0.1.18 | 2022-09-01 | [16394](https://github.com/airbytehq/airbyte/pull/16394) | Added custom jdbc properties field | | 0.1.17 | 2022-09-01 | [16238](https://github.com/airbytehq/airbyte/pull/16238) | Emit state messages more frequently | diff --git a/docs/integrations/sources/db2.md b/docs/integrations/sources/db2.md index 54207cef61e7c..e38fbc5ec8650 100644 --- a/docs/integrations/sources/db2.md +++ b/docs/integrations/sources/db2.md @@ -60,6 +60,7 @@ You can also enter your own password for the keystore, but if you don't, the pas | Version | Date | Pull Request | Subject | | :--- | :--- | :--- | :--- | +| 0.1.17 | 2022-12-14 | [20436](https://github.com/airbytehq/airbyte/pull/20346) | Consolidate date/time values mapping for JDBC sources | | | 2022-10-13 | [15535](https://github.com/airbytehq/airbyte/pull/16238) | Update incremental query to avoid data missing when new data is inserted at the same time as a sync starts under non-CDC incremental mode | | 0.1.16 | 2022-09-06 | [16354](https://github.com/airbytehq/airbyte/pull/16354) | Add custom JDBC params | | 0.1.15 | 2022-09-01 | [16238](https://github.com/airbytehq/airbyte/pull/16238) | Emit state messages more frequently | diff --git a/docs/integrations/sources/mssql.md b/docs/integrations/sources/mssql.md index de179e043f8e6..44a86a62e01c9 100644 --- a/docs/integrations/sources/mssql.md +++ b/docs/integrations/sources/mssql.md @@ -341,6 +341,7 @@ WHERE actor_definition_id ='b5ea17b1-f170-46dc-bc31-cc744ca984c1' AND (configura | Version | Date | Pull Request | Subject | |:--------|:-----------|:------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------| +| 0.4.27 | 2022-12-14 | [20436](https://github.com/airbytehq/airbyte/pull/20346) | Consolidate date/time values mapping for JDBC sources | | 0.4.26 | 2022-12-12 | [18959](https://github.com/airbytehq/airbyte/pull/18959) | CDC : Don't timeout if snapshot is not complete. | | 0.4.25 | 2022-11-04 | [18732](https://github.com/airbytehq/airbyte/pull/18732) | Upgrade debezium version to 1.9.6 | | 0.4.24 | 2022-10-25 | [18383](https://github.com/airbytehq/airbyte/pull/18383) | Better SSH error handling + messages | diff --git a/docs/integrations/sources/mysql.md b/docs/integrations/sources/mysql.md index dbedaf08507a0..77318d284bde8 100644 --- a/docs/integrations/sources/mysql.md +++ b/docs/integrations/sources/mysql.md @@ -256,6 +256,7 @@ WHERE actor_definition_id ='435bb9a5-7887-4809-aa58-28c27df0d7ad' AND (configura | Version | Date | Pull Request | Subject | |:--------|:-----------|:-----------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 1.0.19 | 2022-12-14 | [20436](https://github.com/airbytehq/airbyte/pull/20346) | Consolidate date/time values mapping for JDBC sources | | 1.0.18 | 2022-12-14 | [20378](https://github.com/airbytehq/airbyte/pull/20378) | Improve descriptions | | 1.0.17 | 2022-12-13 | [20289](https://github.com/airbytehq/airbyte/pull/20289) | Mark unknown column exception as config error | | 1.0.16 | 2022-12-12 | [18959](https://github.com/airbytehq/airbyte/pull/18959) | CDC : Don't timeout if snapshot is not complete. | diff --git a/docs/integrations/sources/oracle.md b/docs/integrations/sources/oracle.md index d7935841a078d..32d7e329af62f 100644 --- a/docs/integrations/sources/oracle.md +++ b/docs/integrations/sources/oracle.md @@ -132,6 +132,7 @@ Airbyte has the ability to connect to the Oracle source with 3 network connectiv | Version | Date | Pull Request | Subject | |:--------|:-----------| :--- |:------------------------------------------------| +| 0.3.22 | 2022-12-14 | [20436](https://github.com/airbytehq/airbyte/pull/20346) | Consolidate date/time values mapping for JDBC sources | | | 2022-10-13 | [15535](https://github.com/airbytehq/airbyte/pull/16238) | Update incremental query to avoid data missing when new data is inserted at the same time as a sync starts under non-CDC incremental mode | | 0.3.21 | 2022-09-01 | [16238](https://github.com/airbytehq/airbyte/pull/16238) | Emit state messages more frequently | | 0.3.20 | 2022-08-18 | [14356](https://github.com/airbytehq/airbyte/pull/14356) | DB Sources: only show a table can sync incrementally if at least one column can be used as a cursor field | diff --git a/docs/integrations/sources/postgres.md b/docs/integrations/sources/postgres.md index fb08e2c5bb24a..4b3ed0421585d 100644 --- a/docs/integrations/sources/postgres.md +++ b/docs/integrations/sources/postgres.md @@ -411,6 +411,7 @@ The root causes is that the WALs needed for the incremental sync has been remove | Version | Date | Pull Request | Subject | |:--------|:-----------|:----------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 1.0.38 | 2022-01-17 | [20436](https://github.com/airbytehq/airbyte/pull/20346) | Consolidate date/time values mapping for JDBC sources | | 1.0.37 | 2023-01-17 | [20783](https://github.com/airbytehq/airbyte/pull/20783) | Emit estimate trace messages for non-CDC mode. | | 1.0.36 | 2023-01-11 | [21003](https://github.com/airbytehq/airbyte/pull/21003) | Handle null values for array data types in CDC mode gracefully. | | 1.0.35 | 2023-01-04 | [20469](https://github.com/airbytehq/airbyte/pull/20469) | Introduce feature to make LSN commit behaviour configurable. | diff --git a/docs/integrations/sources/redshift.md b/docs/integrations/sources/redshift.md index 3b0ba43ac40f3..8c7ca149e69d3 100644 --- a/docs/integrations/sources/redshift.md +++ b/docs/integrations/sources/redshift.md @@ -54,6 +54,7 @@ All Redshift connections are encrypted using SSL | Version | Date | Pull Request | Subject | |:--------|:-----------| :----- |:----------------------------------------------------------------------------------------------------------| +| 0.3.16 | 2022-12-14 | [20436](https://github.com/airbytehq/airbyte/pull/20346) | Consolidate date/time values mapping for JDBC sources | | 0.3.15 | 2022-10-13 | [15535](https://github.com/airbytehq/airbyte/pull/16238) | Update incremental query to avoid data missing when new data is inserted at the same time as a sync starts under non-CDC incremental mode | | 0.3.14 | 2022-09-01 | [16258](https://github.com/airbytehq/airbyte/pull/16258) | Emit state messages more frequently | | 0.3.13 | 2022-05-25 | | Added JDBC URL params | diff --git a/docs/integrations/sources/snowflake.md b/docs/integrations/sources/snowflake.md index fcbdc162a6f99..bfbecf6f4dbc7 100644 --- a/docs/integrations/sources/snowflake.md +++ b/docs/integrations/sources/snowflake.md @@ -122,6 +122,7 @@ To read more please check official [Snowflake documentation](https://docs.snowfl | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------| +| 0.1.29 | 2022-12-14 | [20436](https://github.com/airbytehq/airbyte/pull/20346) | Consolidate date/time values mapping for JDBC sources | | 0.1.28 | 2023-01-06 | [20465](https://github.com/airbytehq/airbyte/pull/20465) | Improve the schema config field to only discover tables from the specified scehma and make the field optional | | 0.1.27 | 2022-12-14 | [20407](https://github.com/airbytehq/airbyte/pull/20407) | Fix an issue with integer values converted to floats during replication | | 0.1.26 | 2022-11-10 | [19314](https://github.com/airbytehq/airbyte/pull/19314) | Set application id in JDBC URL params based on OSS/Cloud environment | diff --git a/docs/integrations/sources/tidb.md b/docs/integrations/sources/tidb.md index e026f886c618b..c9766933036a2 100644 --- a/docs/integrations/sources/tidb.md +++ b/docs/integrations/sources/tidb.md @@ -128,6 +128,7 @@ Now that you have set up the TiDB source connector, check out the following TiDB | Version | Date | Pull Request | Subject | | :------ | :--- | :----------- | ------- | +| 0.2.2 | 2022-12-14 | [20436](https://github.com/airbytehq/airbyte/pull/20346) | Consolidate date/time values mapping for JDBC sources | | | 2022-10-13 | [15535](https://github.com/airbytehq/airbyte/pull/16238) | Update incremental query to avoid data missing when new data is inserted at the same time as a sync starts under non-CDC incremental mode | | 0.2.1 | 2022-09-01 | [16238](https://github.com/airbytehq/airbyte/pull/16238) | Emit state messages more frequently | | 0.2.0 | 2022-07-26 | [14362](https://github.com/airbytehq/airbyte/pull/14362) | Integral columns are now discovered as int64 fields. |