diff --git a/jOOQ/src/main/java/org/jooq/Name.java b/jOOQ/src/main/java/org/jooq/Name.java
index 6485a9f27f..4cd66bf127 100644
--- a/jOOQ/src/main/java/org/jooq/Name.java
+++ b/jOOQ/src/main/java/org/jooq/Name.java
@@ -82,6 +82,11 @@ public interface Name extends QueryPart {
*/
boolean qualified();
+ /**
+ * This name's qualifier (if it is {@link #qualified()}), or null.
+ */
+ Name qualifier();
+
/**
* The qualified name of this SQL identifier.
*/
diff --git a/jOOQ/src/main/java/org/jooq/impl/QualifiedField.java b/jOOQ/src/main/java/org/jooq/impl/QualifiedField.java
index 3d3bc2d9d4..7a770c54c4 100644
--- a/jOOQ/src/main/java/org/jooq/impl/QualifiedField.java
+++ b/jOOQ/src/main/java/org/jooq/impl/QualifiedField.java
@@ -36,8 +36,6 @@ package org.jooq.impl;
import static org.jooq.tools.StringUtils.defaultIfNull;
-import java.util.Arrays;
-
import org.jooq.Context;
import org.jooq.DataType;
import org.jooq.Field;
@@ -68,7 +66,7 @@ final class QualifiedField extends AbstractField implements TableField 1;
}
+ @Override
+ public final Name qualifier() {
+ if (qualifiedName.length <= 1)
+ return null;
+ if (qualifiedName.length == 2)
+ return qualifiedName[0];
+
+ UnqualifiedName[] qualifier = new UnqualifiedName[qualifiedName.length - 1];
+ System.arraycopy(qualifiedName, 0, qualifier, 0, qualifier.length);
+ return new QualifiedName(qualifier);
+ }
+
@Override
public final String[] getName() {
String[] result = new String[qualifiedName.length];
diff --git a/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java b/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java
index 9c94f24808..3c6b9370fc 100644
--- a/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java
+++ b/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java
@@ -35,6 +35,7 @@
package org.jooq.impl;
import org.jooq.Context;
+import org.jooq.Name;
/**
* The default implementation for an unqualified SQL identifier.
@@ -88,6 +89,11 @@ final class UnqualifiedName extends AbstractName {
return false;
}
+ @Override
+ public final Name qualifier() {
+ return null;
+ }
+
@Override
public final String[] getName() {
return new String[] { name };