diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractNamed.java b/jOOQ/src/main/java/org/jooq/impl/AbstractNamed.java index 65e1d4df18..4a55efef04 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractNamed.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractNamed.java @@ -57,6 +57,10 @@ abstract class AbstractNamed extends AbstractQueryPart implements Named { this.comment = comment == null ? CommentImpl.NO_COMMENT : comment; } + // ------------------------------------------------------------------------- + // The Named API + // ------------------------------------------------------------------------- + @Override public final String getName() { return StringUtils.defaultIfNull(name.last(), ""); @@ -104,4 +108,12 @@ abstract class AbstractNamed extends AbstractQueryPart implements Named { return super.equals(that); } + + // ------------------------------------------------------------------------- + // Utilities + // ------------------------------------------------------------------------- + + static Name qualify(Named qualifier, Name name) { + return qualifier == null || name.qualified() ? name : qualifier.getQualifiedName().append(name); + } } diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java b/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java index 177901f007..c57f98984c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java @@ -147,7 +147,7 @@ abstract class AbstractTable extends AbstractNamed implements } AbstractTable(Name name, Schema schema, Comment comment) { - super(name, comment); + super(qualify(schema, name), comment); this.tableschema = schema; } diff --git a/jOOQ/src/main/java/org/jooq/impl/IndexImpl.java b/jOOQ/src/main/java/org/jooq/impl/IndexImpl.java index b9bd63d6c2..59b67f050b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/IndexImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/IndexImpl.java @@ -71,7 +71,7 @@ class IndexImpl extends AbstractNamed implements Index { } IndexImpl(Name name, Table table, OrderField[] fields, Condition where, boolean unique) { - super(name, CommentImpl.NO_COMMENT); + super(qualify(table, name), CommentImpl.NO_COMMENT); this.table = table; this.fields = Tools.sortFields(fields); diff --git a/jOOQ/src/main/java/org/jooq/impl/PackageImpl.java b/jOOQ/src/main/java/org/jooq/impl/PackageImpl.java index 14f895849e..0d384f9e18 100644 --- a/jOOQ/src/main/java/org/jooq/impl/PackageImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/PackageImpl.java @@ -59,12 +59,12 @@ public class PackageImpl extends AbstractNamed implements Package { /** * Generated UID */ - private static final long serialVersionUID = 7466890004995197675L; + private static final long serialVersionUID = 7466890004995197675L; - private final Schema schema; + private Schema schema; public PackageImpl(String name, Schema schema) { - super(DSL.name(name), CommentImpl.NO_COMMENT); + super(qualify(schema, DSL.name(name)), CommentImpl.NO_COMMENT); this.schema = schema; } @@ -76,6 +76,11 @@ public class PackageImpl extends AbstractNamed implements Package { @Override public final Schema getSchema() { + if (schema == null) + schema = getQualifiedName().qualified() + ? DSL.schema(getQualifiedName().qualifier()) + : null; + return schema; } diff --git a/jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java b/jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java index 749f00ec9c..166d9a4653 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java @@ -90,7 +90,7 @@ public class SchemaImpl extends AbstractNamed implements Schema { } public SchemaImpl(Name name, Catalog catalog, Comment comment) { - super(name, comment); + super(qualify(catalog, name), comment); this.catalog = catalog; } diff --git a/jOOQ/src/main/java/org/jooq/impl/SequenceImpl.java b/jOOQ/src/main/java/org/jooq/impl/SequenceImpl.java index 03f781fb44..32dd4fc5fd 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SequenceImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SequenceImpl.java @@ -82,7 +82,7 @@ public class SequenceImpl extends AbstractNamed implements Seq } SequenceImpl(String name, Schema schema, DataType type, boolean nameIsPlainSQL) { - super(DSL.name(name), CommentImpl.NO_COMMENT); + super(qualify(schema, DSL.name(name)), CommentImpl.NO_COMMENT); this.name = name; this.schema = schema; diff --git a/jOOQ/src/main/java/org/jooq/impl/TableFieldImpl.java b/jOOQ/src/main/java/org/jooq/impl/TableFieldImpl.java index b785d4c2a1..11ea0723e6 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TableFieldImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/TableFieldImpl.java @@ -66,7 +66,7 @@ final class TableFieldImpl extends AbstractField impleme private final Table table; TableFieldImpl(Name name, DataType type, Table table, Comment comment, Binding binding) { - super(name, type, comment, binding); + super(qualify(table, name), type, comment, binding); this.table = table; } diff --git a/jOOQ/src/main/java/org/jooq/impl/UDTImpl.java b/jOOQ/src/main/java/org/jooq/impl/UDTImpl.java index 783e206a18..4da05af558 100644 --- a/jOOQ/src/main/java/org/jooq/impl/UDTImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/UDTImpl.java @@ -81,7 +81,7 @@ public class UDTImpl> extends AbstractNamed implements UD } public UDTImpl(String name, Schema schema, Package pkg, boolean synthetic) { - super(DSL.name(name), CommentImpl.NO_COMMENT); + super(qualify(pkg != null ? pkg : schema, DSL.name(name)), CommentImpl.NO_COMMENT); this.fields = new Fields(); this.schema = schema;