From 1190389edc2fe8fa2684ccd5544d494ebd7dba39 Mon Sep 17 00:00:00 2001 From: mfvitale Date: Tue, 2 Apr 2024 12:52:31 +0200 Subject: [PATCH] DBZ-7718 Support table name escaping in BlockingSnapshotIT --- .../java/io/debezium/connector/mysql/BlockingSnapshotIT.java | 5 +++++ .../io/debezium/connector/oracle/BlockingSnapshotIT.java | 5 +++++ .../io/debezium/connector/postgresql/BlockingSnapshotIT.java | 5 +++++ .../io/debezium/connector/sqlserver/BlockingSnapshotIT.java | 5 +++++ .../io/debezium/pipeline/AbstractBlockingSnapshotTest.java | 4 +++- 5 files changed, 23 insertions(+), 1 deletion(-) diff --git a/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/BlockingSnapshotIT.java b/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/BlockingSnapshotIT.java index b4a1694aa..450633b3b 100644 --- a/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/BlockingSnapshotIT.java +++ b/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/BlockingSnapshotIT.java @@ -137,6 +137,11 @@ protected String signalTableName() { return tableNameId("debezium_signal").toQuotedString('`'); } + @Override + protected String escapedTableDataCollectionId() { + return String.format("\\\\\"%s\\\\\".\\\\\"%s\\\\\"", tableNameId().catalog(), tableNameId().table()); + } + @Override protected String signalTableNameSanitized() { return DATABASE.qualifiedTableName("debezium_signal"); diff --git a/debezium-connector-oracle/src/test/java/io/debezium/connector/oracle/BlockingSnapshotIT.java b/debezium-connector-oracle/src/test/java/io/debezium/connector/oracle/BlockingSnapshotIT.java index 818d290f4..0737c65e7 100644 --- a/debezium-connector-oracle/src/test/java/io/debezium/connector/oracle/BlockingSnapshotIT.java +++ b/debezium-connector-oracle/src/test/java/io/debezium/connector/oracle/BlockingSnapshotIT.java @@ -110,6 +110,11 @@ protected String tableDataCollectionId() { return TestHelper.getDatabaseName() + ".DEBEZIUM.A"; } + @Override + protected String escapedTableDataCollectionId() { + return "\\\"" + TestHelper.getDatabaseName() + "\\\".\\\"DEBEZIUM\\\".\\\"A\\\""; + } + @Override protected List tableDataCollectionIds() { return List.of(TestHelper.getDatabaseName() + ".DEBEZIUM.A", TestHelper.getDatabaseName() + ".DEBEZIUM.B"); diff --git a/debezium-connector-postgres/src/test/java/io/debezium/connector/postgresql/BlockingSnapshotIT.java b/debezium-connector-postgres/src/test/java/io/debezium/connector/postgresql/BlockingSnapshotIT.java index a657b87fd..d4731ed47 100644 --- a/debezium-connector-postgres/src/test/java/io/debezium/connector/postgresql/BlockingSnapshotIT.java +++ b/debezium-connector-postgres/src/test/java/io/debezium/connector/postgresql/BlockingSnapshotIT.java @@ -112,6 +112,11 @@ protected String signalTableName() { return "s1.debezium_signal"; } + @Override + protected String escapedTableDataCollectionId() { + return "\\\"s1\\\".\\\"a\\\""; + } + @Override protected String connector() { return "postgres"; diff --git a/debezium-connector-sqlserver/src/test/java/io/debezium/connector/sqlserver/BlockingSnapshotIT.java b/debezium-connector-sqlserver/src/test/java/io/debezium/connector/sqlserver/BlockingSnapshotIT.java index ca86c3d42..5c801ee13 100644 --- a/debezium-connector-sqlserver/src/test/java/io/debezium/connector/sqlserver/BlockingSnapshotIT.java +++ b/debezium-connector-sqlserver/src/test/java/io/debezium/connector/sqlserver/BlockingSnapshotIT.java @@ -88,6 +88,11 @@ protected String signalTableName() { return "dbo.debezium_signal"; } + @Override + protected String escapedTableDataCollectionId() { + return "\\\"testDB1\\\".\\\"dbo\\\".\\\"a\\\""; + } + @Override protected Configuration.Builder config() { return TestHelper.defaultConfig() diff --git a/debezium-embedded/src/test/java/io/debezium/pipeline/AbstractBlockingSnapshotTest.java b/debezium-embedded/src/test/java/io/debezium/pipeline/AbstractBlockingSnapshotTest.java index c0bb8c27d..bbd1c64c4 100644 --- a/debezium-embedded/src/test/java/io/debezium/pipeline/AbstractBlockingSnapshotTest.java +++ b/debezium-embedded/src/test/java/io/debezium/pipeline/AbstractBlockingSnapshotTest.java @@ -57,6 +57,8 @@ public abstract class AbstractBlockingSnapshotTest extends AbstractSnapshotTest @Override protected abstract String tableName(); + protected abstract String escapedTableDataCollectionId(); + @Override protected abstract String connector(); @@ -202,7 +204,7 @@ public void executeBlockingSnapshotWithEscapedCollectionName() throws Exception SourceRecords consumedRecordsByTopic = consumeRecordsByTopic(ROW_COUNT * 2, 10); assertRecordsFromSnapshotAndStreamingArePresent(ROW_COUNT * 2, consumedRecordsByTopic); - sendAdHocSnapshotSignalWithAdditionalConditionWithSurrogateKey("", "", BLOCKING, "\\\"s1\\\".\\\"a\\\""); + sendAdHocSnapshotSignalWithAdditionalConditionWithSurrogateKey("", "", BLOCKING, escapedTableDataCollectionId()); waitForLogMessage("Snapshot completed", AbstractSnapshotChangeEventSource.class);