[jOOQ/jOOQ#13465] Parameters and UDTFields can also be defaulted
This commit is contained in:
parent
825e698455
commit
b17ec92d98
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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 };
|
||||
|
||||
|
||||
@ -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> {}
|
||||
@ -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;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user