From 2dbcd8a8f42f13e4a68570b19bb6b47244687b77 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 12 Feb 2024 11:48:01 +0100 Subject: [PATCH] [jOOQ/jOOQ#16262] Avoid allocating JoinNode in scope registration of tables if unnecessary --- .../java/org/jooq/impl/AbstractContext.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java b/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java index fd14326ae1..31d29b29a4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java @@ -1347,20 +1347,22 @@ abstract class AbstractContext> extends AbstractScope imple Table root, List> tables ) { - if (result == null) - result = new JoinNode(ctx, root); + if (!tables.isEmpty()) { + if (result == null) + result = new JoinNode(ctx, root); - JoinNode node = result; - for (int i = tables.size() - 1; i >= 0; i--) { - TableImpl t = tables.get(i); + JoinNode node = result; + for (int i = tables.size() - 1; i >= 0; i--) { + TableImpl t = tables.get(i); - if (t.childPath != null) - node = node.pathsToOne.computeIfAbsent(t.childPath, k -> new JoinNode(ctx, t)); - else - node = node.pathsToMany.computeIfAbsent(t.parentPath, k -> new JoinNode(ctx, t)); + if (t.childPath != null) + node = node.pathsToOne.computeIfAbsent(t.childPath, k -> new JoinNode(ctx, t)); + else + node = node.pathsToMany.computeIfAbsent(t.parentPath, k -> new JoinNode(ctx, t)); - if (i == 0) - node.references++; + if (i == 0) + node.references++; + } } return result;