diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 4a92f4f7541b1..63930bf5ac3e6 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -6,20 +6,6 @@ # Protocol related items /docs/understanding-airbyte/airbyte-protocol.md @airbytehq/protocol-reviewers -# Airbyte Maintainers -airbyte-server/src/main/java/io/airbyte/server/handlers/WebBackendConnectionsHandler.java @airbytehq/airbyte-maintainers -airbyte-config/config-persistence/src/test/java/io/airbyte/config/persistence/BaseConfigDatabaseTest.java @airbytehq/airbyte-maintainers -airbyte-commons/src/main/ @airbytehq/airbyte-maintainers -airbyte-commons/src/main/java/io/airbyte/commons/json/JsonSchemas.java @airbytehq/airbyte-maintainers -airbyte-commons/src/main/java/io/airbyte/commons/json/JsonPaths.java @airbytehq/airbyte-maintainers -airbyte-commons/src/main/java/io/airbyte/commons/json/Jsons.java @airbytehq/airbyte-maintainers -airbyte-config/config-persistence/src/main/java/io/airbyte/config/persistence/split_secrets/ @airbytehq/airbyte-maintainers -airbyte-config/config-persistence/src/main/java/io/airbyte/config/persistence/SecretsRepositoryReader.java @airbytehq/airbyte-maintainers -airbyte-config/config-persistence/src/main/java/io/airbyte/config/persistence/SecretsRepositoryWriter.java @airbytehq/airbyte-maintainers -airbyte-config/config-persistence/src/main/java/io/airbyte/config/persistence/ConfigRepository.java @airbytehq/airbyte-maintainers -*build.gradle @airbytehq/airbyte-maintainers -airbyte-integrations/connectors/**/build.gradle # ignore gradle files for individual connectors. - # Normalization /airbyte-integrations/bases/base-normalization/ @airbytehq/destinations diff --git a/airbyte-commons-worker/src/main/java/io/airbyte/workers/process/DockerProcessFactory.java b/airbyte-commons-worker/src/main/java/io/airbyte/workers/process/DockerProcessFactory.java index f911a79e99ec9..0810bbc98d951 100644 --- a/airbyte-commons-worker/src/main/java/io/airbyte/workers/process/DockerProcessFactory.java +++ b/airbyte-commons-worker/src/main/java/io/airbyte/workers/process/DockerProcessFactory.java @@ -191,7 +191,7 @@ public Process create(final String jobType, static List localDebuggingOptions(final String containerName) { final boolean shouldAddDebuggerOptions = Optional.ofNullable(System.getenv("DEBUG_CONTAINER_IMAGE")).filter(StringUtils::isNotEmpty) - .map(ProcessFactory.extractShortImageName(containerName)::equals).orElse(false) + .map(imageName -> ProcessFactory.extractShortImageName(containerName).startsWith(imageName)).orElse(false) && Optional.ofNullable(System.getenv("DEBUG_CONTAINER_JAVA_OPTS")).isPresent(); if (shouldAddDebuggerOptions) { return List.of("-e", "JAVA_TOOL_OPTIONS=" + System.getenv("DEBUG_CONTAINER_JAVA_OPTS"), "-p5005:5005"); diff --git a/airbyte-config/init/src/main/resources/icons/exasol.svg b/airbyte-config/init/src/main/resources/icons/exasol.svg new file mode 100644 index 0000000000000..5ad3f6ff8c78c --- /dev/null +++ b/airbyte-config/init/src/main/resources/icons/exasol.svg @@ -0,0 +1,4 @@ + + + + diff --git a/airbyte-config/init/src/main/resources/seed/destination_definitions.yaml b/airbyte-config/init/src/main/resources/seed/destination_definitions.yaml index 31a2b285eb216..69ae87d156251 100644 --- a/airbyte-config/init/src/main/resources/seed/destination_definitions.yaml +++ b/airbyte-config/init/src/main/resources/seed/destination_definitions.yaml @@ -131,7 +131,7 @@ - name: Exasol destinationDefinitionId: bb6071d9-6f34-4766-bec2-d1d4ed81a653 dockerRepository: airbyte/destination-exasol - dockerImageTag: 0.1.0 + dockerImageTag: 0.1.1 documentationUrl: https://docs.airbyte.com/integrations/destinations/exasol releaseStage: alpha - name: Firebolt @@ -432,7 +432,7 @@ - name: Databend destinationDefinitionId: 302e4d8e-08d3-4098-acd4-ac67ca365b88 dockerRepository: airbyte/destination-databend - dockerImageTag: 0.1.0 + dockerImageTag: 0.1.1 icon: databend.svg documentationUrl: https://docs.airbyte.com/integrations/destinations/databend releaseStage: alpha diff --git a/airbyte-config/init/src/main/resources/seed/destination_specs.yaml b/airbyte-config/init/src/main/resources/seed/destination_specs.yaml index 1f41247602ddd..e2c793e556d38 100644 --- a/airbyte-config/init/src/main/resources/seed/destination_specs.yaml +++ b/airbyte-config/init/src/main/resources/seed/destination_specs.yaml @@ -2238,7 +2238,7 @@ - "overwrite" - "append" supportsNamespaces: true -- dockerImage: "airbyte/destination-exasol:0.1.0" +- dockerImage: "airbyte/destination-exasol:0.1.1" spec: documentationUrl: "https://docs.airbyte.com/integrations/destinations/exasol" connectionSpecification: @@ -7254,7 +7254,7 @@ supported_destination_sync_modes: - "overwrite" - "append" -- dockerImage: "airbyte/destination-databend:0.1.0" +- dockerImage: "airbyte/destination-databend:0.1.1" spec: documentationUrl: "https://docs.airbyte.com/integrations/destinations/databend" connectionSpecification: @@ -7272,14 +7272,6 @@ description: "Hostname of the database." type: "string" order: 0 - protocol: - title: "Protocol" - description: "Protocol of the host." - type: "string" - examples: - - "https" - default: "https" - order: 1 port: title: "Port" description: "Port of the database." 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 9f16a51edaf1f..35e40f73dc544 100644 --- a/airbyte-config/init/src/main/resources/seed/source_definitions.yaml +++ b/airbyte-config/init/src/main/resources/seed/source_definitions.yaml @@ -1385,7 +1385,7 @@ - name: Postgres sourceDefinitionId: decd338e-5647-4c0b-adf4-da0e75f5a750 dockerRepository: airbyte/source-postgres - dockerImageTag: 1.0.45 + dockerImageTag: 1.0.46 documentationUrl: https://docs.airbyte.com/integrations/sources/postgres icon: postgresql.svg sourceType: database @@ -1469,7 +1469,7 @@ - name: Recharge sourceDefinitionId: 45d2e135-2ede-49e1-939f-3e3ec357a65e dockerRepository: airbyte/source-recharge - dockerImageTag: 0.2.5 + dockerImageTag: 0.2.6 documentationUrl: https://docs.airbyte.com/integrations/sources/recharge icon: recharge.svg sourceType: api @@ -1649,7 +1649,7 @@ - name: Slack sourceDefinitionId: c2281cee-86f9-4a86-bb48-d23286b4c7bd dockerRepository: airbyte/source-slack - dockerImageTag: 0.1.22 + dockerImageTag: 0.1.23 documentationUrl: https://docs.airbyte.com/integrations/sources/slack icon: slack.svg sourceType: api @@ -1693,7 +1693,7 @@ - name: Snowflake sourceDefinitionId: e2d65910-8c8b-40a1-ae7d-ee2416b2bfa2 dockerRepository: airbyte/source-snowflake - dockerImageTag: 0.1.29 + dockerImageTag: 0.1.30 documentationUrl: https://docs.airbyte.com/integrations/sources/snowflake icon: snowflake.svg sourceType: database @@ -1800,7 +1800,7 @@ - name: TikTok Marketing sourceDefinitionId: 4bfac00d-ce15-44ff-95b9-9e3c3e8fbd35 dockerRepository: airbyte/source-tiktok-marketing - dockerImageTag: 2.0.1 + dockerImageTag: 2.0.2 documentationUrl: https://docs.airbyte.com/integrations/sources/tiktok-marketing icon: tiktok.svg sourceType: api 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 38d49010f4605..00164009adf69 100644 --- a/airbyte-config/init/src/main/resources/seed/source_specs.yaml +++ b/airbyte-config/init/src/main/resources/seed/source_specs.yaml @@ -11617,7 +11617,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-postgres:1.0.45" +- dockerImage: "airbyte/source-postgres:1.0.46" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/postgres" connectionSpecification: @@ -12338,7 +12338,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-recharge:0.2.5" +- dockerImage: "airbyte/source-recharge:0.2.6" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/recharge" connectionSpecification: @@ -13634,7 +13634,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-slack:0.1.22" +- dockerImage: "airbyte/source-slack:0.1.23" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/slack" connectionSpecification: @@ -13950,7 +13950,7 @@ - - "client_secret" oauthFlowOutputParameters: - - "refresh_token" -- dockerImage: "airbyte/source-snowflake:0.1.29" +- dockerImage: "airbyte/source-snowflake:0.1.30" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/snowflake" connectionSpecification: @@ -14959,7 +14959,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-tiktok-marketing:2.0.1" +- dockerImage: "airbyte/source-tiktok-marketing:2.0.2" spec: documentationUrl: "https://docs.airbyte.com/integrations/sources/tiktok-marketing" changelogUrl: "https://docs.airbyte.com/integrations/sources/tiktok-marketing" diff --git a/airbyte-config/specs/build.gradle b/airbyte-config/specs/build.gradle index 25d248202c776..f9e1bb410990b 100644 --- a/airbyte-config/specs/build.gradle +++ b/airbyte-config/specs/build.gradle @@ -21,16 +21,6 @@ task generateSeedConnectorSpecs(type: JavaExec, dependsOn: compileJava) { args new File(project(":airbyte-config:init").projectDir, '/src/main/resources/seed') } -task downloadCombinedConnectorCatalog(type: JavaExec, dependsOn: compileJava) { - classpath = sourceSets.main.runtimeClasspath - mainClass = 'io.airbyte.config.specs.CombinedConnectorCatalogDownloader' - args project(":airbyte-config:init").projectDir -} - -project(":airbyte-config:init").tasks.processResources.dependsOn(downloadCombinedConnectorCatalog) -project(":airbyte-config:init").tasks.processTestResources.dependsOn(downloadCombinedConnectorCatalog) -project(":airbyte-config:init").tasks.test.dependsOn(downloadCombinedConnectorCatalog) - task generateConnectorSpecsMask(type: JavaExec, dependsOn: generateSeedConnectorSpecs) { classpath = sourceSets.main.runtimeClasspath @@ -56,3 +46,5 @@ task generateOssConnectorCatalog(type: JavaExec, dependsOn: generateSeedConnecto } Task publishArtifactsTask = getPublishArtifactsTask("$rootProject.ext.version", project) + +project(":airbyte-config:init").tasks.processResources.dependsOn(generateOssConnectorCatalog) diff --git a/airbyte-config/specs/src/main/java/io/airbyte/config/specs/CombinedConnectorCatalogDownloader.java b/airbyte-config/specs/src/main/java/io/airbyte/config/specs/CombinedConnectorCatalogDownloader.java deleted file mode 100644 index fbb8df28ddbeb..0000000000000 --- a/airbyte-config/specs/src/main/java/io/airbyte/config/specs/CombinedConnectorCatalogDownloader.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2023 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.config.specs; - -import io.airbyte.config.CatalogDefinitionsConfig; -import java.net.URL; -import java.nio.file.Path; -import org.apache.commons.io.FileUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class CombinedConnectorCatalogDownloader { - - private static final Logger LOGGER = LoggerFactory.getLogger(CombinedConnectorCatalogDownloader.class); - - public static Path getResourcePath(final String projectPath, final String relativePath) { - return Path.of(projectPath, "src/main/resources/", relativePath); - } - - public static void main(final String[] args) throws Exception { - final String projectPath = args[0]; - final String relativeWritePath = CatalogDefinitionsConfig.getLocalCatalogWritePath(); - final Path writePath = getResourcePath(projectPath, relativeWritePath); - final String catalogUrl = CatalogDefinitionsConfig.getRemoteOssCatalogUrl(); - LOGGER.info("Downloading OSS catalog from {} to {}", catalogUrl, writePath); - - final int timeout = 10000; - FileUtils.copyURLToFile(new URL(catalogUrl), writePath.toFile(), timeout, timeout); - } - -} 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 200933f0c8b7b..079b69ea81bf4 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 @@ -187,7 +187,7 @@ protected void setDate(final PreparedStatement preparedStatement, final int para } } - private void setDateAsTimestamp(PreparedStatement preparedStatement, int parameterIndex, String value) throws SQLException { + private void setDateAsTimestamp(final PreparedStatement preparedStatement, final int parameterIndex, final String value) throws SQLException { try { final Timestamp from = Timestamp.from(DataTypeUtils.getDateFormat().parse(value).toInstant()); preparedStatement.setDate(parameterIndex, new Date(from.getTime())); @@ -217,7 +217,7 @@ protected void setInteger(final PreparedStatement preparedStatement, final int p } protected void setBigInteger(final PreparedStatement preparedStatement, final int parameterIndex, final String value) throws SQLException { - preparedStatement.setLong(parameterIndex, Long.parseLong(value)); + preparedStatement.setLong(parameterIndex, new BigDecimal(value).toBigInteger().longValue()); } protected void setDouble(final PreparedStatement preparedStatement, final int parameterIndex, final String value) throws SQLException { 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 b7bb900bfb7ba..d8f68e9389084 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 @@ -38,6 +38,8 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; import org.testcontainers.containers.PostgreSQLContainer; import org.testcontainers.utility.MountableFile; @@ -398,4 +400,27 @@ private ObjectNode expectedValues() { return expected; } + @ParameterizedTest + @CsvSource({"'3E+1', 30", + "'30', 30", + "'999000000000', 999000000000", + "'999E+9', 999000000000", + "'1.79E+3', 1790"}) + void testSetStatementSpecialValues(final String colValue, final long value) throws SQLException { + try (final Connection connection = dataSource.getConnection()) { + createTableWithAllTypes(connection); + + final PreparedStatement ps = connection.prepareStatement("INSERT INTO data(bigint) VALUES(?);"); + + // insert the bit here to stay consistent even though setStatementField does not support it yet. + sourceOperations.setCursorField(ps, 1, JDBCType.BIGINT, colValue); + ps.execute(); + + assertExpectedOutputValues(connection, + ((ObjectNode) Jsons.jsonNode(Collections.emptyMap())) + .put("bigint", (long) value)); + assertExpectedOutputTypes(connection); + } + } + } diff --git a/airbyte-integrations/bases/base-java/src/main/resources/AirbyteLogMessageTemplate.json b/airbyte-integrations/bases/base-java/src/main/resources/AirbyteLogMessageTemplate.json index 468c68bd7d930..ea1e0f9f7b402 100644 --- a/airbyte-integrations/bases/base-java/src/main/resources/AirbyteLogMessageTemplate.json +++ b/airbyte-integrations/bases/base-java/src/main/resources/AirbyteLogMessageTemplate.json @@ -6,7 +6,8 @@ "field": "name" }, "message": { - "$resolver": "message", + "$resolver": "pattern", + "pattern": "%level %C{1.}(%M):%L %m", "stringified": true }, "stack_trace": { diff --git a/airbyte-integrations/bases/base-java/src/test/java/io/airbyte/integrations/base/AirbyteLogMessageTemplateTest.java b/airbyte-integrations/bases/base-java/src/test/java/io/airbyte/integrations/base/AirbyteLogMessageTemplateTest.java new file mode 100644 index 0000000000000..6862221f3d8ed --- /dev/null +++ b/airbyte-integrations/bases/base-java/src/test/java/io/airbyte/integrations/base/AirbyteLogMessageTemplateTest.java @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2023 Airbyte, Inc., all rights reserved. + */ + +package io.airbyte.integrations.base; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import com.fasterxml.jackson.databind.JsonNode; +import io.airbyte.commons.json.Jsons; +import io.airbyte.protocol.models.AirbyteLogMessage; +import io.airbyte.protocol.models.AirbyteMessage; +import io.airbyte.protocol.models.AirbyteMessage.Type; +import java.io.ByteArrayOutputStream; +import java.nio.charset.StandardCharsets; +import java.util.Optional; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.appender.OutputStreamAppender; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.platform.commons.util.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class AirbyteLogMessageTemplateTest { + + private static final ByteArrayOutputStream outputContent = new ByteArrayOutputStream(); + private static final Logger LOGGER = LoggerFactory.getLogger(AirbyteLogMessageTemplateTest.class); + public static final String OUTPUT_STREAM_APPENDER = "OutputStreamAppender"; + public static final String CONSOLE_JSON_APPENDER = "ConsoleJSONAppender"; + private static OutputStreamAppender outputStreamAppender; + private static LoggerConfig rootLoggerConfig; + + @BeforeAll + static void init() { + // We are creating a log appender with the same output pattern + // as the console json appender defined in this project's log4j2.xml file. + // We then attach this log appender with the LOGGER instance so that we can validate the logs + // produced by code and assert that it matches the expected format. + final LoggerContext loggerContext = (LoggerContext) LogManager.getContext(false); + final Configuration configuration = loggerContext.getConfiguration(); + rootLoggerConfig = configuration.getLoggerConfig(""); + + outputStreamAppender = OutputStreamAppender.createAppender( + rootLoggerConfig.getAppenders().get(CONSOLE_JSON_APPENDER).getLayout(), + null, outputContent, OUTPUT_STREAM_APPENDER, false, true); + outputStreamAppender.start(); + + rootLoggerConfig.addAppender(outputStreamAppender, Level.ALL, null); + } + + @BeforeEach + void setup() { + outputContent.reset(); + } + + @AfterAll + static void cleanUp() { + outputStreamAppender.stop(); + rootLoggerConfig.removeAppender(OUTPUT_STREAM_APPENDER); + } + + @Test + public void testAirbyteLogMessageFormat() throws java.io.IOException { + LOGGER.info("hello"); + + outputContent.flush(); + final String logMessage = outputContent.toString(StandardCharsets.UTF_8); + final AirbyteMessage airbyteMessage = validateLogIsAirbyteMessage(logMessage); + final AirbyteLogMessage airbyteLogMessage = validateAirbyteMessageIsLog(airbyteMessage); + + final String connectorLogMessage = airbyteLogMessage.getMessage(); + // validate that the message inside AirbyteLogMessage matches the pattern. + // pattern to check for is: LOG_LEVEL className(methodName):LineNumber logMessage + final String connectorLogMessageRegex = + "^INFO [\\w+.]*.AirbyteLogMessageTemplateTest\\(testAirbyteLogMessageFormat\\):\\d+ hello$"; + final Pattern pattern = Pattern.compile(connectorLogMessageRegex); + + final Matcher matcher = pattern.matcher(connectorLogMessage); + assertTrue(matcher.matches(), connectorLogMessage); + } + + private AirbyteMessage validateLogIsAirbyteMessage(final String logMessage) { + final Optional jsonLine = Jsons.tryDeserialize(logMessage); + assertFalse(jsonLine.isEmpty()); + + final Optional m = Jsons.tryObject(jsonLine.get(), AirbyteMessage.class); + assertFalse(m.isEmpty()); + return m.get(); + } + + private AirbyteLogMessage validateAirbyteMessageIsLog(final AirbyteMessage airbyteMessage) { + assertEquals(Type.LOG, airbyteMessage.getType()); + assertNotNull(airbyteMessage.getLog()); + assertFalse(StringUtils.isBlank(airbyteMessage.getLog().getMessage())); + return airbyteMessage.getLog(); + } + +} diff --git a/airbyte-integrations/connectors/destination-exasol/Dockerfile b/airbyte-integrations/connectors/destination-exasol/Dockerfile index 8cdf6c745fec6..76534d1f51cd3 100644 --- a/airbyte-integrations/connectors/destination-exasol/Dockerfile +++ b/airbyte-integrations/connectors/destination-exasol/Dockerfile @@ -14,5 +14,5 @@ ENV APPLICATION destination-exasol COPY --from=build /airbyte /airbyte -LABEL io.airbyte.version=0.1.0 +LABEL io.airbyte.version=0.1.1 LABEL io.airbyte.name=airbyte/destination-exasol diff --git a/airbyte-integrations/connectors/destination-exasol/build.gradle b/airbyte-integrations/connectors/destination-exasol/build.gradle index 167c969603d22..369d38031accd 100644 --- a/airbyte-integrations/connectors/destination-exasol/build.gradle +++ b/airbyte-integrations/connectors/destination-exasol/build.gradle @@ -10,7 +10,6 @@ application { dependencies { implementation project(':airbyte-db:db-lib') - implementation project(':airbyte-config:config-models') implementation project(':airbyte-integrations:bases:base-java') implementation libs.airbyte.protocol implementation files(project(':airbyte-integrations:bases:base-java').airbyteDocker.outputs) diff --git a/airbyte-integrations/connectors/source-airtable/build.gradle b/airbyte-integrations/connectors/source-airtable/build.gradle index 8f2138e89525d..62d247a859f27 100644 --- a/airbyte-integrations/connectors/source-airtable/build.gradle +++ b/airbyte-integrations/connectors/source-airtable/build.gradle @@ -7,8 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_airtable' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} - diff --git a/airbyte-integrations/connectors/source-amazon-ads/build.gradle b/airbyte-integrations/connectors/source-amazon-ads/build.gradle index 71f751d12d85e..bc26868e475a4 100644 --- a/airbyte-integrations/connectors/source-amazon-ads/build.gradle +++ b/airbyte-integrations/connectors/source-amazon-ads/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_amazon_ads' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-amazon-seller-partner/build.gradle b/airbyte-integrations/connectors/source-amazon-seller-partner/build.gradle index 864de132f75d8..3bbfc0b4a983e 100644 --- a/airbyte-integrations/connectors/source-amazon-seller-partner/build.gradle +++ b/airbyte-integrations/connectors/source-amazon-seller-partner/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_amazon_seller_partner' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-amazon-sqs/build.gradle b/airbyte-integrations/connectors/source-amazon-sqs/build.gradle index 7f669f5bdb2ad..bf5c06f39a833 100644 --- a/airbyte-integrations/connectors/source-amazon-sqs/build.gradle +++ b/airbyte-integrations/connectors/source-amazon-sqs/build.gradle @@ -7,8 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_amazon_sqs_singer' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} - diff --git a/airbyte-integrations/connectors/source-amplitude/build.gradle b/airbyte-integrations/connectors/source-amplitude/build.gradle index 7d0c55bff5ac4..128e209c5984f 100644 --- a/airbyte-integrations/connectors/source-amplitude/build.gradle +++ b/airbyte-integrations/connectors/source-amplitude/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_amplitude' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-appsflyer/build.gradle b/airbyte-integrations/connectors/source-appsflyer/build.gradle index db6f8147c4fdb..a7ec6d65d5a40 100644 --- a/airbyte-integrations/connectors/source-appsflyer/build.gradle +++ b/airbyte-integrations/connectors/source-appsflyer/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_appsflyer' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-asana/build.gradle b/airbyte-integrations/connectors/source-asana/build.gradle index 36b2961201c37..b55683a5ba9cf 100644 --- a/airbyte-integrations/connectors/source-asana/build.gradle +++ b/airbyte-integrations/connectors/source-asana/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_asana' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-azure-table/build.gradle b/airbyte-integrations/connectors/source-azure-table/build.gradle index 667fd35c2cbe0..1f0b4a464a924 100644 --- a/airbyte-integrations/connectors/source-azure-table/build.gradle +++ b/airbyte-integrations/connectors/source-azure-table/build.gradle @@ -7,8 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_azure_table_singer' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} - diff --git a/airbyte-integrations/connectors/source-braintree/build.gradle b/airbyte-integrations/connectors/source-braintree/build.gradle index 7be79b639fc09..f61a6f058b5a2 100644 --- a/airbyte-integrations/connectors/source-braintree/build.gradle +++ b/airbyte-integrations/connectors/source-braintree/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_braintree_singer' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-cart/build.gradle b/airbyte-integrations/connectors/source-cart/build.gradle index 5dcb42dae5464..48e0a1cfa4082 100644 --- a/airbyte-integrations/connectors/source-cart/build.gradle +++ b/airbyte-integrations/connectors/source-cart/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_cart' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-chargebee/build.gradle b/airbyte-integrations/connectors/source-chargebee/build.gradle index 98b3907fcbfd5..cb9358f89f6fa 100644 --- a/airbyte-integrations/connectors/source-chargebee/build.gradle +++ b/airbyte-integrations/connectors/source-chargebee/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source-chargebee' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-commercetools/build.gradle b/airbyte-integrations/connectors/source-commercetools/build.gradle index 26d7685a6ece3..8b7d69253918f 100644 --- a/airbyte-integrations/connectors/source-commercetools/build.gradle +++ b/airbyte-integrations/connectors/source-commercetools/build.gradle @@ -7,8 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_commercetools' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} - diff --git a/airbyte-integrations/connectors/source-confluence/build.gradle b/airbyte-integrations/connectors/source-confluence/build.gradle index ba7e50d0b18d4..7e0a2354b8384 100644 --- a/airbyte-integrations/connectors/source-confluence/build.gradle +++ b/airbyte-integrations/connectors/source-confluence/build.gradle @@ -7,8 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_confluence' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} - diff --git a/airbyte-integrations/connectors/source-datadog/build.gradle b/airbyte-integrations/connectors/source-datadog/build.gradle index 72c6317b29574..e776cf72d784e 100644 --- a/airbyte-integrations/connectors/source-datadog/build.gradle +++ b/airbyte-integrations/connectors/source-datadog/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_datadog' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-delighted/build.gradle b/airbyte-integrations/connectors/source-delighted/build.gradle index 335cbfdfbba6d..90911256fb30f 100644 --- a/airbyte-integrations/connectors/source-delighted/build.gradle +++ b/airbyte-integrations/connectors/source-delighted/build.gradle @@ -7,8 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_delighted' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} - diff --git a/airbyte-integrations/connectors/source-drift/build.gradle b/airbyte-integrations/connectors/source-drift/build.gradle index 30a46b816f1d0..af5fa27a38bb1 100644 --- a/airbyte-integrations/connectors/source-drift/build.gradle +++ b/airbyte-integrations/connectors/source-drift/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_drift' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-facebook-marketing/build.gradle b/airbyte-integrations/connectors/source-facebook-marketing/build.gradle index 8820d9a465adb..1587459504eab 100644 --- a/airbyte-integrations/connectors/source-facebook-marketing/build.gradle +++ b/airbyte-integrations/connectors/source-facebook-marketing/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_facebook_marketing' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-freshcaller/build.gradle b/airbyte-integrations/connectors/source-freshcaller/build.gradle index 58d72aa403fbe..8d7cb806a436f 100644 --- a/airbyte-integrations/connectors/source-freshcaller/build.gradle +++ b/airbyte-integrations/connectors/source-freshcaller/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_freshcaller' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-freshsales/build.gradle b/airbyte-integrations/connectors/source-freshsales/build.gradle index 73cfb3a8122d1..63f3c0b66a702 100644 --- a/airbyte-integrations/connectors/source-freshsales/build.gradle +++ b/airbyte-integrations/connectors/source-freshsales/build.gradle @@ -7,8 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_freshsales' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} - diff --git a/airbyte-integrations/connectors/source-freshservice/build.gradle b/airbyte-integrations/connectors/source-freshservice/build.gradle index 41e9241eca760..6231484923117 100644 --- a/airbyte-integrations/connectors/source-freshservice/build.gradle +++ b/airbyte-integrations/connectors/source-freshservice/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_freshservice' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-github/build.gradle b/airbyte-integrations/connectors/source-github/build.gradle index 7cd561f6d61c0..dc3c0b0ab5d14 100644 --- a/airbyte-integrations/connectors/source-github/build.gradle +++ b/airbyte-integrations/connectors/source-github/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_github' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-gitlab/build.gradle b/airbyte-integrations/connectors/source-gitlab/build.gradle index 5c2166049efc2..91ccc64ce7cd9 100644 --- a/airbyte-integrations/connectors/source-gitlab/build.gradle +++ b/airbyte-integrations/connectors/source-gitlab/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_gitlab' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-google-ads/build.gradle b/airbyte-integrations/connectors/source-google-ads/build.gradle index 4ef0c45bc5bc8..d0deb6f1ae4a8 100644 --- a/airbyte-integrations/connectors/source-google-ads/build.gradle +++ b/airbyte-integrations/connectors/source-google-ads/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_google_ads' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-google-search-console/build.gradle b/airbyte-integrations/connectors/source-google-search-console/build.gradle index 22ba2886c8a3d..569a0ebd89b6f 100755 --- a/airbyte-integrations/connectors/source-google-search-console/build.gradle +++ b/airbyte-integrations/connectors/source-google-search-console/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_google_search_console' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-greenhouse/build.gradle b/airbyte-integrations/connectors/source-greenhouse/build.gradle index 68993f7d0cd66..1e2273f6cdb73 100644 --- a/airbyte-integrations/connectors/source-greenhouse/build.gradle +++ b/airbyte-integrations/connectors/source-greenhouse/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_greenhouse' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-harvest/build.gradle b/airbyte-integrations/connectors/source-harvest/build.gradle index f1bbb57c9e427..22cf57235d7d4 100644 --- a/airbyte-integrations/connectors/source-harvest/build.gradle +++ b/airbyte-integrations/connectors/source-harvest/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_harvest' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-instagram/build.gradle b/airbyte-integrations/connectors/source-instagram/build.gradle index 7329ccd97b2b3..ef064e903c7ef 100644 --- a/airbyte-integrations/connectors/source-instagram/build.gradle +++ b/airbyte-integrations/connectors/source-instagram/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_instagram' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-iterable/build.gradle b/airbyte-integrations/connectors/source-iterable/build.gradle index a8cb71f1fec7b..0bff51ae3e639 100644 --- a/airbyte-integrations/connectors/source-iterable/build.gradle +++ b/airbyte-integrations/connectors/source-iterable/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_iterable' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-klaviyo/build.gradle b/airbyte-integrations/connectors/source-klaviyo/build.gradle index 1250d96192071..90472c426112f 100644 --- a/airbyte-integrations/connectors/source-klaviyo/build.gradle +++ b/airbyte-integrations/connectors/source-klaviyo/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_klaviyo' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-lemlist/build.gradle b/airbyte-integrations/connectors/source-lemlist/build.gradle index 3a7c00c439ffd..d94ebf6697469 100644 --- a/airbyte-integrations/connectors/source-lemlist/build.gradle +++ b/airbyte-integrations/connectors/source-lemlist/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_lemlist' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-lever-hiring/build.gradle b/airbyte-integrations/connectors/source-lever-hiring/build.gradle index a68149e4b0410..aa222dcc2fb09 100644 --- a/airbyte-integrations/connectors/source-lever-hiring/build.gradle +++ b/airbyte-integrations/connectors/source-lever-hiring/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_lever_hiring' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-linnworks/build.gradle b/airbyte-integrations/connectors/source-linnworks/build.gradle index 9f5578323821e..b667594d0e181 100644 --- a/airbyte-integrations/connectors/source-linnworks/build.gradle +++ b/airbyte-integrations/connectors/source-linnworks/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_linnworks' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-mailchimp/build.gradle b/airbyte-integrations/connectors/source-mailchimp/build.gradle index 072f1bfc5c692..c1f370e1873bf 100644 --- a/airbyte-integrations/connectors/source-mailchimp/build.gradle +++ b/airbyte-integrations/connectors/source-mailchimp/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_mailchimp' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-mailgun/build.gradle b/airbyte-integrations/connectors/source-mailgun/build.gradle index cbadbe9783b30..31173743e8e35 100644 --- a/airbyte-integrations/connectors/source-mailgun/build.gradle +++ b/airbyte-integrations/connectors/source-mailgun/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_mailgun' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-monday/build.gradle b/airbyte-integrations/connectors/source-monday/build.gradle index be2a0793944fb..afe5583358a04 100644 --- a/airbyte-integrations/connectors/source-monday/build.gradle +++ b/airbyte-integrations/connectors/source-monday/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_monday' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-notion/build.gradle b/airbyte-integrations/connectors/source-notion/build.gradle index af1958ba11566..04853a9ca945e 100644 --- a/airbyte-integrations/connectors/source-notion/build.gradle +++ b/airbyte-integrations/connectors/source-notion/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_notion' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-okta/build.gradle b/airbyte-integrations/connectors/source-okta/build.gradle index cf453332ab680..87b8c263acfa3 100644 --- a/airbyte-integrations/connectors/source-okta/build.gradle +++ b/airbyte-integrations/connectors/source-okta/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_okta' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-onesignal/build.gradle b/airbyte-integrations/connectors/source-onesignal/build.gradle index 1deb2d23c7ad5..abeb972de4e29 100644 --- a/airbyte-integrations/connectors/source-onesignal/build.gradle +++ b/airbyte-integrations/connectors/source-onesignal/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_onesignal' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-openweather/build.gradle b/airbyte-integrations/connectors/source-openweather/build.gradle index 6f6b06aa79e97..4baf3e5740dad 100644 --- a/airbyte-integrations/connectors/source-openweather/build.gradle +++ b/airbyte-integrations/connectors/source-openweather/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_openweather' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-outreach/build.gradle b/airbyte-integrations/connectors/source-outreach/build.gradle index 7033eeea3536c..575c2a569c3d3 100644 --- a/airbyte-integrations/connectors/source-outreach/build.gradle +++ b/airbyte-integrations/connectors/source-outreach/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_outreach' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-pardot/build.gradle b/airbyte-integrations/connectors/source-pardot/build.gradle index 0c5580055d38d..701b7f6d806e1 100644 --- a/airbyte-integrations/connectors/source-pardot/build.gradle +++ b/airbyte-integrations/connectors/source-pardot/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_pardot' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-paystack/build.gradle b/airbyte-integrations/connectors/source-paystack/build.gradle index 372409ca3a27c..481521f515be0 100644 --- a/airbyte-integrations/connectors/source-paystack/build.gradle +++ b/airbyte-integrations/connectors/source-paystack/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_paystack' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-pinterest/build.gradle b/airbyte-integrations/connectors/source-pinterest/build.gradle index 85707c1f009e2..313d7de77d91e 100644 --- a/airbyte-integrations/connectors/source-pinterest/build.gradle +++ b/airbyte-integrations/connectors/source-pinterest/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_pinterest' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-pipedrive/build.gradle b/airbyte-integrations/connectors/source-pipedrive/build.gradle index 11ef1bebda086..3622ebe82092d 100644 --- a/airbyte-integrations/connectors/source-pipedrive/build.gradle +++ b/airbyte-integrations/connectors/source-pipedrive/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_pipedrive' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-plaid/build.gradle b/airbyte-integrations/connectors/source-plaid/build.gradle index 40f8a01b7f87b..caa8ccf44904d 100644 --- a/airbyte-integrations/connectors/source-plaid/build.gradle +++ b/airbyte-integrations/connectors/source-plaid/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_plaid_singer' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-postgres-strict-encrypt/Dockerfile b/airbyte-integrations/connectors/source-postgres-strict-encrypt/Dockerfile index e7cd058907bbf..4176cabafa897 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.45 +LABEL io.airbyte.version=1.0.46 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 0e3f5772d059d..af171d570a17e 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.45 +LABEL io.airbyte.version=1.0.46 LABEL io.airbyte.name=airbyte/source-postgres diff --git a/airbyte-integrations/connectors/source-postgres/acceptance-test-config.yml b/airbyte-integrations/connectors/source-postgres/acceptance-test-config.yml index 770e2bfac8141..7488bb4785bb2 100644 --- a/airbyte-integrations/connectors/source-postgres/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-postgres/acceptance-test-config.yml @@ -1,7 +1,6 @@ # See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) # for more information about how to configure these tests connector_image: airbyte/source-postgres:dev -test_strictness_level: high custom_environment_variables: USE_STREAM_CAPABLE_STATE: true acceptance_tests: @@ -33,13 +32,13 @@ acceptance_tests: tests: - config_path: "secrets/config.json" - config_path: "secrets/config_cdc.json" - incremental: - tests: - - config_path: "secrets/config.json" - configured_catalog_path: "integration_tests/incremental_configured_catalog.json" - future_state: - bypass_reason: "A java.lang.NullPointerException is thrown when a state with an invalid cursor value is passed" - - config_path: "secrets/config_cdc.json" - configured_catalog_path: "integration_tests/incremental_configured_catalog.json" - future_state: - bypass_reason: "A java.lang.NullPointerException is thrown when a state with an invalid cursor value is passed" +# incremental: +# tests: +# - config_path: "secrets/config.json" +# configured_catalog_path: "integration_tests/incremental_configured_catalog.json" +# future_state: +# bypass_reason: "A java.lang.NullPointerException is thrown when a state with an invalid cursor value is passed" +# - config_path: "secrets/config_cdc.json" +# configured_catalog_path: "integration_tests/incremental_configured_catalog.json" +# future_state: +# bypass_reason: "A java.lang.NullPointerException is thrown when a state with an invalid cursor value is passed" diff --git a/airbyte-integrations/connectors/source-postgres/src/main/resources/spec.json b/airbyte-integrations/connectors/source-postgres/src/main/resources/spec.json index 2e05574695055..92db4771b9943 100644 --- a/airbyte-integrations/connectors/source-postgres/src/main/resources/spec.json +++ b/airbyte-integrations/connectors/source-postgres/src/main/resources/spec.json @@ -246,7 +246,7 @@ "plugin": { "type": "string", "title": "Plugin", - "description": "A logical decoding plugin installed on the PostgreSQL server. The `pgoutput` plugin is used by default. If the replication table contains a lot of big jsonb values it is recommended to use `wal2json` plugin. Read more about selecting replication plugins.", + "description": "A logical decoding plugin installed on the PostgreSQL server. The `pgoutput` plugin is used by default. The `wal2json` plugin is deprecated and will soon be removed so it's not recommended to use. Read more about selecting replication plugins.", "enum": ["pgoutput", "wal2json"], "default": "pgoutput", "order": 2 diff --git a/airbyte-integrations/connectors/source-postgres/src/test-integration/resources/expected_spec.json b/airbyte-integrations/connectors/source-postgres/src/test-integration/resources/expected_spec.json index cdaac313afbed..0743b4a4700b5 100644 --- a/airbyte-integrations/connectors/source-postgres/src/test-integration/resources/expected_spec.json +++ b/airbyte-integrations/connectors/source-postgres/src/test-integration/resources/expected_spec.json @@ -246,7 +246,7 @@ "plugin": { "type": "string", "title": "Plugin", - "description": "A logical decoding plugin installed on the PostgreSQL server. The `pgoutput` plugin is used by default. If the replication table contains a lot of big jsonb values it is recommended to use `wal2json` plugin. Read more about selecting replication plugins.", + "description": "A logical decoding plugin installed on the PostgreSQL server. The `pgoutput` plugin is used by default. The `wal2json` plugin is deprecated and will soon be removed so it's not recommended to use. Read more about selecting replication plugins.", "enum": ["pgoutput", "wal2json"], "default": "pgoutput", "order": 2 diff --git a/airbyte-integrations/connectors/source-postgres/src/test-integration/resources/expected_strict_encrypt_spec.json b/airbyte-integrations/connectors/source-postgres/src/test-integration/resources/expected_strict_encrypt_spec.json index c876c1f18dea3..d8d4704cedfc1 100644 --- a/airbyte-integrations/connectors/source-postgres/src/test-integration/resources/expected_strict_encrypt_spec.json +++ b/airbyte-integrations/connectors/source-postgres/src/test-integration/resources/expected_strict_encrypt_spec.json @@ -226,7 +226,7 @@ "plugin": { "type": "string", "title": "Plugin", - "description": "A logical decoding plugin installed on the PostgreSQL server. The `pgoutput` plugin is used by default. If the replication table contains a lot of big jsonb values it is recommended to use `wal2json` plugin. Read more about selecting replication plugins.", + "description": "A logical decoding plugin installed on the PostgreSQL server. The `pgoutput` plugin is used by default. The `wal2json` plugin is deprecated and will soon be removed so it's not recommended to use. Read more about selecting replication plugins.", "enum": ["pgoutput", "wal2json"], "default": "pgoutput", "order": 2 diff --git a/airbyte-integrations/connectors/source-postgres/src/test/resources/expected_spec.json b/airbyte-integrations/connectors/source-postgres/src/test/resources/expected_spec.json index a2c1b52d1ffc1..2425013ebe147 100644 --- a/airbyte-integrations/connectors/source-postgres/src/test/resources/expected_spec.json +++ b/airbyte-integrations/connectors/source-postgres/src/test/resources/expected_spec.json @@ -225,7 +225,7 @@ "plugin": { "type": "string", "title": "Plugin", - "description": "A logical decoding plugin installed on the PostgreSQL server. The `pgoutput` plugin is used by default. If the replication table contains a lot of big jsonb values it is recommended to use `wal2json` plugin. Read more about selecting replication plugins.", + "description": "A logical decoding plugin installed on the PostgreSQL server. The `pgoutput` plugin is used by default. The `wal2json` plugin is deprecated and will soon be removed so it's not recommended to use. Read more about selecting replication plugins.", "enum": ["pgoutput", "wal2json"], "default": "pgoutput", "order": 2 diff --git a/airbyte-integrations/connectors/source-posthog/build.gradle b/airbyte-integrations/connectors/source-posthog/build.gradle index f0b7f8eab85c7..8928eb02e0515 100644 --- a/airbyte-integrations/connectors/source-posthog/build.gradle +++ b/airbyte-integrations/connectors/source-posthog/build.gradle @@ -7,8 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_posthog' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} - diff --git a/airbyte-integrations/connectors/source-prestashop/build.gradle b/airbyte-integrations/connectors/source-prestashop/build.gradle index d1ca6e6f77120..0c7570c7e0b1e 100644 --- a/airbyte-integrations/connectors/source-prestashop/build.gradle +++ b/airbyte-integrations/connectors/source-prestashop/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_prestashop' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-quickbooks-singer/build.gradle b/airbyte-integrations/connectors/source-quickbooks-singer/build.gradle index d2c7276a674ab..a23719cd55ae4 100644 --- a/airbyte-integrations/connectors/source-quickbooks-singer/build.gradle +++ b/airbyte-integrations/connectors/source-quickbooks-singer/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_quickbooks_singer' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-recharge/build.gradle b/airbyte-integrations/connectors/source-recharge/build.gradle index 3dbbf50c8c2a6..b453adf1f38eb 100644 --- a/airbyte-integrations/connectors/source-recharge/build.gradle +++ b/airbyte-integrations/connectors/source-recharge/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_recharge' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-retently/build.gradle b/airbyte-integrations/connectors/source-retently/build.gradle index 151dbe3361955..3e3ee4a40cf8a 100644 --- a/airbyte-integrations/connectors/source-retently/build.gradle +++ b/airbyte-integrations/connectors/source-retently/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_retently' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-salesforce/build.gradle b/airbyte-integrations/connectors/source-salesforce/build.gradle index 5fa5450562486..b13cd53c8c043 100644 --- a/airbyte-integrations/connectors/source-salesforce/build.gradle +++ b/airbyte-integrations/connectors/source-salesforce/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_salesforce' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-salesloft/build.gradle b/airbyte-integrations/connectors/source-salesloft/build.gradle index 54aaa2ae5b793..8d049650953ac 100644 --- a/airbyte-integrations/connectors/source-salesloft/build.gradle +++ b/airbyte-integrations/connectors/source-salesloft/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_salesloft' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-sendgrid/build.gradle b/airbyte-integrations/connectors/source-sendgrid/build.gradle index b6d93bf4ae43b..0777775e1d34a 100644 --- a/airbyte-integrations/connectors/source-sendgrid/build.gradle +++ b/airbyte-integrations/connectors/source-sendgrid/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_sendgrid' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-sentry/build.gradle b/airbyte-integrations/connectors/source-sentry/build.gradle index e36de603a9653..bdb2ada78084c 100644 --- a/airbyte-integrations/connectors/source-sentry/build.gradle +++ b/airbyte-integrations/connectors/source-sentry/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_sentry' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-snowflake/Dockerfile b/airbyte-integrations/connectors/source-snowflake/Dockerfile index f34e7d8f03a36..85cf8f6f81bb2 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.29 +LABEL io.airbyte.version=0.1.30 LABEL io.airbyte.name=airbyte/source-snowflake diff --git a/airbyte-integrations/connectors/source-snowflake/acceptance-test-config.yml b/airbyte-integrations/connectors/source-snowflake/acceptance-test-config.yml index 625a9065a3425..6268f7193dbad 100644 --- a/airbyte-integrations/connectors/source-snowflake/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-snowflake/acceptance-test-config.yml @@ -23,7 +23,7 @@ acceptance_tests: tests: - config_path: "secrets/config.json" configured_catalog_path: "integration_tests/configured_catalog.json" - incremental: - tests: - - config_path: "secrets/config.json" - configured_catalog_path: "integration_tests/configured_catalog_inc.json" +# incremental: +# tests: +# - config_path: "secrets/config.json" +# configured_catalog_path: "integration_tests/configured_catalog_inc.json" diff --git a/airbyte-integrations/connectors/source-snowflake/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/SnowflakeSourceAcceptanceTest.java b/airbyte-integrations/connectors/source-snowflake/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/SnowflakeSourceAcceptanceTest.java index 216378c291a4f..cc21c788fff10 100644 --- a/airbyte-integrations/connectors/source-snowflake/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/SnowflakeSourceAcceptanceTest.java +++ b/airbyte-integrations/connectors/source-snowflake/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/SnowflakeSourceAcceptanceTest.java @@ -37,7 +37,7 @@ public class SnowflakeSourceAcceptanceTest extends SourceAcceptanceTest { - private static final String SCHEMA_NAME = "SOURCE_INTEGRATION_TEST_" + protected static final String SCHEMA_NAME = "SOURCE_INTEGRATION_TEST_" + RandomStringUtils.randomAlphanumeric(4).toUpperCase(); private static final String STREAM_NAME1 = "ID_AND_NAME1"; private static final String STREAM_NAME2 = "ID_AND_NAME2"; diff --git a/airbyte-integrations/connectors/source-snowflake/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/SnowflakeSourceAuthAcceptanceTest.java b/airbyte-integrations/connectors/source-snowflake/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/SnowflakeSourceAuthAcceptanceTest.java index ca77a969bb279..acd668ccbabf4 100644 --- a/airbyte-integrations/connectors/source-snowflake/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/SnowflakeSourceAuthAcceptanceTest.java +++ b/airbyte-integrations/connectors/source-snowflake/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/SnowflakeSourceAuthAcceptanceTest.java @@ -5,6 +5,7 @@ package io.airbyte.integrations.io.airbyte.integration_tests.sources; import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ObjectNode; import com.zaxxer.hikari.HikariDataSource; import io.airbyte.commons.io.IOs; import io.airbyte.commons.json.Jsons; @@ -26,10 +27,11 @@ protected DataSource createDataSource() { final StringBuilder jdbcUrl = new StringBuilder( String.format("jdbc:snowflake://%s/?", config.get(JdbcUtils.HOST_KEY).asText())); jdbcUrl.append(String.format( - "role=%s&warehouse=%s&database=%s&JDBC_QUERY_RESULT_FORMAT=%s&CLIENT_SESSION_KEEP_ALIVE=%s", + "role=%s&warehouse=%s&database=%s&schema=%s&CLIENT_METADATA_REQUEST_USE_CONNECTION_CTX=true&JDBC_QUERY_RESULT_FORMAT=%s&CLIENT_SESSION_KEEP_ALIVE=%s", config.get("role").asText(), config.get("warehouse").asText(), config.get(JdbcUtils.DATABASE_KEY).asText(), + config.get("schema").asText(), // Needed for JDK17 - see // https://stackoverflow.com/questions/67409650/snowflake-jdbc-driver-internal-error-fail-to-retrieve-row-count-for-first-arrow "JSON", @@ -72,8 +74,10 @@ protected DataSource createDataSource() { } JsonNode getStaticConfig() { - return Jsons + final JsonNode node = Jsons .deserialize(IOs.readFile(Path.of("secrets/config_auth.json"))); + ((ObjectNode) node).put("schema", SCHEMA_NAME); + return node; } @Override diff --git a/airbyte-integrations/connectors/source-snowflake/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/SnowflakeSourceDatatypeTest.java b/airbyte-integrations/connectors/source-snowflake/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/SnowflakeSourceDatatypeTest.java index 00410d9b4d054..1c46dedc23eda 100644 --- a/airbyte-integrations/connectors/source-snowflake/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/SnowflakeSourceDatatypeTest.java +++ b/airbyte-integrations/connectors/source-snowflake/src/test-integration/java/io/airbyte/integrations/io/airbyte/integration_tests/sources/SnowflakeSourceDatatypeTest.java @@ -5,6 +5,7 @@ package io.airbyte.integrations.io.airbyte.integration_tests.sources; import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ObjectNode; import io.airbyte.commons.io.IOs; import io.airbyte.commons.json.Jsons; import io.airbyte.db.Database; @@ -45,6 +46,8 @@ protected JsonNode getConfig() { @Override protected Database setupDatabase() throws Exception { config = Jsons.deserialize(IOs.readFile(Path.of("secrets/config.json"))); + ((ObjectNode) config).put(JdbcUtils.SCHEMA_KEY, SCHEMA_NAME); + dslContext = DSLContextFactory.create( config.get("credentials").get(JdbcUtils.USERNAME_KEY).asText(), @@ -348,6 +351,15 @@ protected void initTests() { "{\n \"coordinates\": [\n -122.35,\n 37.55\n ],\n \"type\": \"Point\"\n}", "{\n \"coordinates\": [\n [\n -124.2,\n 42\n ],\n [\n -120.01,\n 41.99\n ]\n ],\n \"type\": \"LineString\"\n}") .build()); + + addDataTypeTestData( + TestDataHolder.builder() + .sourceType("NUMBER") + .airbyteType(JsonSchemaType.INTEGER) + .fullSourceDataType("NUMBER(38,0)") + .addInsertValues("3E+1") + .addExpectedValues("30") + .build()); } } diff --git a/airbyte-integrations/connectors/source-strava/build.gradle b/airbyte-integrations/connectors/source-strava/build.gradle index ff9b54eb3055e..b4e1fb7be55fa 100644 --- a/airbyte-integrations/connectors/source-strava/build.gradle +++ b/airbyte-integrations/connectors/source-strava/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_strava' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-surveymonkey/build.gradle b/airbyte-integrations/connectors/source-surveymonkey/build.gradle index 27ab0b59e7339..56a271660fbd3 100644 --- a/airbyte-integrations/connectors/source-surveymonkey/build.gradle +++ b/airbyte-integrations/connectors/source-surveymonkey/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_surveymonkey' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-tplcentral/build.gradle b/airbyte-integrations/connectors/source-tplcentral/build.gradle index 57fb59665888f..8c3c297045e7d 100644 --- a/airbyte-integrations/connectors/source-tplcentral/build.gradle +++ b/airbyte-integrations/connectors/source-tplcentral/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_tplcentral' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-twilio/build.gradle b/airbyte-integrations/connectors/source-twilio/build.gradle index 2a5bb5764276a..0a2470c60adc5 100644 --- a/airbyte-integrations/connectors/source-twilio/build.gradle +++ b/airbyte-integrations/connectors/source-twilio/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_twilio' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-weatherstack/build.gradle b/airbyte-integrations/connectors/source-weatherstack/build.gradle index 0143dca6306ca..180cc4231fa1d 100644 --- a/airbyte-integrations/connectors/source-weatherstack/build.gradle +++ b/airbyte-integrations/connectors/source-weatherstack/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_weatherstack' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-youtube-analytics/build.gradle b/airbyte-integrations/connectors/source-youtube-analytics/build.gradle index 4a08976742542..9f1060506a1f0 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/build.gradle +++ b/airbyte-integrations/connectors/source-youtube-analytics/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_youtube_analytics' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-zendesk-sunshine/build.gradle b/airbyte-integrations/connectors/source-zendesk-sunshine/build.gradle index 2b3f22e157025..f20109efb7bb1 100644 --- a/airbyte-integrations/connectors/source-zendesk-sunshine/build.gradle +++ b/airbyte-integrations/connectors/source-zendesk-sunshine/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_zendesk_sunshine' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-zendesk-talk/build.gradle b/airbyte-integrations/connectors/source-zendesk-talk/build.gradle index f2b4b708bd19e..51aa0c7591525 100644 --- a/airbyte-integrations/connectors/source-zendesk-talk/build.gradle +++ b/airbyte-integrations/connectors/source-zendesk-talk/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_zendesk_talk' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-zenloop/build.gradle b/airbyte-integrations/connectors/source-zenloop/build.gradle index 1e674d343623e..7a306385ce645 100644 --- a/airbyte-integrations/connectors/source-zenloop/build.gradle +++ b/airbyte-integrations/connectors/source-zenloop/build.gradle @@ -7,7 +7,3 @@ plugins { airbytePython { moduleDirectory 'source_zenloop' } - -dependencies { - implementation files(project(':airbyte-integrations:bases:connector-acceptance-test').airbyteDocker.outputs) -} diff --git a/docs/connector-development/debugging-docker.md b/docs/connector-development/debugging-docker.md index 8808ef8e9ad0c..b6be4a8d1b442 100644 --- a/docs/connector-development/debugging-docker.md +++ b/docs/connector-development/debugging-docker.md @@ -124,6 +124,18 @@ You can now add breakpoints and debug any code which would be executed in the `d Happy Debugging! +#### Connecting the Debugger to an Integration Test Spawned Container +You can also debug code contained in containers spawned in an integration test! This can be used to debug integration tests as well as testing code changes. +The steps involved are: +1. Follow all the steps outlined above to set up the **Remote JVM Debug** run configuration. +2. Edit the run configurations associated with the given integration test with the following environment variables:`DEBUG_CONTAINER_IMAGE=source-postgres;DEBUG_CONTAINER_JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005` +Note that you will have to keep repeating this step for every new integration test run configuration you create. +3. Run the integration test in debug mode. In the debug tab, open up the Remote JVM Debugger run configuration you just created. +4. Keep trying to attach the Remote JVM Debugger. It will likely fail a couple of times and eventually connect to the test container. If you want a more +deterministic way to connect the debugger, you can set a break point in the `DockerProcessFactor.localDebuggingOptions()` method. Resume running the integration test run and +then attempt to attach the Remote JVM Debugger (you still might need a couple of tries). + + ## Gotchas So now that your debugger is set up, what else is there to know? diff --git a/docs/integrations/destinations/exasol.md b/docs/integrations/destinations/exasol.md index 7403842bfa0e0..9c030a8a0bc2b 100644 --- a/docs/integrations/destinations/exasol.md +++ b/docs/integrations/destinations/exasol.md @@ -8,29 +8,29 @@ Exasol is the in-memory database built for analytics. Each Airbyte Stream becomes an Exasol table and each Airbyte Field becomes an Exasol column. Each Exasol table created by Airbyte will contain 3 columns: -* `_AIRBYTE_AB_ID`: a uuid assigned by Airbyte to each event that is processed. The column type in Exasol is `VARCHAR(64)`. -* `_AIRBYTE_DATA`: a json blob representing with the event data. The column type in Exasol is `VARCHAR(2000000)`. -* `_AIRBYTE_EMITTED_AT`: a timestamp representing when the event was pulled from the data source. The column type in Exasol is `TIMESTAMP`. +- `_AIRBYTE_AB_ID`: a uuid assigned by Airbyte to each event that is processed. The column type in Exasol is `VARCHAR(64)`. +- `_AIRBYTE_DATA`: a json blob representing with the event data. The column type in Exasol is `VARCHAR(2000000)`. +- `_AIRBYTE_EMITTED_AT`: a timestamp representing when the event was pulled from the data source. The column type in Exasol is `TIMESTAMP`. ### Features The Exasol destination supports the following features: -| Feature | Supported? (Yes/No) | Notes | -| :--- | :--- | :--- | -| Full Refresh Sync | Yes | | -| Incremental - Append Sync | Yes | | -| Incremental - Deduped History | No | | -| Normalization | No | | -| Namespaces | Yes | | -| SSL connection | Yes | TLS | -| SSH Tunnel Support | No | | +| Feature | Supported? (Yes/No) | Notes | +| :---------------------------- | :------------------ | :---- | +| Full Refresh Sync | Yes | | +| Incremental - Append Sync | Yes | | +| Incremental - Deduped History | No | | +| Normalization | No | | +| Namespaces | Yes | | +| SSL connection | Yes | TLS | +| SSH Tunnel Support | No | | ### Limitations #### Maximum data size two million characters -Exasol does not have a special data type for storing data of arbitrary length or JSON. That's why this connector uses type `VARCHAR(2000000)` for storing Airbyte data. +Exasol does not have a special data type for storing data of arbitrary length or JSON. That's why this connector uses type `VARCHAR(2000000)` for storing Airbyte data. ## Getting started @@ -46,12 +46,12 @@ Make sure your Exasol database can be accessed by Airbyte. If your database is w As Airbyte namespaces allow to store data into different schemas, there are different scenarios requiring different permissions assigned to the user account. The following table describes 4 scenarios regarding the login user and the destination user. -| Login user | Destination user | Required permissions | Comment | -| :--- | :--- | :--- | :--- | -| DBA User | Any user | - | | -| Regular user | Same user as login | Create, drop and write table, create session | | -| Regular user | Any existing user | Create, drop and write ANY table, create session | Grants can be provided on a system level by DBA or by target user directly | -| Regular user | Not existing user | Create, drop and write ANY table, create user, create session | Grants should be provided on a system level by DBA | +| Login user | Destination user | Required permissions | Comment | +| :----------- | :----------------- | :------------------------------------------------------------ | :------------------------------------------------------------------------- | +| DBA User | Any user | - | | +| Regular user | Same user as login | Create, drop and write table, create session | | +| Regular user | Any existing user | Create, drop and write ANY table, create session | Grants can be provided on a system level by DBA or by target user directly | +| Regular user | Not existing user | Create, drop and write ANY table, create user, create session | Grants should be provided on a system level by DBA | We highly recommend creating an Airbyte-specific user for this purpose. @@ -59,14 +59,15 @@ We highly recommend creating an Airbyte-specific user for this purpose. You should now have all the requirements needed to configure Exasol as a destination in the UI. You'll need the following information to configure the Exasol destination: -* Host -* Port -* Fingerprint of the Exasol server's TLS certificate (if the database uses a self-signed certificate) -* Username -* Password +- Host +- Port +- Fingerprint of the Exasol server's TLS certificate (if the database uses a self-signed certificate) +- Username +- Password ## Changelog | Version | Date | Pull Request | Subject | -|:--------|:-----------|:---------------------------------------------------------|:------------------------------------------| +| :------ | :--------- | :------------------------------------------------------- | :---------------------------------------- | +| 0.1.1 | 2023-02-21 | [xxx](https://github.com/airbytehq/airbyte/pull/xxx) | Fix the build | | 0.1.0 | 2023-01-?? | [21200](https://github.com/airbytehq/airbyte/pull/21200) | Initial version of the Exasol destination | diff --git a/docs/integrations/sources/postgres.md b/docs/integrations/sources/postgres.md index dc76776432aab..247e18b2ea887 100644 --- a/docs/integrations/sources/postgres.md +++ b/docs/integrations/sources/postgres.md @@ -216,7 +216,9 @@ az postgres server restart --resource-group group --name server #### Step 2: Select a replication plugin​ -We recommend using a [pgoutput](https://www.postgresql.org/docs/9.6/logicaldecoding-output-plugin.html) plugin (the standard logical decoding plugin in Postgres). If the replication table contains multiple JSON blobs and the table size exceeds 1 GB, we recommend using a [wal2json](https://github.com/eulerto/wal2json) instead. Note that wal2json may require additional installation for Bare Metal, VMs (EC2/GCE/etc), Docker, etc. For more information read the [wal2json documentation](https://github.com/eulerto/wal2json). +We currently support two plugins : +1. [pgoutput](https://www.postgresql.org/docs/9.6/logicaldecoding-output-plugin.html) plugin (the standard logical decoding plugin in Postgres). +2. [wal2json](https://github.com/eulerto/wal2json) plugin. Please note that the wal2json plugin has been deprecated and we will remove support for it in the near future. We strongly advice against using this plugin. #### Step 3: Create replication slot​ @@ -409,10 +411,11 @@ The root causes is that the WALs needed for the incremental sync has been remove ## Changelog -| Version | Date | Pull Request | Subject | -|:--------|:-----------|:---------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Version | Date | Pull Request | Subject | +|:--------|:----------|:----------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 1.0.46 | 2022-02-21 | [23105](https://github.com/airbytehq/airbyte/pull/23105) | Include log levels and location information (class, method and line number) with source connector logs published to Airbyte Platform. | | 1.0.45 | 2022-02-09 | [22221](https://github.com/airbytehq/airbyte/pull/22371) | Ensures that user has required privileges for CDC syncs. | -| | 2022-02-15 | [23028](https://github.com/airbytehq/airbyte/pull/23028) | | +| | 2022-02-15 | [23028](https://github.com/airbytehq/airbyte/pull/23028) | | | 1.0.44 | 2022-02-06 | [22221](https://github.com/airbytehq/airbyte/pull/22221) | Exclude new set of system tables when using `pg_stat_statements` extension. | | 1.0.43 | 2022-02-06 | [21634](https://github.com/airbytehq/airbyte/pull/21634) | Improve Standard sync performance by caching objects. | | 1.0.42 | 2022-01-23 | [21523](https://github.com/airbytehq/airbyte/pull/21523) | Check for null in cursor values before replacing. | diff --git a/docs/integrations/sources/recharge.md b/docs/integrations/sources/recharge.md index 79e67b60f9a61..929b925556f08 100644 --- a/docs/integrations/sources/recharge.md +++ b/docs/integrations/sources/recharge.md @@ -75,8 +75,8 @@ The Recharge connector should gracefully handle Recharge API limitations under n ## Changelog | Version | Date | Pull Request | Subject | -|:--------| :--------- | :------------------------------------------------------- | :---------------------------------------------------------------------------------------- | -| 0.2.6 | 2023-02-07 | [22473](https://github.com/airbytehq/airbyte/pull/22473) | Use default availability strategy +|:--------|:-----------| :------------------------------------------------------- | :---------------------------------------------------------------------------------------- | +| 0.2.6 | 2023-02-21 | [22473](https://github.com/airbytehq/airbyte/pull/22473) | Use default availability strategy | 0.2.5 | 2023-01-27 | [22021](https://github.com/airbytehq/airbyte/pull/22021) | Set `AvailabilityStrategy` for streams explicitly to `None` | | 0.2.4 | 2022-10-11 | [17822](https://github.com/airbytehq/airbyte/pull/17822) | Do not parse JSON in `should_retry` | | 0.2.3 | 2022-10-11 | [17822](https://github.com/airbytehq/airbyte/pull/17822) | Do not parse JSON in `should_retry` | diff --git a/docs/integrations/sources/slack.md b/docs/integrations/sources/slack.md index 0516e1f64e190..a84035d19f7e8 100644 --- a/docs/integrations/sources/slack.md +++ b/docs/integrations/sources/slack.md @@ -136,7 +136,7 @@ It is recommended to sync required channels only, this can be done by specifying | Version | Date | Pull Request | Subject | |:--------|:-----------|:---------------------------------------------------------|:------------------------------------------------------------| -| 0.1.23 | 2023-01-30 | [21907](https://github.com/airbytehq/airbyte/pull/21907) | Do not join channels that not gonna be synced | +| 0.1.23 | 2023-02-21 | [21907](https://github.com/airbytehq/airbyte/pull/21907) | Do not join channels that not gonna be synced | | 0.1.22 | 2023-01-27 | [22022](https://github.com/airbytehq/airbyte/pull/22022) | Set `AvailabilityStrategy` for streams explicitly to `None` | | 0.1.21 | 2023-01-12 | [21321](https://github.com/airbytehq/airbyte/pull/21321) | Retry Timeout error | | 0.1.20 | 2022-12-21 | [20767](https://github.com/airbytehq/airbyte/pull/20767) | Update schema | diff --git a/docs/integrations/sources/snowflake.md b/docs/integrations/sources/snowflake.md index bfbecf6f4dbc7..7e3f942b864db 100644 --- a/docs/integrations/sources/snowflake.md +++ b/docs/integrations/sources/snowflake.md @@ -122,7 +122,8 @@ 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.30 | 2023-02-21 | [22358](https://github.com/airbytehq/airbyte/pull/22358) | Improved handling of big integer cursor type values. | +| 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/quickstart/deploy-airbyte.md b/docs/quickstart/deploy-airbyte.md index c0d0753787764..72c75b896a9d3 100644 --- a/docs/quickstart/deploy-airbyte.md +++ b/docs/quickstart/deploy-airbyte.md @@ -8,7 +8,7 @@ Deploying Airbyte Open-Source just takes two steps. ```bash git clone https://github.com/airbytehq/airbyte.git cd airbyte -docker compose up +./run-ab-platform.sh ``` Once you see an Airbyte banner, the UI is ready to go at [http://localhost:8000](http://localhost:8000)! You will be asked for a username and password. By default, that's username `airbyte` and password `password`. Once you deploy airbyte to your servers, **be sure to change these** in your `.env` file.