diff --git a/jans-orm/sql/src/main/java/io/jans/orm/sql/operation/impl/SqlConnectionProvider.java b/jans-orm/sql/src/main/java/io/jans/orm/sql/operation/impl/SqlConnectionProvider.java index 0380c672ee0..8f1bd938d9b 100644 --- a/jans-orm/sql/src/main/java/io/jans/orm/sql/operation/impl/SqlConnectionProvider.java +++ b/jans-orm/sql/src/main/java/io/jans/orm/sql/operation/impl/SqlConnectionProvider.java @@ -79,6 +79,10 @@ public class SqlConnectionProvider { private PasswordEncryptionMethod passwordEncryptionMethod; private String dbType; + private String dbVersion; + + private boolean mariaDb = false; + private String schemaName; private SQLTemplates sqlTemplates; @@ -88,6 +92,7 @@ public class SqlConnectionProvider { private Map> tableColumnsMap; private Map tableEnginesMap = new HashMap<>(); + protected SqlConnectionProvider() { } @@ -192,6 +197,10 @@ protected void init() throws Exception { try (Connection con = this.poolingDataSource.getConnection()) { DatabaseMetaData databaseMetaData = con.getMetaData(); this.dbType = databaseMetaData.getDatabaseProductName().toLowerCase(); + this.dbVersion = databaseMetaData.getDatabaseProductVersion().toLowerCase(); + if ((this.dbVersion != null) && this.dbVersion.toLowerCase().contains("mariadb")) { + this.mariaDb = true; + } LOG.debug("Database product name: '{}'", dbType); loadTableMetaData(databaseMetaData, con); } catch (Exception ex) { @@ -231,7 +240,7 @@ private void loadTableMetaData(DatabaseMetaData databaseMetaData, Connection con String columTypeName = columnResultSet.getString("TYPE_NAME").toLowerCase(); String remark = columnResultSet.getString("REMARKS"); - if ("mariadb".equalsIgnoreCase(engineType) && "longtext".equalsIgnoreCase(columTypeName) && "json".equalsIgnoreCase(remark)) { + if (mariaDb && "longtext".equalsIgnoreCase(columTypeName) && "json".equalsIgnoreCase(remark)) { columTypeName = JSON_TYPE_NAME; } tableColumns.put(columnName, columTypeName);