From 676876689c7faeaa12115c453e628b6bf1497e0e Mon Sep 17 00:00:00 2001 From: Vojtech Juranek Date: Thu, 14 Dec 2023 17:27:35 +0100 Subject: [PATCH] DBZ-7257 Fix regression in parsin Oracle 12 version --- .../oracle/OracleDatabaseVersion.java | 4 +-- .../oracle/OracleDatabaseVersionTest.java | 25 +++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/debezium-connector-oracle/src/main/java/io/debezium/connector/oracle/OracleDatabaseVersion.java b/debezium-connector-oracle/src/main/java/io/debezium/connector/oracle/OracleDatabaseVersion.java index 40b422c84..86b6c2c75 100644 --- a/debezium-connector-oracle/src/main/java/io/debezium/connector/oracle/OracleDatabaseVersion.java +++ b/debezium-connector-oracle/src/main/java/io/debezium/connector/oracle/OracleDatabaseVersion.java @@ -15,9 +15,9 @@ */ public class OracleDatabaseVersion { private final static Pattern VERSION_PATTERN = Pattern - .compile("Oracle Database.*\\nVersion ([0-9]*)\\.([0-9]*)\\.([0-9]*)\\.([0-9]*)\\.([0-9]*)"); + .compile("(?:.*)(?:Release )([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)(?:.*)"); private final static Pattern VERSION_18_1_PATTERN = Pattern - .compile("(?:.*)(?:\\- Production(?:\\r\\n|\\r|\\n)(?:Version ))([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)"); + .compile("^Oracle Database.*(?:\\r\\n|\\r|\\n)^(?:Version )([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)", Pattern.MULTILINE); private final int major; private final int maintenance; diff --git a/debezium-connector-oracle/src/test/java/io/debezium/connector/oracle/OracleDatabaseVersionTest.java b/debezium-connector-oracle/src/test/java/io/debezium/connector/oracle/OracleDatabaseVersionTest.java index e43c075d4..9714e2cac 100644 --- a/debezium-connector-oracle/src/test/java/io/debezium/connector/oracle/OracleDatabaseVersionTest.java +++ b/debezium-connector-oracle/src/test/java/io/debezium/connector/oracle/OracleDatabaseVersionTest.java @@ -9,6 +9,8 @@ import org.junit.Test; +import io.debezium.doc.FixFor; + /** * Test paring of various Oracle version strings. * @@ -16,6 +18,22 @@ */ public class OracleDatabaseVersionTest { + @Test + @FixFor("DBZ-7257") + public void shouldParseOracle11g() throws Exception { + String banner = "Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production"; + OracleDatabaseVersion version = OracleDatabaseVersion.parse(banner); + assertOracleVersion(version, 11, 2, 0, 4, 0, banner); + } + + @Test + @FixFor("DBZ-7257") + public void shouldParseOracle12c() throws Exception { + String banner = "Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production"; + OracleDatabaseVersion version = OracleDatabaseVersion.parse(banner); + assertOracleVersion(version, 12, 1, 0, 2, 0, banner); + } + @Test public void shouldParseOracle19c() throws Exception { String banner = "Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production\nVersion 19.3.0.0.0"; @@ -30,6 +48,13 @@ public void shouldParseOracle21c() throws Exception { assertOracleVersion(version, 21, 3, 0, 0, 0, banner); } + @Test + public void shouldParseOracle23cFree() throws Exception { + String banner = "Oracle Database 23c Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free\nVersion 23.3.0.23.09"; + OracleDatabaseVersion version = OracleDatabaseVersion.parse(banner); + assertOracleVersion(version, 23, 3, 0, 23, 9, banner); + } + @Test public void shouldParseOracle23c() throws Exception { String banner = "Oracle Database 23c Enterprise Edition Release 23.0.0.0.0\nVersion 23.4.0.23.10";