DBZ-7257 Fix regression in parsin Oracle 12 version

This commit is contained in:
Vojtech Juranek 2023-12-14 17:27:35 +01:00 committed by Vojtěch Juránek
parent 043f11e261
commit 676876689c
2 changed files with 27 additions and 2 deletions

View File

@ -15,9 +15,9 @@
*/ */
public class OracleDatabaseVersion { public class OracleDatabaseVersion {
private final static Pattern VERSION_PATTERN = Pattern 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 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 major;
private final int maintenance; private final int maintenance;

View File

@ -9,6 +9,8 @@
import org.junit.Test; import org.junit.Test;
import io.debezium.doc.FixFor;
/** /**
* Test paring of various Oracle version strings. * Test paring of various Oracle version strings.
* *
@ -16,6 +18,22 @@
*/ */
public class OracleDatabaseVersionTest { 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 @Test
public void shouldParseOracle19c() throws Exception { 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"; 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); 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 @Test
public void shouldParseOracle23c() throws Exception { public void shouldParseOracle23c() throws Exception {
String banner = "Oracle Database 23c Enterprise Edition Release 23.0.0.0.0\nVersion 23.4.0.23.10"; String banner = "Oracle Database 23c Enterprise Edition Release 23.0.0.0.0\nVersion 23.4.0.23.10";