diff --git a/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java index 9d2e9d2f00..89993739de 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java @@ -55,6 +55,7 @@ import org.jooq.util.jaxb.EnumType; import org.jooq.util.jaxb.ForcedType; import org.jooq.util.jaxb.MasterDataTable; import org.jooq.util.jaxb.Schema; +import org.jooq.util.oracle.OracleDatabase; /** * A base implementation for all types of databases. @@ -166,7 +167,14 @@ public abstract class AbstractDatabase implements Database { } else { for (Schema schema : configuredSchemata) { - inputSchemata.add(schema.getInputSchema()); + + // [#1418] Oracle has case-insensitive schema names. + if (this instanceof OracleDatabase) { + inputSchemata.add(schema.getInputSchema().toUpperCase()); + } + else { + inputSchemata.add(schema.getInputSchema()); + } } } } diff --git a/jOOQ-meta/src/main/java/org/jooq/util/oracle/OracleDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/oracle/OracleDatabase.java index a2254d7848..df668486d2 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/oracle/OracleDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/oracle/OracleDatabase.java @@ -123,7 +123,7 @@ public class OracleDatabase extends AbstractDatabase { .and(ALL_CONS_COLUMNS.CONSTRAINT_NAME.equal(ALL_CONSTRAINTS.CONSTRAINT_NAME))) .where(ALL_CONSTRAINTS.CONSTRAINT_TYPE.equal(constraintType) .and(ALL_CONSTRAINTS.CONSTRAINT_NAME.notLike("BIN$%")) - .and(ALL_CONS_COLUMNS.OWNER.in(getInputSchemata()))) + .and(ALL_CONS_COLUMNS.OWNER.upper().in(getInputSchemata()))) .orderBy( ALL_CONS_COLUMNS.OWNER, ALL_CONS_COLUMNS.CONSTRAINT_NAME, @@ -149,7 +149,7 @@ public class OracleDatabase extends AbstractDatabase { .and(ALL_CONSTRAINTS.TABLE_NAME.equal(ALL_CONS_COLUMNS.TABLE_NAME)) .and(ALL_CONSTRAINTS.CONSTRAINT_NAME.equal(ALL_CONS_COLUMNS.CONSTRAINT_NAME))) .where(ALL_CONSTRAINTS.CONSTRAINT_TYPE.equal("R")) - .and(ALL_CONSTRAINTS.OWNER.in(getInputSchemata())) + .and(ALL_CONSTRAINTS.OWNER.upper().in(getInputSchemata())) .orderBy( ALL_CONS_COLUMNS.OWNER, ALL_CONS_COLUMNS.TABLE_NAME, @@ -200,7 +200,7 @@ public class OracleDatabase extends AbstractDatabase { ALL_SEQUENCES.SEQUENCE_NAME, ALL_SEQUENCES.MAX_VALUE) .from(ALL_SEQUENCES) - .where(ALL_SEQUENCES.SEQUENCE_OWNER.in(getInputSchemata())) + .where(ALL_SEQUENCES.SEQUENCE_OWNER.upper().in(getInputSchemata())) .orderBy( ALL_SEQUENCES.SEQUENCE_OWNER, ALL_SEQUENCES.SEQUENCE_NAME) @@ -232,7 +232,7 @@ public class OracleDatabase extends AbstractDatabase { ALL_TAB_COMMENTS.TABLE_NAME, ALL_TAB_COMMENTS.COMMENTS) .from(ALL_TAB_COMMENTS) - .where(ALL_TAB_COMMENTS.OWNER.in(getInputSchemata())) + .where(ALL_TAB_COMMENTS.OWNER.upper().in(getInputSchemata())) .and(ALL_TAB_COMMENTS.TABLE_NAME.notLike("%$%")) .orderBy( ALL_TAB_COMMENTS.OWNER, @@ -270,7 +270,7 @@ public class OracleDatabase extends AbstractDatabase { ALL_TYPES.OWNER, ALL_TYPES.TYPE_NAME) .from(ALL_TYPES) - .where(ALL_TYPES.OWNER.in(getInputSchemata())) + .where(ALL_TYPES.OWNER.upper().in(getInputSchemata())) .and(ALL_TYPES.TYPECODE.equal("OBJECT")) .orderBy( ALL_TYPES.OWNER, @@ -301,7 +301,7 @@ public class OracleDatabase extends AbstractDatabase { ALL_COLL_TYPES.PRECISION, ALL_COLL_TYPES.SCALE) .from(ALL_COLL_TYPES) - .where(ALL_COLL_TYPES.OWNER.in(getInputSchemata())) + .where(ALL_COLL_TYPES.OWNER.upper().in(getInputSchemata())) .and(ALL_COLL_TYPES.COLL_TYPE.in("VARYING ARRAY", "TABLE")) .orderBy( ALL_COLL_TYPES.OWNER, @@ -335,7 +335,7 @@ public class OracleDatabase extends AbstractDatabase { ALL_OBJECTS.OBJECT_NAME, ALL_OBJECTS.OBJECT_ID) .from(ALL_OBJECTS) - .where(ALL_OBJECTS.OWNER.in(getInputSchemata()) + .where(ALL_OBJECTS.OWNER.upper().in(getInputSchemata()) .and(ALL_OBJECTS.OBJECT_TYPE.in("FUNCTION", "PROCEDURE"))) .orderBy( ALL_OBJECTS.OWNER, @@ -365,7 +365,7 @@ public class OracleDatabase extends AbstractDatabase { ALL_OBJECTS.OBJECT_NAME, ALL_OBJECTS.OBJECT_ID) .from(ALL_OBJECTS) - .where(ALL_OBJECTS.OWNER.in(getInputSchemata()) + .where(ALL_OBJECTS.OWNER.upper().in(getInputSchemata()) .and(ALL_OBJECTS.OBJECT_TYPE.equal("PACKAGE"))) .orderBy( ALL_OBJECTS.OWNER, diff --git a/jOOQ-test/configuration/org/jooq/configuration/lukas/oracle/library.xml b/jOOQ-test/configuration/org/jooq/configuration/lukas/oracle/library.xml index 00c85dcdaa..96c119e541 100644 --- a/jOOQ-test/configuration/org/jooq/configuration/lukas/oracle/library.xml +++ b/jOOQ-test/configuration/org/jooq/configuration/lukas/oracle/library.xml @@ -16,7 +16,7 @@ true - TEST + test MULTI_SCHEMA