Commit Graph

9938 Commits

Author SHA1 Message Date
mfvitale
8a47b2333d DBZ-7588 Disable debug prints on tests 2024-03-02 11:33:48 -05:00
Chris Cranford
aca2464862 [docs] Fix post-processor example 2024-03-01 12:51:37 -05:00
Fiore Mario Vitale
2f35b82014 DBZ-7461 Update doc for snapshot modes alignment
Co-authored-by: roldanbob <broldan@redhat.com>
2024-03-01 15:12:43 +01:00
Fiore Mario Vitale
00bedfd94a DBZ-7461 Update doc for snapshot modes alignment
Co-authored-by: roldanbob <broldan@redhat.com>
2024-03-01 15:12:43 +01:00
Fiore Mario Vitale
ed25585009 DBZ-7461 Update doc for snapshot modes alignment
Co-authored-by: roldanbob <broldan@redhat.com>
2024-03-01 15:12:43 +01:00
Fiore Mario Vitale
ddc1c2fb56 DBZ-7461 Update doc for snapshot modes alignment 2024-03-01 15:12:43 +01:00
Fiore Mario Vitale
913addbe7b DBZ-7461 Update doc for snapshot modes alignment
Co-authored-by: roldanbob <broldan@redhat.com>
2024-03-01 15:12:43 +01:00
Fiore Mario Vitale
aa339a3125 DBZ-7461 Update doc for snapshot modes alignment
Co-authored-by: roldanbob <broldan@redhat.com>
2024-03-01 15:12:43 +01:00
Fiore Mario Vitale
05a9d42d51 DBZ-7461 Update PostgreSQL, Oracle and MySQL documentation about snapshot modes
Co-authored-by: Chris Cranford <ccranfor@redhat.com>
2024-03-01 15:12:43 +01:00
mfvitale
fc845ec86f DBZ-7461 Update PostgreSQL, Oracle and MySQL documentation about snapshot modes 2024-03-01 15:12:43 +01:00
mfvitale
034ceb9c0b DBZ-7461 Update PostgreSQL, Oracle and MySQL documentation about snapshot modes 2024-03-01 15:12:43 +01:00
mfvitale
c942bd26d1 DBZ-7461 Revisit snapshot modes behavior when snapshot already completed 2024-03-01 14:12:31 +01: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
c5ef32e07e [ci] Mark MongoDbReplicaSetAuthTest as flaky 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
Jiri Pechanec
005f663840 [ci] Use unified flaky flag for Db2 2024-03-01 11:38:43 +01:00
Chris Cranford
c605054f14 DBZ-7510 Reformat, add to not fail flaky tests 2024-03-01 11:24:30 +01:00
Chris Cranford
917634e9dc DBZ-7510 Use Experimental ByteBuddy Flag on Java EA builds 2024-03-01 11:24:30 +01:00
Chris Cranford
ef706d2b4c DBZ-7510 Add Informix to Java Outreach 2024-03-01 11:24:30 +01:00
ani-sha
04061eeaf5 DBZ-6434 Handle NPE due to missing credentials 2024-03-01 10:25:01 +01:00
Chris Cranford
d359c0cd82 DBZ-7579 Exclude OpenLogReplicator dependencies 2024-03-01 08:42:22 +01:00
akula
cd4c6958bd DBZ-7512 Support arbitrary payloads with outbox event router on
debezium server

1. Support for string and binary serialization formats on debezium api.
2. Allow configuring separate key and value formats on embedded engine.

This change fixes the following issue using outbox event router on
embedded engine:

Outbox event router supports arbitrary payload formats with
BinaryDataConverter as the value.converter which passes payload
transparently. However this is  currently not supported with the
embedded engine which handles message conversion using value.format to
specify the format.

In addition, when we want to pass payload transparently, it makes
sense to also pass aggregateid i.e. the event key transparently. The
default outbox table configuration specifies aggregateid as a
varchar which is also not supported by embedded engine.
2024-03-01 08:23:47 +01:00
Jiri Pechanec
6564579423 DBZ-7581 Log exception and stack trace 2024-03-01 08:14:16 +01:00
Lars M Johansson
a7415cc869 [docs] adding name and alias 2024-02-29 13:29:16 -05:00
Lars M Johansson
9ca4873fab [docs] adjusting name and alias 2024-02-29 13:29:16 -05:00
Vojtech Juranek
6cc68fdfe3 DBZ-7568 Use default engine wait time in all async engine latches 2024-02-29 13:44:54 +01:00
Vojtech Juranek
6928cd775c DBZ-7568 Switch waitTimeForEngine() to seconds and increase wait default time 2024-02-29 13:44:54 +01:00
James Johnston
3d93516b53 DBZ-5071 Create new RowValueConstructorChunkQueryBuilder
The default query builder has maximum SQL compatibility, but the query
plans it makes are not always optimal, especially in the case of
multi-column keys.  For example, PostgreSQL is unable to to effectively
create a query plan that does index scanning when faced with such a
query.

Some databases support the concept of row value constructors.  In
these cases, we can use these as an alternative to make a much more
simple and easier to understand query.  Not only is it easier for
humans to understand, but most importantly, the query planner also gets
the hint and finally uses the relevant multi-column index!  This commit
starts out with support for PostgreSQL and MySQL.
2024-02-29 13:36:26 +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
James Johnston
9352957244 DBZ-5071 Refactor buildChunkQuery into ChunkQueryBuilder
This commit prepares the way for further dialect-specific improvements
to incremental snapshot chunk queries by extracting the buildChunkQuery
and related functions behind a new ChunkQueryBuilder interface.  The
implementation is mostly in an AbstractChunkQueryBuilder, and a
DefaultChunkQueryBuilder inherits from that.

The chunk builders are instantiated by JdbcConnection via a new
chunkQueryBuilder function.  The base class uses the default, but
derived JdbcConnection classes could use a dialect-specific chunk query
builder.
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
Jiri Pechanec
20e5693336 [ci] Use globally configured flag 2024-02-29 13:30:23 +01:00
Vojtech Juranek
b71c561cf2 [ci] Ignore flaky tests on Informix connector 2024-02-29 13:30:23 +01:00
Jiri Pechanec
4b91a71ea9 DBZ-7574 Upgrade Kafka to 3.7.0 2024-02-29 12:53:45 +01:00
ani-sha
cb81f75481 DBZ-6858 Add suggestions from code review 2024-02-29 11:55:51 +01:00
ani-sha
7feeed855f DBZ-6858 Simplify metadata logic 2024-02-29 11:55:51 +01:00
ani-sha
3bb5cb4c8e DBZ-6858 Use SignalMetadata class to provide open/close timestamps 2024-02-29 11:55:51 +01:00
ani-sha
f8cd1a6353 DBZ-6858 Timestamp metadata for watermarking signals 2024-02-29 11:55:51 +01:00
Chris Cranford
c83c3c3922 DBZ-7582 Correctly serialize toasted HSTORE values when unavailable 2024-02-29 11:18:58 +01:00