Changes
- INCREMENTAL: An optional config
limit
to be appended to incremental queries to limit their runtime.
Fixes
- INCREMENTAL:
ORDER BY
added back to query in case replication key value is None.
Changes
- LOG_BASED: Use wal2json format-version v2 to read WAL, require wal2json >= 2.3 to be installed on pg server.
- Bump
psycopg2-binary
from2.9.4
to2.9.5
Changes
- INCREMENTAL: Use sub-query to trick PostreSQL into more efficient use of index.
Fixes
- INCREMENTAL: generate valid SQL to extract data from tables where no
replication_key_value
in the state file.
Fixes
- LOG_BASED: catch exceptions and emit current state upon exiting
- LOG_BASED:
max_run_seconds
only working when there are wal messages. - LOG_BASED: Prevent high CPU utilization while waiting for wal messages.
Changes
- local database container for dev and test purposes.
- bump
psycopg2-binary
from2.8.6
to2.9.3
Fixes
- LOG_BASED: Handle dates with year > 9999.
- INCREMENTAL & FULL_TABLE: Avoid processing timestamps arrays as timestamp
- Add discovering of partitioned tables.
- Parse data from json(b) when converting a row to a record message in log based replication method.
- Enable SSL mode if
ssl
option is 'true' in config
- Ensure generated Postgres replication slot name is valid
- Handle timestamps out of range
Fix data loss issue when running LOG_BASED
due to the tap not sending new SCHEMA singer messages when source tables change structure, mainly new/renamed columns, which causes the target to not be up to date with the stream structure.
The tap now:
- Runs discovery for selected stream at the beginning of sync to send up to date SCHEMA singer messages
- When new columns are detected in WAL payloads, then run discovery for the stream and send new SCHEMA message.
- Fixed issue when JSON type not converted to dictionary
- Fixed an issue when existing replication slot not found
- Enable
LOG_BASED
to replicate multiple databases by multiple taps - Fix extracting data from tables with space in the name
- Minor loggin change
- Backward compatibility fix for PG version > 10
- Support session
wal_sender_timeout
setting
- Remove unused timestamps in logical replication
- Make logging customizable
- Support for jsonb column type
- Add
break_at_end_lsn
setting - Add
max_run_seconds
setting - Only send feedback when
lsn_comitted
has increased - Remove some incompatible singer tap-postgres code
- Minor error handling optimization
- Bump psycopg2 to
2.8.4
- Rely on psycopg2 to send keep-alive status updates to source
- Fix error handling condition if state file cannot be opened to read latest commit position
- Remove database_name from stream-id
- Remove LOG_BASED stream bookmarks from state if it has been de-selected in catalogue
- Convert values in time with timezone columns to UTC
- Bug fixes and stability improvements
- Remove include_schemas_in_destination_stream_name and always add schema name to stream
- Fix regression bug
- Only request selected tables from wal2json
- Untracked dev changes
- Untracked dev changes
- Bump psycopg2 to
2.8.3
- Also very fast, but due to the PostgreSQL session memory limit, will fail for very large transactions
- Untracked dev changes
- Untracked dev changes
- Keep-alive feedback message sent to the source server is now only sent every 5 seconds
- Lsn position is no longer flushed at the end of the run, but only at the start of the next run
- Only search for DB specific slot
- Improve version detection and control
- Clarify Update Bookmark Period
- Lower default
poll_total_seconds
- When no data is received, poll every 5 seconds for 15 seconds total
- Do not flush lsn at the end of a run, but at the start of the next run
- Some postgres instances do not have hstore available. do not make that assumption
- hstore rec must exist && must have an installed version to use hstore
- Send all stream schemas before syncing for binlog
- dsn string was causing encoding issues for a client with backslashes in their password
- Change bookmark property from primary key to replication key
- Only fetch the end_lsn if a log based stream is in play. aurora, for instances, does not support lsns
- Do NOT consume message if its lsn > the global end_lsn for that tap run
- Don't break logical replication just because we haven't seen a message in 10 seconds
- Initial release with updated
README.md