From f037b878b762497233d3702fdb5d79b9e959db46 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 28 Mar 2022 12:11:02 +0200 Subject: [PATCH] [jOOQ/jOOQ#13341] Avoid asTable() from CommonTableExpressionImpl::new --- .../main/java/org/jooq/impl/CommonTableExpressionImpl.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/CommonTableExpressionImpl.java b/jOOQ/src/main/java/org/jooq/impl/CommonTableExpressionImpl.java index e41865fb41..41f8cbd676 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CommonTableExpressionImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CommonTableExpressionImpl.java @@ -156,7 +156,9 @@ final class CommonTableExpressionImpl extends AbstractTable } final FieldsImpl fields1() { - Field[] s = query.fields(); + Field[] s = FieldsImpl.fieldsRow0((FieldsTrait) query).fields(); + + // [#10565] Can't reuse s.length, see explanation below Field[] f = new Field[Tools.degree(query)]; for (int i = 0; i < f.length; i++) { @@ -168,6 +170,9 @@ final class CommonTableExpressionImpl extends AbstractTable name.fieldNames.length > 0 ? name.fieldNames[i] : s[i].getUnqualifiedName()), + + // [#10565] The "scalar type" can be different for a query than the first column's type + // e.g. when projecting FOR XML or FOR JSON (DataType) (f.length == 1 ? Tools.scalarType(query) : s[i].getDataType()) ); }