Commit Graph

1441 Commits

Author SHA1 Message Date
Jiri Pechanec
4406c78a2b DBZ-8157 Support for MySQL VECTOR datatype 2024-08-29 12:20:49 +02:00
Jiri Pechanec
c5482a4df1 DBZ-8030 Add support for MySQL 9 2024-08-29 08:46:18 +02:00
Jiri Pechanec
8ca8f451f8 DBZ-7838 Support for MySQL 8.4 2024-08-28 12:14:18 +02:00
mfvitale
f3d43a8755 DBZ-8035 Uniform metrics tests 2024-08-20 13:23:34 +02:00
Jiri Pechanec
dac968cdd1 DBZ-7049 Use RSA auth for replica 2024-08-13 12:20:45 +02:00
Jiri Pechanec
5649d1e55c DBZ-7049 Switch other server configs 2024-08-13 12:20:45 +02:00
Jiri Pechanec
3a1265b1ff DBZ-7049 Add RSA configuration 2024-08-13 12:20:45 +02:00
Bue-Von-Hun
3050bf1381 DBZ-7049 Modify the server config instead of the query statement. 2024-08-13 12:20:45 +02:00
Bue-Von-Hun
3cbc8b3acd DBZ-7049 Fix to use caching_sha2_password instead of mysql_native_password 2024-08-13 12:20:45 +02:00
rkerner
56e63b98a8 DBZ-7223 Add the MongoDB sink connector
* add basic tests for MongoDB sink connector (MySQL to MongoDB 1 node ReplicaSet and multi-node sharded cluster)

closes https://issues.redhat.com/browse/DBZ-7223
2024-07-04 13:21:46 +02:00
Chris Cranford
63a439ef49 DBZ-7783 Use ServiceRegistry rather than CharsetRegistry directly 2024-06-21 10:52:29 +02:00
Chris Cranford
08c7977cb7 DBZ-7783 Add BinlogCharsetRegistry to the service registry 2024-06-21 10:52:29 +02:00
Chris Cranford
14ec7d6477 DBZ-7783 Introduce BinlogCharsetRegistry contract 2024-06-21 10:52:29 +02:00
Jiri Pechanec
c09c2c6712 DBZ-7641 Update tests 2024-05-15 05:42:12 +02:00
mfvitale
7ee8935694 DBZ-7616 Align query timeout changes to MariaDB connector 2024-04-22 09:17:44 +02:00
mfvitale
8206d2d98d DBZ-7616 Add query timeout on JdbcConnection controlled by query.timeout.ms property 2024-04-22 09:17:44 +02:00
Chris Cranford
531fef359d DBZ-7693 Reduce read-only incremental snapshot test verbosity 2024-04-18 10:27:21 +02:00
Chris Cranford
57384e6196 DBZ-7693 Binlog test to MySQL test suite 2024-04-18 10:27:21 +02:00
Chris Cranford
72d252d1ac DBZ-7693 Fix MySQL resolution of JDBC_PROTOCOL 2024-04-18 10:27:21 +02:00
Chris Cranford
8a39e04ca6 DBZ-7693 Refactor MySQL to use binlog-connector 2024-04-18 10:27:21 +02:00
Chris Cranford
23677ba2cb DBZ-7693 Move MySQL-specific behavior to MySQL impl 2024-04-18 10:27:21 +02:00
mfvitale
717888f6f6 DBZ-7765 Use different query for validating log position for SQLServer 2024-04-11 07:35:49 +02:00
Roman Kudryashov
50c9f042a3 DBZ-7755 Refactor exporting to CloudEvents: remove RecordParser 2024-04-08 13:22:31 +02:00
mfvitale
ae7628a732 DBZ-7732 Add ConnectorSpecific annotation to manage multiple SPI connector specific implementation 2024-04-08 12:46:53 +02:00
mfvitale
ec3c68b0d8 DBZ-7717 Move LogPositionValidator outside JdbcConnection 2024-04-05 11:57:43 +02:00
mfvitale
1190389edc DBZ-7718 Support table name escaping in BlockingSnapshotIT 2024-04-04 14:58:24 +02:00
mfvitale
213456c5af DBZ-7497 Properties related to configuration based snapshot mode are now optional 2024-03-28 08:59:54 +01:00
mfvitale
ee5f25ccc9 DBZ-7497 Add a configuration based snapshot modes configurable via connector properties 2024-03-28 08:59:54 +01:00
mfvitale
662a0518ac DBZ-7308 Fix MySQL tests 2024-03-25 05:46:46 +01:00
mfvitale
c7a28021a6 DBZ-7308 Remove connector specific SnapshotLockProvider and SnapshotterServiceProvider 2024-03-25 05:46:46 +01:00
mfvitale
60a0b1b5c3 DBZ-7308 tableLockingStatement from SnapshotLock interface now takes just one table in input 2024-03-25 05:46:46 +01:00
mfvitale
ae9009303c DBZ-7308 Move getSnapshottingTask to RelationalSnapshotChangeEventSource 2024-03-25 05:46:46 +01:00
mfvitale
265ba0f6e6 DBZ-7308 Check if configured snapshot mode permits streaming before starting it. 2024-03-25 05:46:46 +01:00
Chris Cranford
4356db3292 DBZ-7690 Fix history comparisons for SERVER_ID_KEY and TIMESTAMP_KEY 2024-03-21 08:41:47 +01:00
harveyyue
48c67e40fb DBZ-7618 Implement Versioned interfaces in Transformation and Converter plugins 2024-03-14 06:35:42 +01:00
Sean Wu
a71368cf62 DBZ-7594 Correct the negative value of data type TIME replicated from MySQL. 2024-03-12 08:01:04 +01:00
mfvitale
b8dcb958cd DBZ-7608 Maintain order for schema events 2024-03-11 08:42:52 +01:00
mfvitale
5a45d8dcf4 DBZ-7608 Resolve performance issue during addSchemaEvent 2024-03-11 08:42:52 +01:00
mfvitale
8a47b2333d DBZ-7588 Disable debug prints on tests 2024-03-02 11:33:48 -05:00
mfvitale
e174eae235 DBZ-7461 Remove redundant log 2024-03-01 14:12:31 +01:00
mfvitale
4ade54351f DBZ-7461 Rename SCHEMA_ONLY_RECOVERY to RECOVERY and SCHEMA_ONLY to NO_DATA 2024-03-01 14:12:31 +01:00
mfvitale
211675a355 DBZ-7461 Rename shouldSnapshot to shouldSnapshotData 2024-03-01 14:12:31 +01:00
mfvitale
562c999da4 DBZ-7461 Move out-of-the-box snapshotters to core 2024-03-01 14:12:31 +01:00
mfvitale
371905f135 DBZ-7461 Move snapshot mode validation logic to BaseSourceTask 2024-03-01 14:12:31 +01:00
mfvitale
99eee98e9d DBZ-7461 Align common code for Snapshotters 2024-03-01 14:12:31 +01:00
mfvitale
ce1b5d7231 DBZ-7461 Support WhenNeededSnapshotter for PostgreSQL 2024-03-01 14:12:31 +01:00
mfvitale
b1a907757d DBZ-7461 Support WhenNeededSnapshotter for Oracle 2024-03-01 14:12:31 +01:00
mfvitale
1f52b81b6d DBZ-7461 Support AlwaysSnapshotter for MySQL 2024-03-01 14:12:31 +01:00
James Johnston
f632fa081e DBZ-5071 Correctly handle NULL values in incremental snapshots
It turns out that the existing code for chunking a table when taking
an incremental snapshot was buggy and did not correctly handle NULL
values when building the chunk query.  An example of such a situation
would be when the user has specified "message.key.columns" to reference
a column that is part of a PostgreSQL UNIQUE INDEX that was created with
the NULLS NOT DISTINCT option.

This commit updates the new AbstractChunkQueryBuilder so that it checks
whether a key column is optional.  If it is, then additional will
appropriately consider NULL values when generating a chunk query using
"IS [NOT] NULL" clauses.

One complication is that different database engines have different
sorting behavior of ORDER BY.  It is apparently not well-defined by the
SQL standard.  Some databases consider NULL values to be higher than any
non-NULL values, and others consider them to be lower.

To handle this situation, a new nullsSortLast() function is added to the
JdbcConnection class.  By default, it returns an empty value, indicating
that the behavior of the database engine is unknown.  When an optional
field is encountered by AbstractChunkQueryBuilder in this situation, we
throw an error because we don't actually know how to correctly chunk the
query: there's no safe assumption that can be made here.

Derived JdbcConnection classes can then override the nullsSortLast
function, and return a value indicating the actual behavior of that
database engine.  When this is done, the AbstractChunkQueryBuilder then
knows how to correctly build a chunk query that can handle NULL values.

To help test this, new tests have been added to
AbstractIncrementalSnapshotTest.  First, the existing insertsWithoutPks
test has been moved and deduplicated from MySQL and PostgreSQL so that
the test case can be reused on other engines.  Second, a new
insertsWithoutPksAndNull test is run, which inserts data with NULL
values in the message key columns.  To demonstrate that chunk queries
are being correctly generated for practically every case, the
INCREMENTAL_SNAPSHOT_CHUNK_SIZE is set to 1 so that NULL values are not
returned in the middle of a chunk, which can cause us to skip testing
the code we need to test.
2024-02-29 13:36:26 +01:00
Vojtech Juranek
83c339c2ae [ci] Mark ReadOnlyIncrementalSnapshotIT#testStopSnapshotKafkaSignal as flaky 2024-02-27 16:38:15 -05:00