public void initialiseTypes(StoreSchemaHandler handler, ManagedConnection mconn)
{
super.initialiseTypes(handler, mconn);
// Add on any missing JDBC types
SQLTypeInfo sqlType = new org.datanucleus.store.rdbms.schema.OracleTypeInfo(
"CLOB", (short)Types.CLOB, 1073741823, "'", "'", null, 1, true, (short)0,
false, false, false, "CLOB", (short)0, (short)0, 10);
sqlType.setAllowsPrecisionSpec(false); // Can't add precision on a CLOB
addSQLTypeForJDBCType(handler, mconn, (short)Types.CLOB, sqlType, true);
sqlType = new org.datanucleus.store.rdbms.schema.OracleTypeInfo(
"DATE", (short)Types.DATE, 7, null, null, null, 1, false, (short)3,
false, false, false, "DATE", (short)0, (short)0, 10);
addSQLTypeForJDBCType(handler, mconn, (short)Types.DATE, sqlType, true);
sqlType = new org.datanucleus.store.rdbms.schema.OracleTypeInfo(
"DECIMAL", (short)Types.DECIMAL, 38, null, null, null, 1, false, (short)3,
false, true, false, "NUMBER", (short)-84, (short)127, 10);
addSQLTypeForJDBCType(handler, mconn, (short)Types.DECIMAL, sqlType, true);
// Oracle has a synonym "DOUBLE PRECISION" (can't specify precision/scale) mapping to sql type of "FLOAT"
sqlType = new org.datanucleus.store.rdbms.schema.OracleTypeInfo(
"DOUBLE PRECISION", (short)Types.DOUBLE, 38, null, null, null, 1, false, (short)3,
false, true, false, "NUMBER", (short)-84, (short)127, 10);
addSQLTypeForJDBCType(handler, mconn, (short)Types.DOUBLE, sqlType, true);
sqlType = new org.datanucleus.store.rdbms.schema.OracleTypeInfo(
"SDO_GEOMETRY", (short)Types.STRUCT, 0, null, null, null, 1, false, (short)0,
false, false, false, "SDO_GEOMETRY", (short)0, (short)0, 10);
addSQLTypeForJDBCType(handler, mconn, (short)OracleTypeInfo.TYPES_SDO_GEOMETRY, sqlType, true);
sqlType = new org.datanucleus.store.rdbms.schema.OracleTypeInfo(
OracleTypeInfo.TYPES_NAME_SYS_XMLTYPE, (short)OracleTypeInfo.TYPES_SYS_XMLTYPE,
1073741823, "'", "'", null, 1, true, (short)0,
false, false, false, OracleTypeInfo.TYPES_NAME_SYS_XMLTYPE, (short)0, (short)0, 10);
addSQLTypeForJDBCType(handler, mconn, (short)OracleTypeInfo.TYPES_SYS_XMLTYPE, sqlType, true);
// Update any types that need extra info relative to the JDBC info
Collection<SQLTypeInfo> sqlTypes = getSQLTypeInfoForJdbcType(handler, mconn, (short)Types.BLOB);
if (sqlTypes != null)
{
Iterator<SQLTypeInfo> iter = sqlTypes.iterator();
while (iter.hasNext())
{
sqlType = iter.next();
sqlType.setAllowsPrecisionSpec(false); // Can't add precision on a BLOB
}
}
sqlTypes = getSQLTypeInfoForJdbcType(handler, mconn, (short)Types.CLOB);
if (sqlType != null)
{
Iterator<SQLTypeInfo> iter = sqlTypes.iterator();
while (iter.hasNext())
{
sqlType = iter.next();
sqlType.setAllowsPrecisionSpec(false); // Can't add precision on a CLOB
}
}
}