Skip to content

Commit

Permalink
0004339: Oracle: Version 12.2 supports 128 character names for tables,
Browse files Browse the repository at this point in the history
columns, constraints, and foreign key names
  • Loading branch information
philipmarzullo64 committed Apr 8, 2020
1 parent e867dfd commit 5e1fadb
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 1 deletion.
Expand Up @@ -40,6 +40,7 @@ private DatabaseNamesConstants() {
public final static String MSSQL2005 = "mssql2005";
public final static String MSSQL2008 = "mssql2008";
public final static String ORACLE = "oracle";
public final static String ORACLE122 = "oracle122";
public final static String MYSQL = "mysql";
public final static String DB2 = "db2";
public final static String DB2ZOS = "db2zos";
Expand Down
Expand Up @@ -37,6 +37,7 @@
import org.jumpmind.db.platform.mssql.MsSql2008DdlBuilder;
import org.jumpmind.db.platform.mysql.MySqlDdlBuilder;
import org.jumpmind.db.platform.nuodb.NuoDbDdlBuilder;
import org.jumpmind.db.platform.oracle.Oracle122DdlBuilder;
import org.jumpmind.db.platform.oracle.OracleDdlBuilder;
import org.jumpmind.db.platform.postgresql.PostgreSqlDdlBuilder;
import org.jumpmind.db.platform.redshift.RedshiftDdlBuilder;
Expand Down Expand Up @@ -87,6 +88,8 @@ public static final IDdlBuilder createDdlBuilder(String databaseName) {
return new MySqlDdlBuilder();
} else if (DatabaseNamesConstants.ORACLE.equalsIgnoreCase(databaseName)) {
return new OracleDdlBuilder();
} else if (DatabaseNamesConstants.ORACLE122.equalsIgnoreCase(databaseName)) {
return new Oracle122DdlBuilder();
} else if (DatabaseNamesConstants.POSTGRESQL.equalsIgnoreCase(databaseName)
|| DatabaseNamesConstants.POSTGRESQL95.equalsIgnoreCase(databaseName)) {
return new PostgreSqlDdlBuilder();
Expand Down
@@ -0,0 +1,9 @@
package org.jumpmind.db.platform.oracle;

public class Oracle122DdlBuilder extends OracleDdlBuilder {

public Oracle122DdlBuilder() {
super();
databaseInfo.setMaxIdentifierLength(128);
}
}
Expand Up @@ -64,7 +64,7 @@ public enum Format {
};

public enum Compatible {
DB2, DB2ZOS, DERBY, FIREBIRD, FIREBIRD_DIALECT1, GREENPLUM, H2, HSQLDB, HSQLDB2, INFORMIX, INTERBASE, MSSQL, MSSQL2000, MSSQL2005, MSSQL2008, MYSQL, ORACLE, POSTGRES, POSTGRES95, SYBASE, SQLITE, MARIADB, ASE, SQLANYWHERE, REDSHIFT, VOLTDB, NUODB, TIBERO, GENERIC
DB2, DB2ZOS, DERBY, FIREBIRD, FIREBIRD_DIALECT1, GREENPLUM, H2, HSQLDB, HSQLDB2, INFORMIX, INTERBASE, MSSQL, MSSQL2000, MSSQL2005, MSSQL2008, MYSQL, ORACLE, ORACLE122, POSTGRES, POSTGRES95, SYBASE, SQLITE, MARIADB, ASE, SQLANYWHERE, REDSHIFT, VOLTDB, NUODB, TIBERO, GENERIC
};

private Format format = Format.SQL;
Expand Down
Expand Up @@ -54,6 +54,7 @@
import org.jumpmind.db.platform.mssql.MsSql2008DatabasePlatform;
import org.jumpmind.db.platform.mysql.MySqlDatabasePlatform;
import org.jumpmind.db.platform.nuodb.NuoDbDatabasePlatform;
import org.jumpmind.db.platform.oracle.Oracle122DatabasePlatform;
import org.jumpmind.db.platform.oracle.OracleDatabasePlatform;
import org.jumpmind.db.platform.postgresql.PostgreSql95DatabasePlatform;
import org.jumpmind.db.platform.postgresql.PostgreSqlDatabasePlatform;
Expand Down Expand Up @@ -107,6 +108,7 @@ public class JdbcDatabasePlatformFactory {
addPlatform(platforms, "microsoft sql server", MsSql2008DatabasePlatform.class);
addPlatform(platforms, "MySQL", MySqlDatabasePlatform.class);
addPlatform(platforms, "Oracle", OracleDatabasePlatform.class);
addPlatform(platforms, DatabaseNamesConstants.ORACLE122, Oracle122DatabasePlatform.class);
addPlatform(platforms, "PostgreSql", PostgreSqlDatabasePlatform.class);
addPlatform(platforms, DatabaseNamesConstants.POSTGRESQL95, PostgreSql95DatabasePlatform.class);
addPlatform(platforms, "Adaptive Server Enterprise", AseDatabasePlatform.class);
Expand Down Expand Up @@ -282,6 +284,14 @@ public static String[] determineDatabaseNameVersionSubprotocol(DataSource dataSo
}
}

if(nameVersion[0].equalsIgnoreCase(DatabaseNamesConstants.ORACLE)) {
int majorVersion = Integer.valueOf(metaData.getDatabaseMajorVersion());
int minorVersion = Integer.valueOf(metaData.getDatabaseMinorVersion());
if(majorVersion > 12 || (majorVersion == 12 && minorVersion >= 2)) {
nameVersion[0] = DatabaseNamesConstants.ORACLE122;
}
}

log.info("Detected database '" + nameVersion[0] + "', version '" + nameVersion[1] + "', protocol '" + nameVersion[2] + "'");

return nameVersion;
Expand Down
@@ -0,0 +1,24 @@
package org.jumpmind.db.platform.oracle;

import javax.sql.DataSource;

import org.jumpmind.db.platform.DatabaseNamesConstants;
import org.jumpmind.db.sql.SqlTemplateSettings;

public class Oracle122DatabasePlatform extends OracleDatabasePlatform {

public Oracle122DatabasePlatform(DataSource dataSource, SqlTemplateSettings settings) {
super(dataSource, settings);
}

@Override
protected OracleDdlBuilder createDdlBuilder() {
return new Oracle122DdlBuilder();
}

@Override
public String getName() {
return DatabaseNamesConstants.ORACLE122;
}

}

0 comments on commit 5e1fadb

Please sign in to comment.