Commit Graph

1328 Commits

Author SHA1 Message Date
Chris Cranford
e33901959d DBZ-3401 Don't apply attributes if table not in schema 2024-03-03 00:46:23 -05:00
Chris Cranford
d245034d1e DBZ-3401 Fix test parameter bindings 2024-03-03 00:46:23 -05:00
Chris Cranford
648db88868 DBZ-3401 Add new hybrid mining strategy 2024-03-03 00:46:23 -05:00
mfvitale
446931a349 DBZ-7461 validate ArchiveLogDestination for all Oracle flavors 2024-03-01 14:12:31 +01:00
mfvitale
d142c7ec52 DBZ-7461 Fix getOffsetScn for XStreamAdapter 2024-03-01 14:12:31 +01:00
mfvitale
ff1f38ae0b DBZ-7461 Fix getOffsetScn for XStreamAdapter 2024-03-01 14:12:31 +01:00
mfvitale
e174eae235 DBZ-7461 Remove redundant log 2024-03-01 14:12:31 +01:00
mfvitale
ce17bdcce6 DBZ-7461 Add generic properties for redo log archive and retention 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
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
Chris Cranford
66e23613ce DBZ-7072 Retry Oracle Flashback-based snapshot queries 2024-02-29 13:33:10 +01:00
Chris Cranford
5c144cd0d0 DBZ-7559 Retry XStream ORA-23656 exceptions 2024-02-23 07:31:59 -05:00
rkerner
1e69e40ec2 DBZ-7416 Fix duplicate SMTs sometimes returned by Kafka Connect. Moved deduplication from Map to LinkedHashSet.
+ minor fixes added for cleanup and centralization of common code

closes https://issues.redhat.com/browse/DBZ-7416
2024-02-22 13:34:08 -05:00
Jiri Pechanec
68b6591142 DBZ-7416 Fix duplicate SMTs sometimes returned by Kafka Connect. Moved deduplication from Map to LinkedHashSet.
closes https://issues.redhat.com/browse/DBZ-7416
2024-02-22 13:34:08 -05:00
mfvitale
440c2cb509 DBZ-7302 Increase "task.management.timeout.ms" fro Oracles tests 2024-02-20 14:45:59 +01:00
mfvitale
d9deb7a944 DBZ-7302 Increase "task.management.timeout.ms" for Oracles tests 2024-02-20 14:45:59 +01:00
mfvitale
b6149d8f68 DBZ-7302 Increase "task.management.timeout.ms" fro Oracles tests 2024-02-20 14:45:59 +01:00
mfvitale
7ed5649e07 DBZ-7302 Implement Snapshotter for Oracle 2024-02-20 14:45:59 +01:00
mfvitale
6392a1b816 DBZ-7302 Implement SnapshotLock and SnapshotQuery for Oracle connector 2024-02-20 14:45:59 +01:00
Chris Cranford
2af17ac69c DBZ-7365 Upgrade Oracle ojdbc8 from 21.6.0.0 to 21.11.0.0 2024-02-19 14:25:25 +01:00
Chris Cranford
2034d48cf9 DBZ-6960 Fail validation with config state mismatch 2024-02-19 14:02:06 +01:00
Chris Cranford
aab87365d9 DBZ-6960 Include REDO SQL in Oracle source info block 2024-02-19 14:02:06 +01:00
Chris Cranford
340234c2ac DBZ-6679 Only advance LogMiner start position when query has data 2024-02-19 13:52:41 +01:00
Chris Cranford
a75744547a DBZ-7364 Distribute Oracle ojdbc8 with Oracle connector 2024-02-19 08:54:50 +01:00
Chris Cranford
438f0adcde DBZ-7504 Fix LogMinerHelperIT random test failure 2024-02-18 13:03:50 -05:00
jchipmunk
79763211cb DBZ-7479 Refactor code to support re-selection without flashback
Because OracleConnection uses flashback query (AS OF SCN) to re-select row, it is potentially possible to get "ORA-01555 Snapshot too old" error, which can be solved by performing reselection without flashback to get at least its latest row state.
2024-02-17 11:21:45 -05:00
jchipmunk
f50aa7a987 DBZ-7479 PreparedStatement leak in Oracle ReselectColumnsProcessor
Each time, Oracle connector creates a new instance of PreparedStatement because value of commit SCN is added directly to SQL query to reselect column values.
2024-02-17 11:21:45 -05:00
Chris Cranford
e3472d8082 DBZ-7489 Correctly handle setting XML field to "NULL" 2024-02-16 12:54:19 +01:00
Chris Cranford
4978312dad DBZ-7489 Correctly parse XML preamble SQL ending with "IS NULL" 2024-02-16 12:54:19 +01:00
Chris Cranford
928aa26cdb DBZ-7107 Fix source info test failures 2024-02-16 12:52:20 +01:00
Debezium Builder
10e327602c [maven-release-plugin] prepare for next development iteration 2024-02-13 09:20:04 +00:00
Debezium Builder
0c5b05738c [maven-release-plugin] prepare release v2.6.0.Alpha2 2024-02-13 09:20:04 +00:00
Vojtech Juranek
4452e3d095 DBZ-7024 Move EmbeddedConfig into separate class
`EmbeddedConfig` needs to be shared with other implmentations of
`DebeziumEngine` as long as Debezium embedded depends on the Kafka
model.
2024-02-12 13:43:21 +01:00
Chris Cranford
9fbcd6baa1 DBZ-7456 Skip PK change LOB column reselect if column is excluded 2024-02-09 16:43:13 -05:00
Chris Cranford
e2d03d9936 DBZ-7425 Use adapter-specific offset loaders when copying offsets 2024-02-07 19:40:30 -05:00
Chris Cranford
a597a82c19 DBZ-7439 Remove unnecessary log/output entries 2024-02-07 15:00:27 +01:00
Chris Cranford
de9364bb4d DBZ-7439 Fix test compatibility 2024-02-07 15:00:27 +01:00
Ondrej Babec
c806a04531 DBZ-7439 [ci] Add Oracle 23 initialisation scripts
* Create oracle-init dir with SQL init scripts
* Create init-db.sh to set default password and run init scripts
* Update test.sh to run init-db.sh for oracle-23
2024-02-07 15:00:27 +01:00
Chris Cranford
3d22ed30a3 DBZ-7439 [ci] Update TF with Oracle 23
* Introduce new InstantClient version property
  Needed because ojdbc8 versions for Oracle 23 have different version semantics
  Also adjusted documentation/build pipelines
* Introduce oracle-23 profile
  Allows testing Oracle 23 separately from distribution builds
2024-02-07 15:00:27 +01:00
mfvitale
f78d0cbd19 DBZ-7301 Add SnapshotterService to ChangeEventSourceFactory and SnapshotChangeEventSource 2024-02-06 07:12:42 +01:00
jchipmunk
c51ef3099a DBZ-7445 LogMiner batch size does not increase automatically
The condition for increasing the LogMiner batch size must depend on log.mining.batch.size.max, and not on log.mining.batch.size.min.
2024-02-05 12:28:16 -05:00
Chris Cranford
c669857760 DBZ-7446 Fix test failure 2024-02-05 12:26:39 -05:00
jchipmunk
04b8597239 DBZ-7446 Reduce string creation during SQL_REDO column read
Oracle Connector can create a new string when reading SQL_REDO column only if CSF column value is 1.
2024-02-05 12:26:39 -05:00
Chris Cranford
2bfa92e6af DBZ-7429 Resolve primary key values from after struct 2024-01-31 12:05:07 +01:00