Compare commits

...

10 Commits

Author SHA1 Message Date
Jiri Pechanec
23b8aaa56f DBZ-8219 Define ehcache/JAXB version globally
Some checks are pending
Build Debezium (Push) / MySQL ${{ matrix.version-mysql-server }} - ${{ matrix.profile }} (mysql-ci, 8.4) (push) Blocked by required conditions
Build Debezium (Push) / MySQL ${{ matrix.version-mysql-server }} - ${{ matrix.profile }} (mysql-ci, 9.0) (push) Blocked by required conditions
Build Debezium (Push) / MySQL ${{ matrix.version-mysql-server }} - ${{ matrix.profile }} (mysql-ci-gtids, 8.0) (push) Blocked by required conditions
Build Debezium (Push) / MySQL ${{ matrix.version-mysql-server }} - ${{ matrix.profile }} (mysql-ci-gtids, 8.4) (push) Blocked by required conditions
Build Debezium (Push) / MySQL ${{ matrix.version-mysql-server }} - ${{ matrix.profile }} (mysql-ci-gtids, 9.0) (push) Blocked by required conditions
Build Debezium (Push) / MySQL ${{ matrix.version-mysql-server }} - ${{ matrix.profile }} (mysql-ci-percona, 8.0) (push) Blocked by required conditions
Build Debezium (Push) / MySQL ${{ matrix.version-mysql-server }} - ${{ matrix.profile }} (mysql-ci-percona, 8.4) (push) Blocked by required conditions
Build Debezium (Push) / MySQL ${{ matrix.version-mysql-server }} - ${{ matrix.profile }} (mysql-ci-percona, 9.0) (push) Blocked by required conditions
Build Debezium (Push) / MySQL ${{ matrix.version-mysql-server }} - ${{ matrix.profile }} (mysql-ci-ssl, 8.0) (push) Blocked by required conditions
Build Debezium (Push) / MySQL ${{ matrix.version-mysql-server }} - ${{ matrix.profile }} (mysql-ci-ssl, 8.4) (push) Blocked by required conditions
Build Debezium (Push) / MySQL ${{ matrix.version-mysql-server }} - ${{ matrix.profile }} (mysql-ci-ssl, 9.0) (push) Blocked by required conditions
Build Debezium (Push) / MariaDB - ${{ matrix.profile }} (mysql-ci) (push) Blocked by required conditions
Build Debezium (Push) / MariaDB - ${{ matrix.profile }} (mysql-ci-gtids) (push) Blocked by required conditions
Build Debezium (Push) / PostgreSQL - ${{ matrix.profile }} (assembly,postgres-12) (push) Blocked by required conditions
Build Debezium (Push) / PostgreSQL - ${{ matrix.profile }} (assembly,postgres-16,pgoutput-decoder) (push) Blocked by required conditions
Build Debezium (Push) / SQL Server (push) Blocked by required conditions
Build Debezium (Push) / Oracle (push) Blocked by required conditions
Build Debezium (Push) / Quarkus Outbox Extension (push) Blocked by required conditions
Build Debezium (Push) / REST Extension (push) Blocked by required conditions
Build Debezium (Push) / Schema Generator (push) Blocked by required conditions
Build Debezium (Push) / Testing Module (push) Blocked by required conditions
Build Debezium (Push) / Storage Module (push) Blocked by required conditions
Build Debezium (Push) / Cassandra (push) Blocked by required conditions
Build Debezium (Push) / Db2 (push) Blocked by required conditions
Build Debezium (Push) / Informix (push) Blocked by required conditions
Build Debezium (Push) / IBMi (push) Blocked by required conditions
Build Debezium (Push) / Vitess (push) Blocked by required conditions
Build Debezium (Push) / Spanner (push) Blocked by required conditions
Build Debezium (Push) / JDBC (push) Blocked by required conditions
Build Debezium (Push) / Debezium Server (push) Blocked by required conditions
2024-09-12 18:50:20 -04:00
Chris Cranford
734a16233a DBZ-8219 Fix JAXB xml parsing of Ehcache configuration 2024-09-12 18:50:20 -04:00
Chris Cranford
d38a01412f DBZ-8226 Bump MariaDB to 11.4.3 2024-09-12 07:01:32 +02:00
Ondrej Babec
7d580a432c [ci] Fixup sqlserver container commands 2024-09-11 13:50:14 +02:00
roldanbob
9d82239c65 DBZ-8227 Fix unrelated downstream Unknown ID errors in signaling xrefs 2024-09-10 23:21:00 -04:00
roldanbob
35054ea604 DBZ-8227 Adds TP admonition for 2.7 release 2024-09-10 23:21:00 -04:00
roldanbob
ff09e45d43 DBZ-8220 Update source connectr overview; add sink overview & new nav link 2024-09-10 18:48:07 -04:00
roldanbob
0602adac21 DBZ-8220 Move connector docs to separate source & sink headings in nav 2024-09-10 18:48:07 -04:00
zalmane
8673a425ff DBZ-8217 fix wrong log message 2024-09-09 12:13:43 +02:00
Jiri Pechanec
d1c70d64c9 DBZ-8209 Support for unkown roles and users in REVOKE 2024-09-09 14:59:15 +05:30
16 changed files with 70 additions and 38 deletions

View File

@ -146,7 +146,7 @@
Specify the properties for the various Docker containers. Specify the properties for the various Docker containers.
--> -->
<mariadb.server.image.source>mariadb</mariadb.server.image.source> <mariadb.server.image.source>mariadb</mariadb.server.image.source>
<version.mariadb.server>11.1.2</version.mariadb.server> <version.mariadb.server>11.4.3</version.mariadb.server>
<mariadb.user>mysqluser</mariadb.user> <mariadb.user>mysqluser</mariadb.user>
<mariadb.password>mysqlpw</mariadb.password> <mariadb.password>mysqlpw</mariadb.password>
<mariadb.replica.user>mysqlreplica</mariadb.replica.user> <mariadb.replica.user>mysqlreplica</mariadb.replica.user>
@ -168,7 +168,7 @@
<docker.dbs>debezium/mariadb-server-test-database</docker.dbs> <docker.dbs>debezium/mariadb-server-test-database</docker.dbs>
<docker.filter>${docker.dbs}</docker.filter> <docker.filter>${docker.dbs}</docker.filter>
<docker.skip>false</docker.skip> <docker.skip>false</docker.skip>
<docker.initimage>rm -f /etc/localtime; ln -s /usr/share/zoneinfo/US/Samoa /etc/localtime</docker.initimage> <docker.initimage>rm -f /etc/localtime; ln -s /usr/share/zoneinfo/Pacific/Samoa /etc/localtime</docker.initimage>
</properties> </properties>
<build> <build>
<plugins> <plugins>

View File

@ -92,15 +92,11 @@
<artifactId>ehcache</artifactId> <artifactId>ehcache</artifactId>
<version>${version.ehcache}</version> <version>${version.ehcache}</version>
</dependency> </dependency>
<!-- Ehcache JAXB implementation dependency -->
<dependency> <dependency>
<groupId>com.sun.xml.bind</groupId> <groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-core</artifactId> <artifactId>jaxb-runtime</artifactId>
<version>2.3.0</version> <version>${version.jaxb.implementation}</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.1</version>
</dependency> </dependency>
<!-- Testing --> <!-- Testing -->
@ -198,7 +194,6 @@
<adapter.name>logminer</adapter.name> <adapter.name>logminer</adapter.name>
<log.mining.buffer.type.name>memory</log.mining.buffer.type.name> <log.mining.buffer.type.name>memory</log.mining.buffer.type.name>
<log.mining.read.only.mode>false</log.mining.read.only.mode> <log.mining.read.only.mode>false</log.mining.read.only.mode>
<version.ehcache>3.9.6</version.ehcache>
<version.oracle.server>19.3.0</version.oracle.server> <version.oracle.server>19.3.0</version.oracle.server>
<protobuf.output.directory>${project.basedir}/generated-sources</protobuf.output.directory> <protobuf.output.directory>${project.basedir}/generated-sources</protobuf.output.directory>

View File

@ -117,6 +117,10 @@ private CacheManager createCacheManager(OracleConnectorConfig connectorConfig) {
// Create the full XML configuration based on configuration template // Create the full XML configuration based on configuration template
final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// Required for propagating namespace info
factory.setNamespaceAware(true);
final DocumentBuilder builder = factory.newDocumentBuilder(); final DocumentBuilder builder = factory.newDocumentBuilder();
final String xmlData = getConfigurationWithSubstitutions(ehcacheConfig); final String xmlData = getConfigurationWithSubstitutions(ehcacheConfig);

View File

@ -1,5 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<config xmlns='http://www.ehcache.org/v3'> <config xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://www.ehcache.org/v3' xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.0.xsd">
<default-serializers>
<serializer type="io.debezium.connector.oracle.logminer.processor.ehcache.EhcacheTransaction">
io.debezium.connector.oracle.logminer.processor.ehcache.serialization.EhcacheTransactionSerializer
</serializer>
<serializer type="io.debezium.connector.oracle.logminer.events.LogMinerEvent">
io.debezium.connector.oracle.logminer.processor.ehcache.serialization.LogMinerEventSerializer
</serializer>
</default-serializers>
<!-- <!--
Defines the ehcache global configuration Defines the ehcache global configuration
@ -43,13 +52,4 @@
${log.mining.buffer.ehcache.events.config} ${log.mining.buffer.ehcache.events.config}
</cache> </cache>
<default-serializers>
<serializer type="io.debezium.connector.oracle.logminer.processor.ehcache.EhcacheTransaction">
io.debezium.connector.oracle.logminer.processor.ehcache.serialization.EhcacheTransactionSerializer
</serializer>
<serializer type="io.debezium.connector.oracle.logminer.events.LogMinerEvent">
io.debezium.connector.oracle.logminer.processor.ehcache.serialization.LogMinerEventSerializer
</serializer>
</default-serializers>
</config> </config>

View File

@ -328,7 +328,7 @@ protected StructGenerator createValueGenerator(Schema schema, TableId tableId, L
result.put(fields[i], value); result.put(fields[i], value);
} }
catch (final Exception e) { catch (final Exception e) {
Column col = columns.get(i); Column col = columnsThatShouldBeAdded.get(i);
String message = "Failed to properly convert data value for '{}.{}' of type {}"; String message = "Failed to properly convert data value for '{}.{}' of type {}";
if (eventConvertingFailureHandlingMode == null) { if (eventConvertingFailureHandlingMode == null) {
Loggings.logErrorAndTraceRecord(LOGGER, row, Loggings.logErrorAndTraceRecord(LOGGER, row,

View File

@ -1719,15 +1719,16 @@ renameUser
; ;
revokeStatement revokeStatement
: REVOKE privelegeClause (',' privelegeClause)* : REVOKE ifExists? (privelegeClause | uid) (',' privelegeClause | uid)*
ON ON
privilegeObject=(TABLE | FUNCTION | PROCEDURE)? privilegeObject=(TABLE | FUNCTION | PROCEDURE)?
privilegeLevel privilegeLevel
FROM userName (',' userName)* #detailRevoke FROM userName (',' userName)* (IGNORE UNKNOWN USER)? #detailRevoke
| REVOKE ALL PRIVILEGES? ',' GRANT OPTION | REVOKE ifExists? ALL PRIVILEGES? ',' GRANT OPTION
FROM userName (',' userName)* #shortRevoke FROM userName (',' userName)* (IGNORE UNKNOWN USER)? #shortRevoke
| REVOKE (userName | uid) (',' (userName | uid))* | REVOKE ifExists? (userName | uid) (',' (userName | uid))*
FROM (userName | uid) (',' (userName | uid))* #roleRevoke FROM (userName | uid) (',' (userName | uid))*
(IGNORE UNKNOWN USER)? #roleRevoke
; ;
revokeProxy revokeProxy

View File

@ -99,6 +99,8 @@ REVOKE reader FROM 'mysqluser'@'localhost'
REVOKE reader FROM topreader REVOKE reader FROM topreader
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'retool'@ REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'retool'@
REVOKE `cloudsqlsuperuser`@`%` FROM `sarmonitoring`@`10.90.29.%` REVOKE `cloudsqlsuperuser`@`%` FROM `sarmonitoring`@`10.90.29.%`
REVOKE IF EXISTS SELECT ON test.t1 FROM jerry@localhost;
REVOKE IF EXISTS Bogus ON test FROM jerry@localhost IGNORE UNKNOWN USER;
-- MariaDB -- MariaDB
GRANT BINLOG_MONITOR ON *.* TO 'mysqluser'@'localhost' GRANT BINLOG_MONITOR ON *.* TO 'mysqluser'@'localhost'

View File

@ -45,7 +45,7 @@ public void initialize() throws InterruptedException {
try { try {
container.copyFileToContainer(Transferable.of(Files.readAllBytes(initScript)), DB_INIT_SCRIPT_PATH_CONTAINER); container.copyFileToContainer(Transferable.of(Files.readAllBytes(initScript)), DB_INIT_SCRIPT_PATH_CONTAINER);
container.execInContainer( container.execInContainer(
"/opt/mssql-tools/bin/sqlcmd", "-U", "sa", "-P", DATABASE_SQLSERVER_SA_PASSWORD, "-i", DB_INIT_SCRIPT_PATH_CONTAINER); "/opt/mssql-tools18/bin/sqlcmd", "-U", "sa", "-P", DATABASE_SQLSERVER_SA_PASSWORD, "-i", DB_INIT_SCRIPT_PATH_CONTAINER, "-C", "-N", "o");
} }
catch (IOException e) { catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);

View File

@ -54,7 +54,7 @@ public void initialize() throws InterruptedException {
ocp.pods().inNamespace(project).withName(pod.getMetadata().getName()) ocp.pods().inNamespace(project).withName(pod.getMetadata().getName())
.file(DB_INIT_SCRIPT_PATH_CONTAINER) .file(DB_INIT_SCRIPT_PATH_CONTAINER)
.upload(initScript); .upload(initScript);
ocpUtils.executeCommand(deployment, project, true, "/opt/mssql-tools/bin/sqlcmd", "-U", "sa", "-P", DATABASE_SQLSERVER_SA_PASSWORD, "-i", ocpUtils.executeCommand(deployment, project, true, "/opt/mssql-tools18/bin/sqlcmd", "-U", "sa", "-P", DATABASE_SQLSERVER_SA_PASSWORD, "-i",
DB_INIT_SCRIPT_PATH_CONTAINER); DB_INIT_SCRIPT_PATH_CONTAINER, "-C", "-N", "o");
} }
} }

View File

@ -9,7 +9,7 @@
** xref:configuration/topic-auto-create-config.adoc[Customizing Topic Auto-Creation] ** xref:configuration/topic-auto-create-config.adoc[Customizing Topic Auto-Creation]
** xref:configuration/signalling.adoc[Sending Signals to Debezium] ** xref:configuration/signalling.adoc[Sending Signals to Debezium]
** xref:configuration/notification.adoc[Receive notifications from Debezium] ** xref:configuration/notification.adoc[Receive notifications from Debezium]
* Connectors * Source Connectors
** xref:connectors/index.adoc[Overview] ** xref:connectors/index.adoc[Overview]
** xref:connectors/mysql.adoc[MySQL] ** xref:connectors/mysql.adoc[MySQL]
** xref:connectors/mariadb.adoc[MariaDB] ** xref:connectors/mariadb.adoc[MariaDB]
@ -21,8 +21,10 @@
** xref:connectors/cassandra.adoc[Cassandra] ** xref:connectors/cassandra.adoc[Cassandra]
** xref:connectors/vitess.adoc[Vitess] ** xref:connectors/vitess.adoc[Vitess]
** xref:connectors/spanner.adoc[Spanner] ** xref:connectors/spanner.adoc[Spanner]
** xref:connectors/jdbc.adoc[JDBC]
** xref:connectors/informix.adoc[Informix] ** xref:connectors/informix.adoc[Informix]
* Sink Connectors
** xref:connectors/index-sink.adoc[Overview]
** xref:connectors/jdbc.adoc[JDBC]
* Transformations * Transformations
** xref:transformations/index.adoc[Overview] ** xref:transformations/index.adoc[Overview]
** xref:transformations/topic-routing.adoc[Topic Routing] ** xref:transformations/topic-routing.adoc[Topic Routing]

View File

@ -0,0 +1,11 @@
= Sink Connectors
{prodname} provides sink connectors that can consume events from sources such as Apache Kafka topics.
A sink connector standardizes the format of the data, and then persists the event data to a configured sink repository.
Other systems, applications, or users can then access the events from the data sink.
Because the sink connector applies a consistent structure to the event data that it consumes, downstream applications that read from the data sink can more easily interpret and process that data.
Currently, {prodname} provides the following sink connectors:
* xref:connectors/jdbc.adoc[JDBC]

View File

@ -1,6 +1,7 @@
= Connectors = Source Connectors
{prodname}'s goal is to build up a library of connectors that capture changes from a variety of database management systems and produce events with very similar structures, making it far easier for your applications to consume and respond to the events regardless of where the changes originated. {prodname} provides a growing library of source connectors that capture changes from a variety of database management systems.
Each connector produces change events with very similar structures, making it easy for your applications to consume and respond to events, regardless of their origin.
We currently have the following connectors: We currently have the following connectors:
@ -13,7 +14,6 @@ We currently have the following connectors:
* xref:connectors/cassandra.adoc[Cassandra] * xref:connectors/cassandra.adoc[Cassandra]
* xref:connectors/vitess.adoc[Vitess] (Incubating) * xref:connectors/vitess.adoc[Vitess] (Incubating)
* xref:connectors/spanner.adoc[Spanner] * xref:connectors/spanner.adoc[Spanner]
* xref:connectors/jdbc.adoc[JDBC] (Incubating)
* xref:connectors/informix.adoc[Informix] (Incubating) * xref:connectors/informix.adoc[Informix] (Incubating)
[NOTE] [NOTE]

View File

@ -24,6 +24,18 @@ ifdef::community[]
toc::[] toc::[]
endif::community[] endif::community[]
ifdef::product[]
[IMPORTANT]
====
The {prodname} connector for MariaDB is a Technology Preview feature only.
Technology Preview features are not supported with Red{nbsp}Hat production service level agreements (SLAs) and might not be functionally complete.
Red{nbsp}Hat does not recommend using them in production.
These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process.
For more information about the support scope of Red{nbsp}Hat Technology Preview features, see link:https://access.redhat.com/support/offerings/techpreview/[Technology Preview Features Support Scope].
====
endif::product[]
include::{partialsdir}/modules/all-connectors/shared-mariadb-mysql.adoc[leveloffset=+1,tags=mariadb-mysql-intro] include::{partialsdir}/modules/all-connectors/shared-mariadb-mysql.adoc[leveloffset=+1,tags=mariadb-mysql-intro]
// Type: assembly // Type: assembly

View File

@ -1,4 +1,4 @@
To initiate an incremental snapshot, you can send an {link-prefix}:{link-signalling}#debezium-signaling-ad-hoc-snapshots[ad hoc snapshot signal] to the signaling {data-collection} on the source database. To initiate an incremental snapshot, you can send an {link-prefix}:{link-signalling}#debezium-signaling-ad-hoc-incremental-snapshots[ad hoc snapshot signal] to the signaling {data-collection} on the source database.
You submit a signal to the signaling {data-collection} by using the MongoDB `insert()` method. You submit a signal to the signaling {data-collection} by using the MongoDB `insert()` method.

View File

@ -1,4 +1,4 @@
To initiate an incremental snapshot, you can send an {link-prefix}:{link-signalling}#debezium-signaling-ad-hoc-snapshots[ad hoc snapshot signal] to the signaling {data-collection} on the source database. To initiate an incremental snapshot, you can send an {link-prefix}:{link-signalling}#debezium-signaling-ad-hoc-incremental-snapshots[ad hoc snapshot signal] to the signaling {data-collection} on the source database.
You submit snapshot signals as SQL `INSERT` queries. You submit snapshot signals as SQL `INSERT` queries.
After {prodname} detects the change in the signaling {data-collection}, it reads the signal, and runs the requested snapshot operation. After {prodname} detects the change in the signaling {data-collection}, it reads the signal, and runs the requested snapshot operation.

View File

@ -167,6 +167,11 @@
<version.infinispan>15.0.5.Final</version.infinispan> <version.infinispan>15.0.5.Final</version.infinispan>
<version.infinispan.protostream>5.0.4.Final</version.infinispan.protostream> <version.infinispan.protostream>5.0.4.Final</version.infinispan.protostream>
<!-- EhCache Specific Versions -->
<version.ehcache>3.9.6</version.ehcache>
<!-- Must be aligned with the version.jaxb of the JAXB-API -->
<version.jaxb.implementation>2.3.1</version.jaxb.implementation>
<!-- RocketMQ version for RocketMQ storage and Server sink --> <!-- RocketMQ version for RocketMQ storage and Server sink -->
<version.rocketmq>5.1.4</version.rocketmq> <version.rocketmq>5.1.4</version.rocketmq>