✨Destination Bigquery 1s1t: handle cursor change#28721
Conversation
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,
|
| SELECT `_airbyte_raw_id` FROM ( | ||
| SELECT `_airbyte_raw_id`, row_number() OVER ( | ||
| PARTITION BY ${pk_list} ORDER BY ${cursor_name} DESC, `_airbyte_extracted_at` DESC | ||
| PARTITION BY ${pk_list} ORDER BY ${cursor_name} DESC NULLS LAST, `_airbyte_extracted_at` DESC |
There was a problem hiding this comment.
- Snowflake can do this!
- Redshift can do this!
- Postgres can do this!
- Clickhouse can do this!
- MySQL can do this (in a very odd way)!
- Databrikcs can do this!
Seems like this is a thing for enough databases to roll with!
There was a problem hiding this comment.
In MySQL NULL values are considered lower than any non-NULL value
so we don't strictly need to do anything, order by <cursor> desc is inherently putting nulls last
|
| 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
|
| Step | Result |
|---|---|
| Validate airbyte-integrations/connectors/destination-bigquery-denormalized/metadata.yaml | ✅ |
| Connector version semver check | ✅ |
| QA checks | ✅ |
| Build connector tar | ✅ |
| Build destination-bigquery-denormalized docker image for platform linux/x86_64 | ✅ |
| ./gradlew :airbyte-integrations:connectors:destination-bigquery-denormalized: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-denormalized test
|
| 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
|
| 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
|
| Step | Result |
|---|---|
| Validate airbyte-integrations/connectors/destination-bigquery-denormalized/metadata.yaml | ✅ |
| Connector version semver check | ✅ |
| QA checks | ✅ |
| Build connector tar | ✅ |
| Build destination-bigquery-denormalized docker image for platform linux/x86_64 | ✅ |
| ./gradlew :airbyte-integrations:connectors:destination-bigquery-denormalized: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-denormalized test
|
| 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
|
| 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
|
| 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
|
| Step | Result |
|---|---|
| Validate airbyte-integrations/connectors/destination-bigquery-denormalized/metadata.yaml | ✅ |
| Connector version semver check | ✅ |
| QA checks | ✅ |
| Build connector tar | ✅ |
| Build destination-bigquery-denormalized docker image for platform linux/x86_64 | ✅ |
| ./gradlew :airbyte-integrations:connectors:destination-bigquery-denormalized: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-denormalized test
Handle this scenario:
old_cursor; we run a syncnew_cursorcolumn, and changes its cursor tonew_cursor; run a syncDuring the second sync, all old records have a null
new_cursor(because that field didn't exist previously). But we still want to be able to overwrite them in the second sync. Therefore, we need to treat NULL cursors as older than non-NULL cursors.NULLS LASTThis is essentially happening with CDC sources right now.