From bc33e059062b90d167573c421a216930cf075216 Mon Sep 17 00:00:00 2001 From: Robin Bygrave Date: Thu, 11 Feb 2021 17:20:28 +1300 Subject: [PATCH] #2158 - Oracle - automatic platform selection doesn't select older Oracle11Platform via jdbc metadata major version --- .../ebeaninternal/server/core/DatabasePlatformFactory.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/DatabasePlatformFactory.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/DatabasePlatformFactory.java index 18c1051a0..55cf5b19a 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/core/DatabasePlatformFactory.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/DatabasePlatformFactory.java @@ -157,7 +157,7 @@ public class DatabasePlatformFactory { final int minorVersion = metaData.getDatabaseMinorVersion(); if (dbProductName.contains("oracle")) { - return new OraclePlatform(); + return oracleVersion(majorVersion); } else if (dbProductName.contains("microsoft")) { throw new IllegalArgumentException("For SqlServer please explicitly choose either sqlserver16 or sqlserver17 as the platform via DatabaseConfig.setDatabasePlatformName. Refer to issue #1340 for more details"); } else if (dbProductName.contains("h2")) { @@ -188,6 +188,10 @@ public class DatabasePlatformFactory { return new DatabasePlatform(); } + private DatabasePlatform oracleVersion(int majorVersion) { + return majorVersion < 12 ? new Oracle11Platform() : new OraclePlatform(); + } + private DatabasePlatform mysqlVersion(int majorVersion, int minorVersion) { if (majorVersion <= 5 && minorVersion <= 5) { return new MySql55Platform();