[jOOQ/jOOQ#13465] Parameters and UDTFields can also be defaulted

This commit is contained in:
Lukas Eder 2022-04-20 15:21:13 +02:00
parent 825e698455
commit b17ec92d98
6 changed files with 8 additions and 8 deletions

View File

@ -59,9 +59,9 @@ abstract class AbstractTypedNamed<T> extends AbstractNamed implements Typed<T> {
super(name, comment);
// [#13465] Only field references are allowed to be computed or defaulted
this.type = type.computed() && !(this instanceof FieldReference)
this.type = type.computed() && !(this instanceof TypedReference)
? type.generatedAlwaysAs((Generator<?, ?, T>) null)
: type.defaulted() && !(this instanceof FieldReference)
: type.defaulted() && !(this instanceof TypedReference)
? type.default_((Field<T>) null)
: type;
}

View File

@ -69,7 +69,7 @@ import org.jooq.impl.QOM.UEmpty;
*
* @author Lukas Eder
*/
final class ParameterImpl<T> extends AbstractField<T> implements Parameter<T>, UEmpty {
final class ParameterImpl<T> extends AbstractField<T> implements Parameter<T>, UEmpty, TypedReference<T> {
private final ParamMode paramMode;
private final boolean isDefaulted;

View File

@ -43,7 +43,7 @@ import org.jooq.QueryPart;
import org.jooq.SQL;
import org.jooq.impl.QOM.UEmptyField;
final class SQLField<T> extends AbstractField<T> implements UEmptyField<T>, FieldReference<T> {
final class SQLField<T> extends AbstractField<T> implements UEmptyField<T>, TypedReference<T> {
private final QueryPart delegate;

View File

@ -67,7 +67,7 @@ import org.jooq.tools.StringUtils;
*
* @author Lukas Eder
*/
class TableFieldImpl<R extends Record, T> extends AbstractField<T> implements TableField<R, T>, SimpleQueryPart, UNotYetImplemented, FieldReference<T> {
class TableFieldImpl<R extends Record, T> extends AbstractField<T> implements TableField<R, T>, SimpleQueryPart, UNotYetImplemented, TypedReference<T> {
private static final Clause[] CLAUSES = { FIELD, FIELD_REFERENCE };

View File

@ -37,11 +37,11 @@
*/
package org.jooq.impl;
import org.jooq.Field;
import org.jooq.Typed;
/**
* A marker interface for field references.
*
* @author Lukas Eder
*/
interface FieldReference<T> extends Field<T> {}
interface TypedReference<T> extends Typed<T> {}

View File

@ -53,7 +53,7 @@ import org.jooq.impl.QOM.UNotYetImplemented;
*
* @author Lukas Eder
*/
final class UDTFieldImpl<R extends UDTRecord<R>, T> extends AbstractField<T> implements UDTField<R, T>, UNotYetImplemented {
final class UDTFieldImpl<R extends UDTRecord<R>, T> extends AbstractField<T> implements UDTField<R, T>, UNotYetImplemented, TypedReference<T> {
private final UDT<R> udt;