From 8c376b626e11567a968ade03ddeedea892defb46 Mon Sep 17 00:00:00 2001 From: Atri Sharma Date: Thu, 17 May 2018 16:29:41 +0530 Subject: [PATCH 1/2] CALCITE-500 -- Change cost model of EnumerableJoin to put smaller set as second. This will ensure that smaller side is built and larger side is probed --- .../org/apache/calcite/adapter/enumerable/EnumerableJoin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableJoin.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableJoin.java index cfd00a418c65..648357caa190 100644 --- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableJoin.java +++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableJoin.java @@ -149,12 +149,12 @@ public static EnumerableJoin create( if (Double.isInfinite(leftRowCount)) { rowCount = leftRowCount; } else { - rowCount += Util.nLogN(leftRowCount); + rowCount += leftRowCount; } if (Double.isInfinite(rightRowCount)) { rowCount = rightRowCount; } else { - rowCount += rightRowCount; + rowCount += Util.nLogN(rightRowCount); } return planner.getCostFactory().makeCost(rowCount, 0, 0); } From e9b5b0f8f0af81078eda2d2d3a0f82c8b9e815ff Mon Sep 17 00:00:00 2001 From: Atri Sharma Date: Thu, 17 May 2018 20:05:33 +0530 Subject: [PATCH 2/2] Fix the erratic changes earlier --- .../apache/calcite/adapter/enumerable/EnumerableJoin.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableJoin.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableJoin.java index 648357caa190..aba5fe06e040 100644 --- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableJoin.java +++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableJoin.java @@ -149,12 +149,12 @@ public static EnumerableJoin create( if (Double.isInfinite(leftRowCount)) { rowCount = leftRowCount; } else { - rowCount += leftRowCount; + rowCount += Util.nLogN(leftRowCount); } if (Double.isInfinite(rightRowCount)) { rowCount = rightRowCount; } else { - rowCount += Util.nLogN(rightRowCount); + rowCount += rightRowCount; } return planner.getCostFactory().makeCost(rowCount, 0, 0); } @@ -202,10 +202,10 @@ public Result implement(EnumerableRelImplementor implementor, Prefer pref) { physType, builder.append( Expressions.call( - leftExpression, + rightExpression, BuiltInMethod.JOIN.method, Expressions.list( - rightExpression, + leftExpression, leftResult.physType.generateAccessor(leftKeys), rightResult.physType.generateAccessor(rightKeys), EnumUtils.joinSelector(joinType,