diff --git a/jOOQ/src/main/java/org/jooq/ArrayRecord.java b/jOOQ/src/main/java/org/jooq/ArrayRecord.java
index 4aa5e9115e..b7aa5fc5fd 100644
--- a/jOOQ/src/main/java/org/jooq/ArrayRecord.java
+++ b/jOOQ/src/main/java/org/jooq/ArrayRecord.java
@@ -120,6 +120,11 @@ package org.jooq;
+
+
+
+
+
diff --git a/jOOQ/src/main/java/org/jooq/DSLContext.java b/jOOQ/src/main/java/org/jooq/DSLContext.java
index 4eb56b83fb..ca7616f17d 100644
--- a/jOOQ/src/main/java/org/jooq/DSLContext.java
+++ b/jOOQ/src/main/java/org/jooq/DSLContext.java
@@ -207,6 +207,22 @@ public interface DSLContext extends Scope , AutoCloseable {
*/
Meta meta(InformationSchema schema);
+ /**
+ * Export a catalog to the {@link InformationSchema} format.
+ *
+ * This allows for serialising schema meta information as XML using JAXB.
+ * See also {@link Constants#XSD_META} for details.
+ */
+ InformationSchema informationSchema(Catalog catalog);
+
+ /**
+ * Export a schema to the {@link InformationSchema} format.
+ *
+ * This allows for serialising schema meta information as XML using JAXB.
+ * See also {@link Constants#XSD_META} for details.
+ */
+ InformationSchema informationSchema(Schema schema);
+
// -------------------------------------------------------------------------
// XXX APIs for creating scope for transactions, mocking, batching, etc.
// -------------------------------------------------------------------------
diff --git a/jOOQ/src/main/java/org/jooq/EnumType.java b/jOOQ/src/main/java/org/jooq/EnumType.java
index a36dfba9ad..ee22f8dc1b 100644
--- a/jOOQ/src/main/java/org/jooq/EnumType.java
+++ b/jOOQ/src/main/java/org/jooq/EnumType.java
@@ -64,6 +64,12 @@ public interface EnumType {
*/
String getLiteral();
+ /**
+ * The catalog of the enum type, if applicable. Otherwise, this returns
+ * null
+ */
+ Catalog getCatalog();
+
/**
* The schema of the enum type, if applicable (Postgres schema-scope enum
* type only). Otherwise, this returns null
diff --git a/jOOQ/src/main/java/org/jooq/Package.java b/jOOQ/src/main/java/org/jooq/Package.java
index f9527e9b89..9c7ca974f7 100644
--- a/jOOQ/src/main/java/org/jooq/Package.java
+++ b/jOOQ/src/main/java/org/jooq/Package.java
@@ -49,6 +49,11 @@ package org.jooq;
*/
public interface Package extends QueryPart {
+ /**
+ * Get the package catalog.
+ */
+ Catalog getCatalog();
+
/**
* Get the package schema
*/
diff --git a/jOOQ/src/main/java/org/jooq/Routine.java b/jOOQ/src/main/java/org/jooq/Routine.java
index ddd109dc9e..cab57015d5 100644
--- a/jOOQ/src/main/java/org/jooq/Routine.java
+++ b/jOOQ/src/main/java/org/jooq/Routine.java
@@ -93,6 +93,11 @@ public interface Routine extends QueryPart {
// XXX: Meta information
// -------------------------------------------------------------------------
+ /**
+ * Get the routine catalog.
+ */
+ Catalog getCatalog();
+
/**
* Get the routine schema
*/
diff --git a/jOOQ/src/main/java/org/jooq/Sequence.java b/jOOQ/src/main/java/org/jooq/Sequence.java
index faf4703662..d05f2c3856 100644
--- a/jOOQ/src/main/java/org/jooq/Sequence.java
+++ b/jOOQ/src/main/java/org/jooq/Sequence.java
@@ -66,6 +66,11 @@ public interface Sequence extends QueryPart {
*/
String getName();
+ /**
+ * Get the sequence catalog.
+ */
+ Catalog getCatalog();
+
/**
* Get the sequence schema
*/
diff --git a/jOOQ/src/main/java/org/jooq/Table.java b/jOOQ/src/main/java/org/jooq/Table.java
index 7e304ed486..7249102a18 100644
--- a/jOOQ/src/main/java/org/jooq/Table.java
+++ b/jOOQ/src/main/java/org/jooq/Table.java
@@ -79,6 +79,11 @@ import org.jooq.impl.DSL;
*/
public interface Table extends TableLike {
+ /**
+ * Get the table catalog.
+ */
+ Catalog getCatalog();
+
/**
* Get the table schema.
*/
diff --git a/jOOQ/src/main/java/org/jooq/UDT.java b/jOOQ/src/main/java/org/jooq/UDT.java
index 0cf27b8000..79f85210ad 100644
--- a/jOOQ/src/main/java/org/jooq/UDT.java
+++ b/jOOQ/src/main/java/org/jooq/UDT.java
@@ -125,6 +125,11 @@ public interface UDT> extends QueryPart {
*/
Field>[] fields(int... fieldIndexes);
+ /**
+ * Get the UDT catalog.
+ */
+ Catalog getCatalog();
+
/**
* Get the UDT schema
*/
diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java b/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java
index fc3260519d..ec8f242939 100644
--- a/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java
+++ b/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java
@@ -75,6 +75,7 @@ import org.jooq.AggregateFunction;
import org.jooq.AttachableInternal;
import org.jooq.BindContext;
import org.jooq.Binding;
+import org.jooq.Catalog;
import org.jooq.Clause;
import org.jooq.Configuration;
import org.jooq.Context;
@@ -854,6 +855,11 @@ public abstract class AbstractRoutine extends AbstractQueryPart implements Ro
return Collections.unmodifiableList(allParameters);
}
+ @Override
+ public final Catalog getCatalog() {
+ return getSchema() == null ? null : getSchema().getCatalog();
+ }
+
@Override
public final Schema getSchema() {
return schema;
diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java b/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java
index 808cb21374..1e7623b1f3 100644
--- a/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java
+++ b/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java
@@ -66,6 +66,7 @@ import java.util.Collections;
import java.util.List;
import org.jooq.Binding;
+import org.jooq.Catalog;
import org.jooq.Clause;
import org.jooq.Comparator;
import org.jooq.Condition;
@@ -269,6 +270,11 @@ abstract class AbstractTable extends AbstractQueryPart impleme
// XXX: Table API
// ------------------------------------------------------------------------
+ @Override
+ public final Catalog getCatalog() {
+ return getSchema() == null ? null : getSchema().getCatalog();
+ }
+
@Override
public /* non-final */ Schema getSchema() {
return tableschema;
diff --git a/jOOQ/src/main/java/org/jooq/impl/ArrayRecordImpl.java b/jOOQ/src/main/java/org/jooq/impl/ArrayRecordImpl.java
index cc20260112..17712f69c2 100644
--- a/jOOQ/src/main/java/org/jooq/impl/ArrayRecordImpl.java
+++ b/jOOQ/src/main/java/org/jooq/impl/ArrayRecordImpl.java
@@ -394,6 +394,12 @@ package org.jooq.impl;
+
+
+
+
+
+
diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java b/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java
index 7562bff9bb..d2bc01b325 100644
--- a/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java
+++ b/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java
@@ -378,6 +378,20 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri
return new InformationSchemaMetaImpl(configuration(), schema);
}
+ @Override
+ public InformationSchema informationSchema(Catalog catalog) {
+ return informationSchema0(catalog.getSchemas());
+ }
+
+ @Override
+ public InformationSchema informationSchema(Schema schema) {
+ return informationSchema0(Arrays.asList(schema));
+ }
+
+ private final InformationSchema informationSchema0(List schemas) {
+ return InformationSchemaExport.export(schemas);
+ }
+
// -------------------------------------------------------------------------
// XXX APIs for creating scope for transactions, mocking, batching, etc.
// -------------------------------------------------------------------------
diff --git a/jOOQ/src/main/java/org/jooq/impl/PackageImpl.java b/jOOQ/src/main/java/org/jooq/impl/PackageImpl.java
index f0128b1851..dbb5907c82 100644
--- a/jOOQ/src/main/java/org/jooq/impl/PackageImpl.java
+++ b/jOOQ/src/main/java/org/jooq/impl/PackageImpl.java
@@ -40,6 +40,7 @@
*/
package org.jooq.impl;
+import org.jooq.Catalog;
import org.jooq.Clause;
import org.jooq.Context;
import org.jooq.Package;
@@ -72,6 +73,11 @@ public class PackageImpl extends AbstractQueryPart implements Package {
this.name = name;
}
+ @Override
+ public final Catalog getCatalog() {
+ return getSchema() == null ? null : getSchema().getCatalog();
+ }
+
@Override
public final Schema getSchema() {
return schema;
diff --git a/jOOQ/src/main/java/org/jooq/impl/SequenceImpl.java b/jOOQ/src/main/java/org/jooq/impl/SequenceImpl.java
index fdf46f1739..7f9d17c28f 100644
--- a/jOOQ/src/main/java/org/jooq/impl/SequenceImpl.java
+++ b/jOOQ/src/main/java/org/jooq/impl/SequenceImpl.java
@@ -49,6 +49,7 @@ import static org.jooq.impl.DSL.field;
import static org.jooq.impl.DSL.inline;
import static org.jooq.impl.DSL.select;
+import org.jooq.Catalog;
import org.jooq.Clause;
import org.jooq.Configuration;
import org.jooq.Context;
@@ -96,6 +97,11 @@ public class SequenceImpl extends AbstractQueryPart implements
return name;
}
+ @Override
+ public final Catalog getCatalog() {
+ return getSchema() == null ? null : getSchema().getCatalog();
+ }
+
@Override
public final Schema getSchema() {
return schema;
diff --git a/jOOQ/src/main/java/org/jooq/impl/UDTImpl.java b/jOOQ/src/main/java/org/jooq/impl/UDTImpl.java
index 1bfe99d8ac..9d86c79ac2 100644
--- a/jOOQ/src/main/java/org/jooq/impl/UDTImpl.java
+++ b/jOOQ/src/main/java/org/jooq/impl/UDTImpl.java
@@ -41,6 +41,7 @@
package org.jooq.impl;
import org.jooq.Binding;
+import org.jooq.Catalog;
import org.jooq.Clause;
import org.jooq.Context;
import org.jooq.Converter;
@@ -76,6 +77,11 @@ public class UDTImpl> extends AbstractQueryPart implement
this.schema = schema;
}
+ @Override
+ public final Catalog getCatalog() {
+ return getSchema() == null ? null : getSchema().getCatalog();
+ }
+
@Override
public /* non-final */ Schema getSchema() {
return schema;