diff --git a/jOOQ/src/main/java/org/jooq/TableType.java b/jOOQ/src/main/java/org/jooq/TableType.java index dca877d31f..a0f5c9165d 100644 --- a/jOOQ/src/main/java/org/jooq/TableType.java +++ b/jOOQ/src/main/java/org/jooq/TableType.java @@ -71,6 +71,12 @@ public enum TableType { */ FUNCTION, + /** + * A table expression, such as a derived table, a joined table, a common + * table expression, etc. + */ + EXPRESSION, + /** * A table type that is unknown to jOOQ. */ diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java b/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java index aee5c4135b..e9b5b49a43 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java @@ -121,44 +121,22 @@ abstract class AbstractTable extends AbstractNamed implements private static final long serialVersionUID = 3155496238969274871L; private static final Clause[] CLAUSES = { TABLE }; + private final TableType type; private Schema tableschema; private transient DataType tabletype; - /** - * @deprecated - 3.10.0 - [#6068] - Use {@link #AbstractTable(Name)} instead. - */ - @Deprecated - AbstractTable(String name) { - this(name, null, null); + AbstractTable(TableType type, Name name) { + this(type, name, null, null); } - /** - * @deprecated - 3.10.0 - [#6068] - Use {@link #AbstractTable(Name, Schema)} instead. - */ - @Deprecated - AbstractTable(String name, Schema schema) { - this(name, schema, null); + AbstractTable(TableType type, Name name, Schema schema) { + this(type, name, schema, null); } - /** - * @deprecated - 3.10.0 - [#6068] - Use {@link #AbstractTable(Name, Schema, String)} instead. - */ - @Deprecated - AbstractTable(String name, Schema schema, String comment) { - this(DSL.name(name), schema, DSL.comment(comment)); - } - - AbstractTable(Name name) { - this(name, null, null); - } - - AbstractTable(Name name, Schema schema) { - this(name, schema, null); - } - - AbstractTable(Name name, Schema schema, Comment comment) { + AbstractTable(TableType type, Name name, Schema schema, Comment comment) { super(qualify(schema, name), comment); + this.type = type; this.tableschema = schema; } @@ -415,7 +393,7 @@ abstract class AbstractTable extends AbstractNamed implements @Override public final TableType getType() { - return TableType.UNKNOWN; + return type; } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/ArrayTable.java b/jOOQ/src/main/java/org/jooq/impl/ArrayTable.java index 42bb4ca1b4..8148d0535a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ArrayTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/ArrayTable.java @@ -53,6 +53,7 @@ import org.jooq.Param; // ... import org.jooq.Record; import org.jooq.Table; +import org.jooq.TableType; import org.jooq.UDTRecord; import org.jooq.exception.DataTypeException; import org.jooq.util.h2.H2DataType; @@ -84,7 +85,7 @@ final class ArrayTable extends AbstractTable { @SuppressWarnings({ "unchecked" }) ArrayTable(Field array, Name alias, Name[] fieldAliases) { - super(alias); + super(TableType.EXPRESSION, alias); Class arrayType; @@ -271,7 +272,7 @@ final class ArrayTable extends AbstractTable { private static final long serialVersionUID = 2662639259338694177L; DialectArrayTable() { - super(alias); + super(TableType.EXPRESSION, alias); } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/ArrayTableEmulation.java b/jOOQ/src/main/java/org/jooq/impl/ArrayTableEmulation.java index 030e460806..2fab60c9de 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ArrayTableEmulation.java +++ b/jOOQ/src/main/java/org/jooq/impl/ArrayTableEmulation.java @@ -49,6 +49,8 @@ import org.jooq.Name; import org.jooq.Record; import org.jooq.Select; import org.jooq.Table; +import org.jooq.TableType; +import org.jooq.TableType; /** * Essentially, this is the same as ArrayTable, except that it simulates @@ -79,7 +81,7 @@ final class ArrayTableEmulation extends AbstractTable { } ArrayTableEmulation(Object[] array, Name alias, Name fieldAlias) { - super(alias); + super(TableType.EXPRESSION, alias); this.array = array; this.alias = alias; diff --git a/jOOQ/src/main/java/org/jooq/impl/CommonTableExpressionImpl.java b/jOOQ/src/main/java/org/jooq/impl/CommonTableExpressionImpl.java index e0cbe80076..3635625ec2 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CommonTableExpressionImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CommonTableExpressionImpl.java @@ -48,6 +48,7 @@ import org.jooq.Name; import org.jooq.Record; import org.jooq.Select; import org.jooq.Table; +import org.jooq.TableType; /** * @author Lukas Eder @@ -64,7 +65,7 @@ final class CommonTableExpressionImpl extends AbstractTable private final Fields fields; CommonTableExpressionImpl(DerivedColumnListImpl name, Select select) { - super(name.name); + super(TableType.EXPRESSION, name.name); this.name = name; this.select = select; diff --git a/jOOQ/src/main/java/org/jooq/impl/DerivedTable.java b/jOOQ/src/main/java/org/jooq/impl/DerivedTable.java index 334f905fe6..14a96ab1fb 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DerivedTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/DerivedTable.java @@ -44,6 +44,7 @@ import org.jooq.Name; import org.jooq.Record; import org.jooq.Select; import org.jooq.Table; +import org.jooq.TableType; /** * @author Lukas Eder @@ -55,7 +56,7 @@ final class DerivedTable extends AbstractTable { private final Select query; DerivedTable(Select query) { - super("select"); + super(TableType.EXPRESSION, DSL.name("select")); this.query = query; } diff --git a/jOOQ/src/main/java/org/jooq/impl/Dual.java b/jOOQ/src/main/java/org/jooq/impl/Dual.java index 7521abec41..9d59a5f8fd 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Dual.java +++ b/jOOQ/src/main/java/org/jooq/impl/Dual.java @@ -48,6 +48,7 @@ import org.jooq.Name; import org.jooq.Record; import org.jooq.Schema; import org.jooq.Table; +import org.jooq.TableType; /** * @author Lukas Eder @@ -83,7 +84,7 @@ final class Dual extends AbstractTable { } Dual(boolean force) { - super(DSL.name("dual"), (Schema) null); + super(TableType.EXPRESSION, DSL.name("dual"), (Schema) null); this.force = force; } diff --git a/jOOQ/src/main/java/org/jooq/impl/FunctionTable.java b/jOOQ/src/main/java/org/jooq/impl/FunctionTable.java index 75092c66b7..2c8c001fdf 100644 --- a/jOOQ/src/main/java/org/jooq/impl/FunctionTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/FunctionTable.java @@ -44,6 +44,7 @@ import org.jooq.Field; import org.jooq.Name; import org.jooq.Record; import org.jooq.Table; +import org.jooq.TableType; import org.jooq.exception.SQLDialectNotSupportedException; /** @@ -59,7 +60,7 @@ final class FunctionTable extends AbstractTable { private final Field function; FunctionTable(Field function) { - super("function_table"); + super(TableType.FUNCTION, DSL.name("function_table")); this.function = function; } diff --git a/jOOQ/src/main/java/org/jooq/impl/GenerateSeries.java b/jOOQ/src/main/java/org/jooq/impl/GenerateSeries.java index 136432ef55..947caef59b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/GenerateSeries.java +++ b/jOOQ/src/main/java/org/jooq/impl/GenerateSeries.java @@ -50,6 +50,7 @@ import org.jooq.Name; import org.jooq.QueryPart; import org.jooq.Record1; import org.jooq.Table; +import org.jooq.TableType; /** * @author Lukas Eder @@ -70,7 +71,7 @@ final class GenerateSeries extends AbstractTable> { } GenerateSeries(Field from, Field to, Field step) { - super("generate_series"); + super(TableType.EXPRESSION, DSL.name("generate_series")); this.from = from; this.to = to; diff --git a/jOOQ/src/main/java/org/jooq/impl/HintedTable.java b/jOOQ/src/main/java/org/jooq/impl/HintedTable.java index 26bd084deb..643ca97174 100644 --- a/jOOQ/src/main/java/org/jooq/impl/HintedTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/HintedTable.java @@ -70,7 +70,7 @@ final class HintedTable extends AbstractTable { } HintedTable(AbstractTable delegate, Keyword keywords, QueryPartList arguments) { - super(delegate.getName(), delegate.getSchema()); + super(delegate.getType(), delegate.getQualifiedName(), delegate.getSchema()); this.delegate = delegate; this.keywords = keywords; diff --git a/jOOQ/src/main/java/org/jooq/impl/JoinTable.java b/jOOQ/src/main/java/org/jooq/impl/JoinTable.java index 467afd5f85..a4ee820d9d 100755 --- a/jOOQ/src/main/java/org/jooq/impl/JoinTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/JoinTable.java @@ -126,6 +126,7 @@ import org.jooq.TableOnConditionStep; import org.jooq.TableOptionalOnStep; import org.jooq.TableOuterJoinStep; import org.jooq.TablePartitionByStep; +import org.jooq.TableType; import org.jooq.conf.RenderOptionalKeyword; import org.jooq.exception.DataAccessException; @@ -175,7 +176,7 @@ implements - super("join"); + super(TableType.EXPRESSION, DSL.name("join")); this.lhs = lhs.asTable(); this.rhs = rhs.asTable(); diff --git a/jOOQ/src/main/java/org/jooq/impl/Lateral.java b/jOOQ/src/main/java/org/jooq/impl/Lateral.java index 79bd3f9600..b33ba42791 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Lateral.java +++ b/jOOQ/src/main/java/org/jooq/impl/Lateral.java @@ -43,6 +43,7 @@ import org.jooq.Context; import org.jooq.Name; import org.jooq.Record; import org.jooq.Table; +import org.jooq.TableType; /** * @author Lukas Eder @@ -56,7 +57,7 @@ final class Lateral extends AbstractTable { private final Table table; Lateral(Table table) { - super(table.getName(), table.getSchema()); + super(TableType.EXPRESSION, table.getQualifiedName(), table.getSchema()); this.table = table; } diff --git a/jOOQ/src/main/java/org/jooq/impl/Pivot.java b/jOOQ/src/main/java/org/jooq/impl/Pivot.java index cd85db3bb5..00da33fb1b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Pivot.java +++ b/jOOQ/src/main/java/org/jooq/impl/Pivot.java @@ -351,5 +351,6 @@ package org.jooq.impl; + diff --git a/jOOQ/src/main/java/org/jooq/impl/RowsFrom.java b/jOOQ/src/main/java/org/jooq/impl/RowsFrom.java index d716b22a14..6b9335458d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/RowsFrom.java +++ b/jOOQ/src/main/java/org/jooq/impl/RowsFrom.java @@ -48,6 +48,7 @@ import org.jooq.Field; import org.jooq.Name; import org.jooq.Record; import org.jooq.Table; +import org.jooq.TableType; /** * @author Lukas Eder @@ -62,7 +63,7 @@ final class RowsFrom extends AbstractTable { private final TableList tables; RowsFrom(Table... tables) { - super("rows from"); + super(TableType.EXPRESSION, DSL.name("rowsfrom")); this.tables = new TableList(Arrays.asList(tables)); } diff --git a/jOOQ/src/main/java/org/jooq/impl/SQLTable.java b/jOOQ/src/main/java/org/jooq/impl/SQLTable.java index fb93feca62..0e60121d7a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SQLTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/SQLTable.java @@ -42,6 +42,7 @@ import org.jooq.Name; import org.jooq.QueryPart; import org.jooq.Record; import org.jooq.Table; +import org.jooq.TableType; /** * @author Lukas Eder @@ -53,7 +54,7 @@ final class SQLTable extends AbstractTable { private final QueryPart delegate; SQLTable(QueryPart delegate) { - super(delegate.toString()); + super(TableType.EXPRESSION, DSL.name(delegate.toString())); this.delegate = delegate; } diff --git a/jOOQ/src/main/java/org/jooq/impl/TableAlias.java b/jOOQ/src/main/java/org/jooq/impl/TableAlias.java index 3cfde098e6..791840cad4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TableAlias.java +++ b/jOOQ/src/main/java/org/jooq/impl/TableAlias.java @@ -76,7 +76,7 @@ final class TableAlias extends AbstractTable { } TableAlias(Table table, Name alias, Name[] fieldAliases, boolean wrapInParentheses) { - super(alias, table.getSchema()); + super(table.getType(), alias, table.getSchema()); this.alias = new Alias<>(table, this, alias, fieldAliases, wrapInParentheses); this.aliasedFields = init(fieldAliases); diff --git a/jOOQ/src/main/java/org/jooq/impl/TableImpl.java b/jOOQ/src/main/java/org/jooq/impl/TableImpl.java index f156dd01b6..20fcdd2953 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/TableImpl.java @@ -62,6 +62,7 @@ import org.jooq.Row; import org.jooq.SQLDialect; import org.jooq.Schema; import org.jooq.Table; +import org.jooq.TableType; import org.jooq.tools.StringUtils; /** @@ -164,7 +165,7 @@ public class TableImpl extends AbstractTable { } public TableImpl(Name name, Schema schema, Table child, ForeignKey path, Table aliased, Field[] parameters, Comment comment) { - super(name, schema, comment); + super(TableType.TABLE, name, schema, comment); this.fields = new Fields<>(); this.child = child; diff --git a/jOOQ/src/main/java/org/jooq/impl/Values.java b/jOOQ/src/main/java/org/jooq/impl/Values.java index 9b273d7876..c2526ea75a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Values.java +++ b/jOOQ/src/main/java/org/jooq/impl/Values.java @@ -49,6 +49,7 @@ import org.jooq.Record; import org.jooq.Row; import org.jooq.Select; import org.jooq.Table; +import org.jooq.TableType; /** * An implementation for the VALUES(...) table constructor @@ -65,7 +66,7 @@ final class Values extends AbstractTable { private final Row[] rows; Values(Row[] rows) { - super("values"); + super(TableType.EXPRESSION, DSL.name("values")); this.rows = assertNotEmpty(rows); } diff --git a/jOOQ/src/main/java/org/jooq/impl/WithTable.java b/jOOQ/src/main/java/org/jooq/impl/WithTable.java index bb763fe3b9..9ae6b69633 100644 --- a/jOOQ/src/main/java/org/jooq/impl/WithTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/WithTable.java @@ -58,7 +58,7 @@ final class WithTable extends AbstractTable { private final String hint; WithTable(AbstractTable delegate, String hint) { - super(delegate.getName(), delegate.getSchema()); + super(delegate.getType(), delegate.getQualifiedName(), delegate.getSchema()); this.delegate = delegate; this.hint = hint;