From 8cc5469e98841fcbec10ceb88621de79668200a0 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 29 Apr 2021 12:28:36 +0200 Subject: [PATCH] [jOOQ/jOOQ#11819] Coerce should delegate all QueryPartInternal calls to the wrapped field --- jOOQ/src/main/java/org/jooq/impl/Coerce.java | 58 +++++++++++++++++++- 1 file changed, 55 insertions(+), 3 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/Coerce.java b/jOOQ/src/main/java/org/jooq/impl/Coerce.java index 4a6a012ed7..696414f63a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Coerce.java +++ b/jOOQ/src/main/java/org/jooq/impl/Coerce.java @@ -37,9 +37,11 @@ */ package org.jooq.impl; +import org.jooq.Clause; import org.jooq.Context; import org.jooq.DataType; import org.jooq.Field; +import org.jooq.Name; /** * @author Lukas Eder @@ -49,18 +51,68 @@ final class Coerce extends AbstractField { /** * Generated UID */ - private static final long serialVersionUID = -6776617606751542856L; + private static final long serialVersionUID = -6776617606751542856L; - private final Field field; + private final AbstractField field; public Coerce(Field field, DataType type) { super(field.getQualifiedName(), type); - this.field = (field instanceof Coerce) ? ((Coerce) field).field : field; + this.field = (field instanceof Coerce) ? ((Coerce) field).field : (AbstractField) field; } @Override public final void accept(Context ctx) { ctx.visit(field); } + + @Override + public final Clause[] clauses(Context ctx) { + return field.clauses(ctx); + } + + @Override + boolean isPossiblyNullable() { + return field.isPossiblyNullable(); + } + + @Override + public final Field as(Name alias) { + return field.as(alias).coerce(getDataType()); + } + + @Override + public final boolean rendersContent(Context ctx) { + return field.rendersContent(ctx); + } + + @Override + public final boolean declaresFields() { + return field.declaresFields(); + } + + @Override + public final boolean declaresTables() { + return field.declaresTables(); + } + + @Override + public final boolean declaresWindows() { + return field.declaresWindows(); + } + + @Override + public final boolean declaresCTE() { + return field.declaresCTE(); + } + + @Override + public final boolean declaresParameters() { + return field.declaresParameters(); + } + + @Override + public final boolean generatesCast() { + return field.generatesCast(); + } }