From 53528b3e86f2a2139af62c024a8a6af2968622f2 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 7 Sep 2021 13:14:15 +0200 Subject: [PATCH] [jOOQ/jOOQ#12210] Aliasing implicit join paths produces invalid queries --- .../main/java/org/jooq/impl/TableImpl.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/TableImpl.java b/jOOQ/src/main/java/org/jooq/impl/TableImpl.java index 84da1c5ec8..e34379c755 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/TableImpl.java @@ -196,8 +196,19 @@ public class TableImpl extends AbstractTable implements Sco super(options, name, schema, comment); this.fields = new FieldsImpl<>(); - this.child = child; - this.childPath = path == null ? null : Tools.aliasedKey((ForeignKey) path, child, this); + + if (child != null) { + this.child = child; + this.childPath = path == null ? null : Tools.aliasedKey((ForeignKey) path, child, this); + } + else if (aliased instanceof TableImpl) { + this.child = ((TableImpl) aliased).child; + this.childPath = ((TableImpl) aliased).childPath; + } + else { + this.child = null; + this.childPath = null; + } if (aliased != null) { @@ -206,12 +217,12 @@ public class TableImpl extends AbstractTable implements Sco Alias> existingAlias = Tools.alias(aliased); if (existingAlias != null) - alias = new Alias<>(existingAlias.wrapped, this, name, existingAlias.fieldAliases, existingAlias.wrapInParentheses); + this.alias = new Alias<>(existingAlias.wrapped, this, name, existingAlias.fieldAliases, existingAlias.wrapInParentheses); else - alias = new Alias<>(aliased, this, name); + this.alias = new Alias<>(aliased, this, name); } else - alias = null; + this.alias = null; this.parameters = parameters; }