New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
destination-redshift
should fail syncs if records or properties are too large, rather than silently skipping records and succeeding
#27993
Conversation
…oo large, rather than silently skipping records and succeding
Before Merging a Connector Pull RequestWow! What a great pull request you have here! 🎉 To merge this PR, ensure the following has been done/considered for each connector added or updated:
If the checklist is complete, but the CI check is failing,
|
destination-redshift
will fail syncs if records or properties are too large, rather than silently skipping records and succedingdestination-redshift
will fail syncs if records or properties are too large, rather than silently skipping records and succeeding
destination-redshift
will fail syncs if records or properties are too large, rather than silently skipping records and succeedingdestination-redshift
should fail syncs if records or properties are too large, rather than silently skipping records and succeeding
destination-redshift test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-redshift/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-redshift docker image for platform linux/x86_64 | ✅ |
Build airbyte/normalization-redshift:dev | ✅ |
./gradlew :airbyte-integrations:connectors:destination-redshift:integrationTest | ❌ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-redshift test
destination-redshift test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-redshift/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-redshift docker image for platform linux/x86_64 | ✅ |
Build airbyte/normalization-redshift:dev | ✅ |
./gradlew :airbyte-integrations:connectors:destination-redshift:integrationTest | ❌ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-redshift test
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what do you think of keeping this behavior available as a config option? I'm nervous about sources that don't have the ability to do that sort of filtering
if not: We can also delete implementsRecordSizeLimitChecks
and testSyncVeryBigRecords
from DestinationAcceptanceTest / RedshiftStagingS3DestinationAcceptanceTest
either way - this diff lgtm
Thanks for the review @edgao!
Give the choice, I didn't want to go with a config option, because whenever possible I want the behavior of our destinations to match. Snowflake and BQ have the same problem today, and one day we should holistically tackle this problem, rather than a piecemeal per-destination solution. For example, once we get one-stream-one-table released (#26028), we could add a feature to every destination that handles per-field and per-record size limitations. We could just write the PK and cursor for the record, and then include an |
destination-oracle-strict-encrypt test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-oracle-strict-encrypt/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-oracle-strict-encrypt docker image for platform linux/x86_64 | ✅ |
Build airbyte/normalization-oracle:dev | ✅ |
./gradlew :airbyte-integrations:connectors:destination-oracle-strict-encrypt:integrationTest | ❌ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-oracle-strict-encrypt test
...rc/main/java/io/airbyte/integrations/standardtest/destination/DestinationAcceptanceTest.java
Outdated
Show resolved
Hide resolved
sgtm |
destination-pubsub test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-pubsub/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-pubsub docker image for platform linux/x86_64 | ✅ |
./gradlew :airbyte-integrations:connectors:destination-pubsub:integrationTest | ❌ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-pubsub test
destination-vertica test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-vertica/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ❌ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-vertica test
destination-mqtt test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-mqtt/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-mqtt docker image for platform linux/x86_64 | ✅ |
./gradlew :airbyte-integrations:connectors:destination-mqtt:integrationTest | ❌ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-mqtt test
destination-azure-blob-storage test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-azure-blob-storage/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-azure-blob-storage docker image for platform linux/x86_64 | ✅ |
./gradlew :airbyte-integrations:connectors:destination-azure-blob-storage:integrationTest | ❌ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-azure-blob-storage test
destination-keen test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-keen/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-keen docker image for platform linux/x86_64 | ✅ |
./gradlew :airbyte-integrations:connectors:destination-keen:integrationTest | ❌ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-keen test
destination-starburst-galaxy test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-starburst-galaxy/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-starburst-galaxy docker image for platform linux/x86_64 | ✅ |
./gradlew :airbyte-integrations:connectors:destination-starburst-galaxy:integrationTest | ❌ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-starburst-galaxy test
destination-yugabytedb test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-yugabytedb/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-yugabytedb docker image for platform linux/x86_64 | ✅ |
./gradlew :airbyte-integrations:connectors:destination-yugabytedb:integrationTest | ❌ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-yugabytedb test
destination-exasol test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-exasol/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ❌ |
Build connector tar | ✅ |
Build destination-exasol docker image for platform linux/x86_64 | ✅ |
./gradlew :airbyte-integrations:connectors:destination-exasol:integrationTest | ❌ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-exasol test
destination-dev-null test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-dev-null/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-dev-null docker image for platform linux/x86_64 | ✅ |
./gradlew :airbyte-integrations:connectors:destination-dev-null:integrationTest | ❌ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-dev-null test
destination-redshift test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-redshift/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-redshift docker image for platform linux/x86_64 | ✅ |
Build airbyte/normalization-redshift:dev | ✅ |
./gradlew :airbyte-integrations:connectors:destination-redshift:integrationTest | ✅ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-redshift test
destination-doris test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-doris/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ❌ |
Build connector tar | ✅ |
Build destination-doris docker image for platform linux/x86_64 | ✅ |
./gradlew :airbyte-integrations:connectors:destination-doris:integrationTest | ❌ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-doris test
destination-dynamodb test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-dynamodb/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-dynamodb docker image for platform linux/x86_64 | ✅ |
./gradlew :airbyte-integrations:connectors:destination-dynamodb:integrationTest | ✅ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-dynamodb test
destination-gcs test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-gcs/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-gcs docker image for platform linux/x86_64 | ✅ |
./gradlew :airbyte-integrations:connectors:destination-gcs:integrationTest | ✅ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-gcs test
destination-r2 test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-r2/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-r2 docker image for platform linux/x86_64 | ✅ |
./gradlew :airbyte-integrations:connectors:destination-r2:integrationTest | ❌ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-r2 test
destination-azure-blob-storage test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-azure-blob-storage/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-azure-blob-storage docker image for platform linux/x86_64 | ✅ |
./gradlew :airbyte-integrations:connectors:destination-azure-blob-storage:integrationTest | ❌ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-azure-blob-storage test
destination-s3-glue test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-s3-glue/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-s3-glue docker image for platform linux/x86_64 | ✅ |
./gradlew :airbyte-integrations:connectors:destination-s3-glue:integrationTest | ✅ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-s3-glue test
destination-mysql test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-mysql/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-mysql docker image for platform linux/x86_64 | ✅ |
Build airbyte/normalization-mysql:dev | ✅ |
./gradlew :airbyte-integrations:connectors:destination-mysql:integrationTest | ❌ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-mysql test
destination-redpanda test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-redpanda/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-redpanda docker image for platform linux/x86_64 | ✅ |
./gradlew :airbyte-integrations:connectors:destination-redpanda:integrationTest | ❌ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-redpanda test
destination-iceberg test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-iceberg/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ❌ |
Build connector tar | ✅ |
Build destination-iceberg docker image for platform linux/x86_64 | ✅ |
./gradlew :airbyte-integrations:connectors:destination-iceberg:integrationTest | ❌ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-iceberg test
destination-bigquery test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-bigquery/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-bigquery docker image for platform linux/x86_64 | ✅ |
Build airbyte/normalization:dev | ✅ |
./gradlew :airbyte-integrations:connectors:destination-bigquery:integrationTest | ✅ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-bigquery test
destination-snowflake test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-snowflake/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-snowflake docker image for platform linux/x86_64 | ✅ |
Build airbyte/normalization-snowflake:dev | ✅ |
./gradlew :airbyte-integrations:connectors:destination-snowflake:integrationTest | ❌ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-snowflake test
destination-kinesis test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-kinesis/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-kinesis docker image for platform linux/x86_64 | ✅ |
./gradlew :airbyte-integrations:connectors:destination-kinesis:integrationTest | ✅ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-kinesis test
destination-csv test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-csv/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-csv docker image for platform linux/x86_64 | ✅ |
./gradlew :airbyte-integrations:connectors:destination-csv:integrationTest | ✅ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-csv test
destination-kafka test report (commit
|
Step | Result |
---|---|
Validate airbyte-integrations/connectors/destination-kafka/metadata.yaml | ✅ |
Connector version semver check | ✅ |
QA checks | ✅ |
Build connector tar | ✅ |
Build destination-kafka docker image for platform linux/x86_64 | ✅ |
./gradlew :airbyte-integrations:connectors:destination-kafka:integrationTest | ❌ |
Please note that tests are only run on PR ready for review. Please set your PR to draft mode to not flood the CI engine and upstream service on following commits.
You can run the same pipeline locally on this branch with the airbyte-ci tool with the following command
airbyte-ci connectors --name=destination-kafka test
Enough of the tests for other connectors are passing, and the builds all seem to be OK... so... Merging! |
/approve-and-merge reason="enough of the connector tests are passing" |
… too large, rather than silently skipping records and succeeding (airbytehq#27993) * `destination-redshift` will fail syncs if records or properties are too large, rather than silently skipping records and succeding * Bump version * remove tests that don't matter any more * more test removal * more test removal --------- Co-authored-by: Augustin <augustin@airbyte.io>
This looks like a breaking change. IMO better to have the option to switch back to the old behavior. |
thanks @evantahler for your PR. tbh I was not aware of the issue with Redshift's limits on SUPER type until I upgraded my connector to your version. ok, I already know that it is not possible. https://docs.aws.amazon.com/redshift/latest/dg/limitations-super.html# a workaround would be appreciated though :) |
We've got a feature on the roadmap to use our new features in Destinations V2 (#26028) to have a work around! We'll import the columns we can, and include an error message, per-record, for any column which has a filed that is too large for the destination. Would you prefer the too-large field with the error to have NULL or a truncated value? |
sounds great! personally I would prefer to have it as NULL as then it would indicate that given field was too big for a destination and with a truncated value I suspect it might sl without being noticed. If I understood you correctly Destinations V2 would be used instead on the normalisation step which is being used atm. I believe my issue is slightly different as my payload field is in a jsonb format and being read as a single string value (please correct me if I'm wrong) thus exceeding 65535 bytes for a single value within a SUPER data type. |
Closes #19990, albiet in a less-than-ideal way. At least now, users will be notified when source data won't fit in the destination. From there, a view or other filtering mechanism on the source can be used to adjust the incoming records to fix within Redshift.