* add AIRBYTE_ENTRYPOINT for kubernetes support
* bump versions
* bump version in seed
* Update generic template
* keep scaffold sources at 0.1.0
* add missing newline
* handle python base versions correctly
* re-bump mysql and postgres sources
* re-bump snowflake destination
* add skip tests option
* switch to running tests
* reverse conditional to make it safer
* fix publish to include the test running
* fix iterable version
* fix file generation
Co-authored-by: Sherif A. Nada <snadalive@gmail.com>
* Update README icon links
* Update airbyte-specification doc
* Extend base connector
* Remove redundant region
* Separate warning from info
* Implement s3 destination
* Run format
* Clarify logging message
* Rename variables and functions
* Update documentation
* Rename and annotate interface
* Inject formatter factory
* Remove part size
* Fix spec field names and add unit tests
* Add unit tests for csv output formatter
* Format code
* Complete acceptance test and fix bugs
* Fix uuid
* Remove generator template files
They belong to another PR.
* Add unhappy test case
* Checkin airbyte state message
* Adjust stream transfer manager parameters
* Use underscore in filename
* Create csv sheet generator to handle data processing
* Format code
* Add partition id to filename
* Rename date format variable
* Migrate BufferedStreamConsumer users (e.g. all JDBC destinations, MeiliSearch) (#3473)
* Add checkpointing test cases in Acceptance Tests (#3473)
* Add testing for emitting state in Destination Standard Test (#3546)
* Migrate BQ to support checkpointing (#3546)
* Migrate copy destinations support checkpointing (#3547)
* Checkpointing: Migrate CSV and JSON destinations (#3551)
* use strict JSONL definition of new lines in destinations
* failing test case
* use next instead of nextLine
* add \n in string for test
* bump destination versions
* bump to even newer version
* bump versions in dockerfiles as well
* force mysql test to pass
* Abort sync if one of the part fails to copy to temp table
* Check for record size when copying data from s3 to redshift
* Handle big record in RedshiftInsertDestination too
This PR introduces the following behavior for JDBC sources:
Instead of streamName = schema.tableName, this is now streamName = tableName and namespace = schema. This means that, when replicating from these sources, data will be replicated into a form matching the source. e.g. public.users (postgres source) -> public.users (postgres destination) instead of current behaviour of public.public_users. Since MySQL does not have schemas, the MySQL source uses the database as it's namespace.
To do so:
- Make namespace a field class concept in Airbyte Protocol. This allows the source to propagate namespace and destinations to write to a source-defined namespace. Also sets us up for future namespace related configurability.
- Add an optional namespace field to the AirbyteRecordMessage. This field will be set by sources that support namespace.
- Introduce AirbyteStreamNameNamespacePair as a type-safe manner of identifying streams throughout our code base.
- Modify base_normalisation to better support source defined namespace, specifically allowing normalisation of tables with the same name to different schemas.
Add namespace field to the Airbyte Stream in preparation to propagate a source defined namespace to the Destination.
This namespace field is then consumed as the destination schema the table is written to.
This only applies to JDBC destinations.
This is Steps 1 - 4 of the namespace tech spec, seen at https://docs.google.com/document/d/1qFk4YqnwxE4MCGeJ9M2scGOYej6JnDy9A0zbICP_zjI/edit.
Some minor refactoring and commenting as I go.
* Remove unnecessary test classes as they match Integration tests in terms of what is being tested. They have no real value since the corresponding integration test can be run locally without additional credentials. The main value the classes brings is letting us run tests without building the docker image (the integration tests require doing so). however I feel this benefit is not worth the additional maintenance cost.
* Centralise DataArgumentProvider into it's own class for easier maintenance and usability.
The acceptTracked method should accept an AirbyteRecordMessage instead of a generic AirbyteMessage. This allows us to centralise checking for a record and makes the interface easier to understand.
We can also consolidate checking if a received message has a corresponding stream. However that's more involved and can be revisited at a later date.
Clean up Destination interfaces, with the goal of less repeated code and hopefully better readability for the next person.
* Rename the write method in the Destination interface to getConsumer to better reflect that the method is not writing itself, but returning a consumer that will write upon accepting a message. This was consuming me when I was reading the code.
* Remove generics from the FailureTrackingConsumer and the DestinationConsumer. Besides tests, there are no generic uses of the FaliureTrackingConsumer. Replace this with the AirbyteMessage to make explicit this is what the FailureTrackingConsumer use cases. Although this does restrict our future use of the FailureTrackingConsumer class, I'd rather limit this now and re-inject generics once we have more use cases. This was also confusing me - I kept on wondering what other data type can be consuming this interface.
* Rename FailureTrackingConsumer to FailureTrackingAirbyteMessageConsumer to better reflect how the consumer is meant to be used strictly as a DestinationConsumer (it implements the interface).
* Rename DestinationConsumer to AirbyteMessageConsumer.
In a subsequent PR, I plan to consolidate logic to error if the received Airbyte message is not of Record type, into the
FailureTrackingAirbyteMessageConsumer class.
* Handle destination sync mode in destinations
* Source & Destination sync modes are required (#2500)
* Provide Migration script making sure it is always defined for previous sync configs
Instead of inserts, we write the data to S3 and issue a COPY command copying from S3 into redshift.
Use a single file as its sufficiently performant and we do not want to introduce file destination related operations yet.
Use an open source library for uploads as AWS does not natively support streaming loads.
My intention with this PR is to first implement the meat of the write-and-copy strategy. This is mainly centered around the RedshiftCopier class. I plan hook up the RedshiftCopier to the actual Destination class, and implement all the plumbing, in a follow up PR.
Co-authored-by: Davin Chia <davinchia@Davins-MacBook-Pro.local>
* gives better visibility into the progress of phase of both the source and destination.
* 1 log per every 10K records in the source
* destination logs each step in destination including setting up tmp tables, creating final tables, cleaning up tmp tables
* support cached builds for base -> base-java -> snowflake
* use plugin for image building
* fix matching on COPY from
* remove docker.gradle
* tmp commit
* update connectors
* finish rest of build files
* fix ide errors
* more build fixes
* clean up
* clean up for new soruces
* fix spotless
* fix flake problems
* add recommended empty file
* python caching
* fixes upon review
* clean up docker and build test files
* clean up python
* clean up
* fix integration test dependencies
* fix standard tests
* fix
* remove symlink
* re-add requirements to fix normalizatioon build
* fix symlink
* fix dumbest build problem of all
* add missing integration test def
* fix missing dep
* remove class exclusion
* move trim so null source versions are allowed
* rename map
* fix hardcoded value
* remove unnecessary dep
* use dashes for salesforce package name
* fix typo
* DRY and fix test image name
* Fix edit
* assert string is not empty
* build integration test image only for integrationTest
* move code generator to tools and rename docker build tasks
* make source test depend on integration test build, not the other way
* remove guard because the docker build should exist before the integrationtest is applied
* remove comment
* DRY up airbyte-source-test
* fix plugin compilation
* add missing dependency
* rename getTaggedImage to getDevTaggedImage
* fix test vs main docker build bug