[jOOQ/jOOQ#13411] Parser meta lookups must look up hidden fields
This includes: - [jOOQ/jOOQ#16138] Let AbstractRecord, AbstractRow implement FieldsTrait
This commit is contained in:
parent
57e529b916
commit
045852585d
@ -103,6 +103,12 @@ import org.jetbrains.annotations.Nullable;
|
||||
*/
|
||||
public interface Fields {
|
||||
|
||||
/**
|
||||
* Get another {@link Fields} instance that includes the hidden fields.
|
||||
*/
|
||||
@NotNull
|
||||
Fields fieldsIncludingHidden();
|
||||
|
||||
/**
|
||||
* Get all fields known to this type.
|
||||
*/
|
||||
|
||||
@ -69,7 +69,6 @@ import static org.jooq.SQLDialect.SQLITE;
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.TRINO;
|
||||
// ...
|
||||
import static org.jooq.conf.SettingsTools.renderLocale;
|
||||
@ -102,7 +101,6 @@ import static org.jooq.impl.Tools.autoAlias;
|
||||
import static org.jooq.impl.Tools.flattenCollection;
|
||||
import static org.jooq.impl.Tools.increment;
|
||||
import static org.jooq.impl.Tools.map;
|
||||
import static org.jooq.impl.Tools.orElse;
|
||||
import static org.jooq.impl.Tools.reference;
|
||||
import static org.jooq.impl.Tools.removeGenerator;
|
||||
import static org.jooq.impl.Tools.unalias;
|
||||
@ -152,6 +150,7 @@ import org.jooq.Name;
|
||||
import org.jooq.Param;
|
||||
// ...
|
||||
import org.jooq.QualifiedAsterisk;
|
||||
import org.jooq.QueryPart;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
@ -175,7 +174,6 @@ import org.jooq.impl.QOM.ResultOption;
|
||||
import org.jooq.impl.Tools.BooleanDataKey;
|
||||
import org.jooq.impl.Tools.SimpleDataKey;
|
||||
import org.jooq.tools.JooqLogger;
|
||||
import org.jooq.tools.StringUtils;
|
||||
import org.jooq.tools.jdbc.JDBCUtils;
|
||||
|
||||
|
||||
@ -206,6 +204,7 @@ abstract class AbstractDMLQuery<R extends Record> extends AbstractRowCountQuery
|
||||
final Table<R> table;
|
||||
final SelectFieldList<SelectFieldOrAsterisk> returning;
|
||||
final List<Field<?>> returningResolvedAsterisks;
|
||||
boolean forceResolveAsterisks;
|
||||
Result<Record> returnedResult;
|
||||
Result<R> returned;
|
||||
|
||||
@ -216,6 +215,7 @@ abstract class AbstractDMLQuery<R extends Record> extends AbstractRowCountQuery
|
||||
this.table = table;
|
||||
this.returning = new SelectFieldList<>();
|
||||
this.returningResolvedAsterisks = new ArrayList<>();
|
||||
this.forceResolveAsterisks = false;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
@ -243,20 +243,36 @@ abstract class AbstractDMLQuery<R extends Record> extends AbstractRowCountQuery
|
||||
returning.clear();
|
||||
returning.addAll(fields.isEmpty() ? Arrays.asList(table.fields()) : fields);
|
||||
|
||||
forceResolveAsterisks = false;
|
||||
returningResolvedAsterisks.clear();
|
||||
for (SelectFieldOrAsterisk s : returning)
|
||||
if (s instanceof Field<?> f)
|
||||
for (SelectFieldOrAsterisk s : returning) {
|
||||
if (s instanceof Field<?> f) {
|
||||
returningResolvedAsterisks.add(f);
|
||||
else if (s instanceof QualifiedAsterisk a)
|
||||
}
|
||||
else if (s instanceof QualifiedAsterisk a) {
|
||||
|
||||
|
||||
|
||||
|
||||
returningResolvedAsterisks.addAll(Arrays.asList(a.qualifier().fields()));
|
||||
else if (s instanceof Asterisk)
|
||||
}
|
||||
else if (s instanceof Asterisk) {
|
||||
|
||||
|
||||
|
||||
|
||||
returningResolvedAsterisks.addAll(Arrays.asList(table.fields()));
|
||||
else if (s instanceof Row r)
|
||||
}
|
||||
else if (s instanceof Row r) {
|
||||
returningResolvedAsterisks.add(new RowAsField<>(r));
|
||||
else if (s instanceof Table<?> t)
|
||||
}
|
||||
else if (s instanceof Table<?> t) {
|
||||
returningResolvedAsterisks.add(new TableAsField<>(t));
|
||||
else
|
||||
}
|
||||
else {
|
||||
throw new UnsupportedOperationException("Type not supported: " + s);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// @Override
|
||||
@ -924,14 +940,7 @@ abstract class AbstractDMLQuery<R extends Record> extends AbstractRowCountQuery
|
||||
ctx.formatSeparator()
|
||||
.visit(K_RETURNING)
|
||||
.sql(' ')
|
||||
.declareFields(true, c -> c.visit(
|
||||
|
||||
// Firebird didn't support asterisks at all here until version 4.0
|
||||
// MariaDB doesn't support qualified asterisks: https://jira.mariadb.org/browse/MDEV-23178
|
||||
NO_SUPPORT_RETURNING_ASTERISK.contains(c.dialect())
|
||||
? new SelectFieldList<>(returningResolvedAsterisks)
|
||||
: returning
|
||||
));
|
||||
.declareFields(true, c -> c.visit(returningOrResolvedAsterisks(c)));
|
||||
|
||||
if (unqualify)
|
||||
ctx.qualify(qualify);
|
||||
@ -939,6 +948,15 @@ abstract class AbstractDMLQuery<R extends Record> extends AbstractRowCountQuery
|
||||
}
|
||||
}
|
||||
|
||||
private QueryPart returningOrResolvedAsterisks(Context<?> c){
|
||||
|
||||
// Firebird didn't support asterisks at all here until version 4.0
|
||||
// MariaDB doesn't support qualified asterisks: https://jira.mariadb.org/browse/MDEV-23178
|
||||
return NO_SUPPORT_RETURNING_ASTERISK.contains(c.dialect()) || forceResolveAsterisks
|
||||
? new SelectFieldList<>(returningResolvedAsterisks)
|
||||
: returning;
|
||||
}
|
||||
|
||||
final boolean nativeSupportReturning(Scope ctx) {
|
||||
|
||||
// [#15316] The historic RETURNING emulation of SQLite was available for INSERT only, using
|
||||
|
||||
@ -70,6 +70,7 @@ import org.jooq.Converter;
|
||||
import org.jooq.DataType;
|
||||
import org.jooq.EmbeddableRecord;
|
||||
import org.jooq.Field;
|
||||
import org.jooq.Fields;
|
||||
import org.jooq.JSONFormat;
|
||||
import org.jooq.Name;
|
||||
import org.jooq.Record;
|
||||
@ -106,6 +107,7 @@ import org.jooq.exception.InvalidResultException;
|
||||
import org.jooq.exception.MappingException;
|
||||
import org.jooq.tools.StringUtils;
|
||||
|
||||
import org.jetbrains.annotations.ApiStatus.Internal;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.w3c.dom.Document;
|
||||
import org.xml.sax.ContentHandler;
|
||||
@ -117,7 +119,13 @@ import org.xml.sax.SAXException;
|
||||
* @author Lukas Eder
|
||||
*/
|
||||
@SuppressWarnings({ "rawtypes", "unchecked" })
|
||||
abstract class AbstractRecord extends AbstractStore implements Record {
|
||||
abstract class AbstractRecord
|
||||
extends
|
||||
AbstractStore
|
||||
implements
|
||||
Record,
|
||||
FieldsTrait
|
||||
{
|
||||
|
||||
final AbstractRow<? extends AbstractRecord> fields;
|
||||
final Object[] values;
|
||||
@ -176,138 +184,9 @@ abstract class AbstractRecord extends AbstractStore implements Record {
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public final Field<?>[] fields() {
|
||||
return fields.fields();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Stream<Field<?>> fieldStream() {
|
||||
return fields.fieldStream();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final <T> Field<T> field(Field<T> field) {
|
||||
return fields.field(field);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Field<?> field(String name) {
|
||||
return fields.field(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final <T> Field<T> field(String name, Class<T> type) {
|
||||
return fields.field(name, type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final <T> Field<T> field(String name, DataType<T> dataType) {
|
||||
return fields.field(name, dataType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Field<?> field(Name name) {
|
||||
return fields.field(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final <T> Field<T> field(Name name, Class<T> type) {
|
||||
return fields.field(name, type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final <T> Field<T> field(Name name, DataType<T> dataType) {
|
||||
return fields.field(name, dataType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Field<?> field(int index) {
|
||||
return index >= 0 && index < fields.size() ? fields.field(index) : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final <T> Field<T> field(int index, Class<T> type) {
|
||||
return fields.field(index, type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final <T> Field<T> field(int index, DataType<T> dataType) {
|
||||
return fields.field(index, dataType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Field<?>[] fields(Field<?>... f) {
|
||||
return fields.fields(f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Field<?>[] fields(String... fieldNames) {
|
||||
return fields.fields(fieldNames);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Field<?>[] fields(Name... fieldNames) {
|
||||
return fields.fields(fieldNames);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Field<?>[] fields(int... fieldIndexes) {
|
||||
return fields.fields(fieldIndexes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final int indexOf(Field<?> field) {
|
||||
return fields.indexOf(field);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final int indexOf(String fieldName) {
|
||||
return fields.indexOf(fieldName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final int indexOf(Name fieldName) {
|
||||
return fields.indexOf(fieldName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Class<?>[] types() {
|
||||
return fields.types();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Class<?> type(int fieldIndex) {
|
||||
return fields.type(fieldIndex);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Class<?> type(String fieldName) {
|
||||
return fields.type(fieldName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Class<?> type(Name fieldName) {
|
||||
return fields.type(fieldName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final DataType<?>[] dataTypes() {
|
||||
return fields.dataTypes();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final DataType<?> dataType(int fieldIndex) {
|
||||
return fields.dataType(fieldIndex);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final DataType<?> dataType(String fieldName) {
|
||||
return fields.dataType(fieldName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final DataType<?> dataType(Name fieldName) {
|
||||
return fields.dataType(fieldName);
|
||||
@Internal
|
||||
public final Fields internalFieldsRow() {
|
||||
return fields;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
@ -61,6 +61,7 @@ import org.jooq.Context;
|
||||
import org.jooq.Converter;
|
||||
import org.jooq.DataType;
|
||||
import org.jooq.Field;
|
||||
import org.jooq.Fields;
|
||||
import org.jooq.Name;
|
||||
import org.jooq.QueryPart;
|
||||
import org.jooq.Record;
|
||||
@ -79,7 +80,14 @@ import org.jooq.impl.QOM.UnmodifiableList;
|
||||
* A common base class for the various degrees of {@link Row1}, {@link Row2},
|
||||
* etc.
|
||||
*/
|
||||
abstract class AbstractRow<R extends Record> extends AbstractQueryPart implements Row, SelectField<R> {
|
||||
abstract class AbstractRow<R extends Record>
|
||||
extends
|
||||
AbstractQueryPart
|
||||
implements
|
||||
Row,
|
||||
FieldsTrait,
|
||||
SelectField<R>
|
||||
{
|
||||
|
||||
private static final Clause[] CLAUSES = { FIELD_ROW };
|
||||
|
||||
@ -300,170 +308,16 @@ abstract class AbstractRow<R extends Record> extends AbstractQueryPart implement
|
||||
return fields.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Fields internalFieldsRow() {
|
||||
return fields;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Row fieldsRow() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Stream<Field<?>> fieldStream() {
|
||||
return Stream.of(fields());
|
||||
}
|
||||
|
||||
@Override
|
||||
public final <T> Field<T> field(Field<T> field) {
|
||||
return fields.field(field);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated This method hides static import {@link DSL#field(String)}.
|
||||
*/
|
||||
@Deprecated
|
||||
@Override
|
||||
public final Field<?> field(String name) {
|
||||
return fields.field(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated This method hides static import {@link DSL#field(String, Class)}.
|
||||
*/
|
||||
@Deprecated
|
||||
@Override
|
||||
public final <T> Field<T> field(String name, Class<T> type) {
|
||||
return fields.field(name, type);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated This method hides static import {@link DSL#field(String, DataType)}.
|
||||
*/
|
||||
@Deprecated
|
||||
@Override
|
||||
public final <T> Field<T> field(String name, DataType<T> dataType) {
|
||||
return fields.field(name, dataType);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated This method hides static import {@link DSL#field(Name)}.
|
||||
*/
|
||||
@Deprecated
|
||||
@Override
|
||||
public final Field<?> field(Name name) {
|
||||
return fields.field(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated This method hides static import {@link DSL#field(Name, Class)}.
|
||||
*/
|
||||
@Deprecated
|
||||
@Override
|
||||
public final <T> Field<T> field(Name name, Class<T> type) {
|
||||
return fields.field(name, type);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated This method hides static import {@link DSL#field(Name, DataType)}.
|
||||
*/
|
||||
@Deprecated
|
||||
@Override
|
||||
public final <T> Field<T> field(Name name, DataType<T> dataType) {
|
||||
return fields.field(name, dataType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Field<?> field(int index) {
|
||||
return fields.field(index);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final <T> Field<T> field(int index, Class<T> type) {
|
||||
return fields.field(index, type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final <T> Field<T> field(int index, DataType<T> dataType) {
|
||||
return fields.field(index, dataType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Field<?>[] fields() {
|
||||
return fields.fields();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Field<?>[] fields(Field<?>... f) {
|
||||
return fields.fields(f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Field<?>[] fields(String... fieldNames) {
|
||||
return fields.fields(fieldNames);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Field<?>[] fields(Name... fieldNames) {
|
||||
return fields.fields(fieldNames);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Field<?>[] fields(int... fieldIndexes) {
|
||||
return fields.fields(fieldIndexes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final int indexOf(Field<?> field) {
|
||||
return fields.indexOf(field);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final int indexOf(String fieldName) {
|
||||
return fields.indexOf(fieldName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final int indexOf(Name fieldName) {
|
||||
return fields.indexOf(fieldName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Class<?>[] types() {
|
||||
return fields.types();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Class<?> type(int fieldIndex) {
|
||||
return fields.type(fieldIndex);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Class<?> type(String fieldName) {
|
||||
return fields.type(fieldName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Class<?> type(Name fieldName) {
|
||||
return fields.type(fieldName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final DataType<?>[] dataTypes() {
|
||||
return fields.dataTypes();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final DataType<?> dataType(int fieldIndex) {
|
||||
return fields.dataType(fieldIndex);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final DataType<?> dataType(String fieldName) {
|
||||
return fields.dataType(fieldName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final DataType<?> dataType(Name fieldName) {
|
||||
return fields.dataType(fieldName);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// [NOT] NULL predicates
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
@ -193,7 +193,7 @@ final class CommonTableExpressionImpl<R extends Record> extends AbstractTable<R>
|
||||
}
|
||||
|
||||
final FieldsImpl<R> fields1() {
|
||||
Field<?>[] s = FieldsImpl.fieldsRow0((FieldsTrait) query).fields();
|
||||
Field<?>[] s = FieldsImpl.internalFieldsRow0((FieldsTrait) query).fields();
|
||||
|
||||
// [#10565] Can't reuse s.length, see explanation below
|
||||
Field<?>[] f = new Field[Tools.degree(query)];
|
||||
|
||||
@ -37,7 +37,7 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.impl.FieldsImpl.fieldsRow0;
|
||||
import static org.jooq.impl.FieldsImpl.internalFieldsRow0;
|
||||
import static org.jooq.impl.Tools.EMPTY_NAME;
|
||||
import static org.jooq.impl.Tools.map;
|
||||
|
||||
@ -136,7 +136,7 @@ implements
|
||||
if (fieldNameFunction != null)
|
||||
return new CommonTableExpressionImpl(
|
||||
new DerivedColumnListImpl(name, map(
|
||||
fieldsRow0((FieldsTrait) q).fields(),
|
||||
internalFieldsRow0((FieldsTrait) q).fields(),
|
||||
(f, i) -> DSL.name(fieldNameFunction.apply(f, i)),
|
||||
Name[]::new
|
||||
)),
|
||||
|
||||
@ -58,6 +58,7 @@ import org.jooq.Context;
|
||||
import org.jooq.Converter;
|
||||
import org.jooq.DataType;
|
||||
import org.jooq.Field;
|
||||
import org.jooq.Fields;
|
||||
import org.jooq.Name;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.RecordMapper;
|
||||
@ -205,8 +206,8 @@ final class FieldsImpl<R extends Record> extends AbstractQueryPart implements Re
|
||||
* [#13341] Prevent costly calls to Select.asTable() where not strictly
|
||||
* needed.
|
||||
*/
|
||||
static final Row fieldsRow0(FieldsTrait fields) {
|
||||
return fields instanceof Select<?> s ? s.asTable("t").fieldsRow() : fields.fieldsRow();
|
||||
static final Fields internalFieldsRow0(FieldsTrait fields) {
|
||||
return fields instanceof Select<?> s ? ((FieldsTrait) s.asTable("t")).internalFieldsRow() : fields.internalFieldsRow();
|
||||
}
|
||||
|
||||
private static final ThrowingFunction<SelectField<?>, Field<?>, RuntimeException> toField() {
|
||||
@ -547,6 +548,17 @@ final class FieldsImpl<R extends Record> extends AbstractQueryPart implements Re
|
||||
// XXX: List-like API
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
|
||||
@Override
|
||||
public final Fields fieldsIncludingHidden() {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
final void add(Field<?> f) {
|
||||
|
||||
|
||||
|
||||
@ -37,7 +37,7 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.impl.FieldsImpl.fieldsRow0;
|
||||
import static org.jooq.impl.FieldsImpl.internalFieldsRow0;
|
||||
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@ -46,6 +46,8 @@ import org.jooq.Field;
|
||||
import org.jooq.Fields;
|
||||
import org.jooq.Name;
|
||||
|
||||
import org.jetbrains.annotations.ApiStatus.Internal;
|
||||
|
||||
/**
|
||||
* An internal base implementation of {@link Fields}, implementing all the
|
||||
* convenience methods.
|
||||
@ -54,19 +56,29 @@ import org.jooq.Name;
|
||||
*/
|
||||
interface FieldsTrait extends Fields {
|
||||
|
||||
@Internal
|
||||
default Fields internalFieldsRow() {
|
||||
return fieldsRow();
|
||||
}
|
||||
|
||||
@Override
|
||||
default Fields fieldsIncludingHidden() {
|
||||
return internalFieldsRow().fieldsIncludingHidden();
|
||||
}
|
||||
|
||||
@Override
|
||||
default Field<?>[] fields() {
|
||||
return fieldsRow().fields();
|
||||
return internalFieldsRow().fields();
|
||||
}
|
||||
|
||||
@Override
|
||||
default Stream<Field<?>> fieldStream() {
|
||||
return fieldsRow().fieldStream();
|
||||
return internalFieldsRow().fieldStream();
|
||||
}
|
||||
|
||||
@Override
|
||||
default <T> Field<T> field(Field<T> field) {
|
||||
return fieldsRow().field(field);
|
||||
return internalFieldsRow().field(field);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -75,7 +87,7 @@ interface FieldsTrait extends Fields {
|
||||
@Deprecated
|
||||
@Override
|
||||
default Field<?> field(String name) {
|
||||
return fieldsRow().field(name);
|
||||
return internalFieldsRow().field(name);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -84,7 +96,7 @@ interface FieldsTrait extends Fields {
|
||||
@Deprecated
|
||||
@Override
|
||||
default <T> Field<T> field(String name, Class<T> type) {
|
||||
return fieldsRow().field(name, type);
|
||||
return internalFieldsRow().field(name, type);
|
||||
}
|
||||
|
||||
|
||||
@ -94,7 +106,7 @@ interface FieldsTrait extends Fields {
|
||||
@Deprecated
|
||||
@Override
|
||||
default <T> Field<T> field(String name, DataType<T> dataType) {
|
||||
return fieldsRow().field(name, dataType);
|
||||
return internalFieldsRow().field(name, dataType);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -103,7 +115,7 @@ interface FieldsTrait extends Fields {
|
||||
@Deprecated
|
||||
@Override
|
||||
default Field<?> field(Name name) {
|
||||
return fieldsRow().field(name);
|
||||
return internalFieldsRow().field(name);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -112,7 +124,7 @@ interface FieldsTrait extends Fields {
|
||||
@Deprecated
|
||||
@Override
|
||||
default <T> Field<T> field(Name name, Class<T> type) {
|
||||
return fieldsRow().field(name, type);
|
||||
return internalFieldsRow().field(name, type);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -121,96 +133,96 @@ interface FieldsTrait extends Fields {
|
||||
@Deprecated
|
||||
@Override
|
||||
default <T> Field<T> field(Name name, DataType<T> dataType) {
|
||||
return fieldsRow().field(name, dataType);
|
||||
return internalFieldsRow().field(name, dataType);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Field<?> field(int index) {
|
||||
return fieldsRow().field(index);
|
||||
return internalFieldsRow().field(index);
|
||||
}
|
||||
|
||||
@Override
|
||||
default <T> Field<T> field(int index, Class<T> type) {
|
||||
return fieldsRow().field(index, type);
|
||||
return internalFieldsRow().field(index, type);
|
||||
}
|
||||
|
||||
@Override
|
||||
default <T> Field<T> field(int index, DataType<T> dataType) {
|
||||
return fieldsRow().field(index, dataType);
|
||||
return internalFieldsRow().field(index, dataType);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Field<?>[] fields(Field<?>... fields) {
|
||||
return fieldsRow().fields(fields);
|
||||
return internalFieldsRow().fields(fields);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Field<?>[] fields(String... names) {
|
||||
return fieldsRow().fields(names);
|
||||
return internalFieldsRow().fields(names);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Field<?>[] fields(Name... names) {
|
||||
return fieldsRow().fields(names);
|
||||
return internalFieldsRow().fields(names);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Field<?>[] fields(int... indexes) {
|
||||
return fieldsRow().fields(indexes);
|
||||
return internalFieldsRow().fields(indexes);
|
||||
}
|
||||
|
||||
@Override
|
||||
default int indexOf(Field<?> field) {
|
||||
return fieldsRow().indexOf(field);
|
||||
return internalFieldsRow().indexOf(field);
|
||||
}
|
||||
|
||||
@Override
|
||||
default int indexOf(String name) {
|
||||
return fieldsRow().indexOf(name);
|
||||
return internalFieldsRow().indexOf(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
default int indexOf(Name name) {
|
||||
return fieldsRow().indexOf(name);
|
||||
return internalFieldsRow().indexOf(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Class<?>[] types() {
|
||||
return fieldsRow0(this).types();
|
||||
return internalFieldsRow0(this).types();
|
||||
}
|
||||
|
||||
@Override
|
||||
default Class<?> type(int index) {
|
||||
return fieldsRow0(this).type(index);
|
||||
return internalFieldsRow0(this).type(index);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Class<?> type(String name) {
|
||||
return fieldsRow0(this).type(name);
|
||||
return internalFieldsRow0(this).type(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
default Class<?> type(Name name) {
|
||||
return fieldsRow0(this).type(name);
|
||||
return internalFieldsRow0(this).type(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
default DataType<?>[] dataTypes() {
|
||||
return fieldsRow0(this).dataTypes();
|
||||
return internalFieldsRow0(this).dataTypes();
|
||||
}
|
||||
|
||||
@Override
|
||||
default DataType<?> dataType(int index) {
|
||||
return fieldsRow0(this).dataType(index);
|
||||
return internalFieldsRow0(this).dataType(index);
|
||||
}
|
||||
|
||||
@Override
|
||||
default DataType<?> dataType(String name) {
|
||||
return fieldsRow0(this).dataType(name);
|
||||
return internalFieldsRow0(this).dataType(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
default DataType<?> dataType(Name name) {
|
||||
return fieldsRow0(this).dataType(name);
|
||||
return internalFieldsRow0(this).dataType(name);
|
||||
}
|
||||
}
|
||||
|
||||
@ -50,7 +50,7 @@ import static org.jooq.impl.ConstraintType.FOREIGN_KEY;
|
||||
import static org.jooq.impl.ConstraintType.PRIMARY_KEY;
|
||||
import static org.jooq.impl.DSL.name;
|
||||
import static org.jooq.impl.DSL.schema;
|
||||
import static org.jooq.impl.FieldsImpl.fieldsRow0;
|
||||
import static org.jooq.impl.FieldsImpl.internalFieldsRow0;
|
||||
import static org.jooq.impl.SQLDataType.BIGINT;
|
||||
import static org.jooq.impl.Tools.EMPTY_FIELD;
|
||||
import static org.jooq.impl.Tools.allMatch;
|
||||
@ -1416,7 +1416,7 @@ final class Interpreter {
|
||||
for (int i = 0; i < columns.size(); i++)
|
||||
addField(t, Integer.MAX_VALUE, (UnqualifiedName) columns.get(i).getUnqualifiedName(), columns.get(i).getDataType());
|
||||
else if (select != null)
|
||||
for (Field<?> column : fieldsRow0((FieldsTrait) select).fields())
|
||||
for (Field<?> column : internalFieldsRow0((FieldsTrait) select).fields())
|
||||
addField(t, Integer.MAX_VALUE, (UnqualifiedName) column.getUnqualifiedName(), column.getDataType());
|
||||
|
||||
return t;
|
||||
|
||||
@ -15560,7 +15560,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
|
||||
Name q = lookupName.qualifier();
|
||||
boolean x = q.qualified();
|
||||
if (x && q.equals(t.value().getQualifiedName()) || !x && q.last().equals(t.value().getName()))
|
||||
if ((found = Value.of(t.scopeLevel(), t.value().field(lookup.getName()))) != null)
|
||||
if ((found = Value.of(t.scopeLevel(), t.value().fieldsIncludingHidden().field(lookup.getName()))) != null)
|
||||
break tableScopeLoop;
|
||||
|
||||
|
||||
@ -15571,7 +15571,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
|
||||
|
||||
|
||||
}
|
||||
else if ((f = Value.of(t.scopeLevel(), t.value().field(lookup.getName()))) != null) {
|
||||
else if ((f = Value.of(t.scopeLevel(), t.value().fieldsIncludingHidden().field(lookup.getName()))) != null) {
|
||||
if (found == null || found.scopeLevel() < f.scopeLevel()) {
|
||||
found = f;
|
||||
}
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function1;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record1;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row1;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function10;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record10;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row10;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function11;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record11;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row11;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function12;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record12;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row12;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function13;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record13;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row13;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function14;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record14;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row14;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function15;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record15;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row15;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function16;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record16;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row16;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function17;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record17;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row17;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function18;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record18;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row18;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function19;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record19;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row19;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function2;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record2;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row2;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function20;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record20;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row20;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function21;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record21;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row21;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function22;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record22;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row22;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function3;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record3;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row3;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function4;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record4;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row4;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function5;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record5;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row5;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function6;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record6;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row6;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function7;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record7;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row7;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function8;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record8;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row8;
|
||||
|
||||
@ -51,7 +51,6 @@ import org.jooq.Function9;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Record9;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.Row9;
|
||||
|
||||
@ -49,7 +49,6 @@ import org.jooq.Condition;
|
||||
import org.jooq.Field;
|
||||
import org.jooq.QuantifiedSelect;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Records;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.RowN;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user