You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2015/03/28 22:23:59 UTC
[10/10] incubator-calcite git commit: [CALCITE-650] Add metadata for
average size of a tuple in SemiJoin (Jesus Camacho Rodriguez)
[CALCITE-650] Add metadata for average size of a tuple in SemiJoin (Jesus Camacho Rodriguez)
Close apache/incubator-calcite#67
Project: http://git-wip-us.apache.org/repos/asf/incubator-calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-calcite/commit/e2833a29
Tree: http://git-wip-us.apache.org/repos/asf/incubator-calcite/tree/e2833a29
Diff: http://git-wip-us.apache.org/repos/asf/incubator-calcite/diff/e2833a29
Branch: refs/heads/master
Commit: e2833a297cf1308fe63795ebabb52a2d66e3b863
Parents: 0f824f8
Author: Jesus Camacho Rodriguez <jc...@hortonworks.com>
Authored: Fri Mar 27 19:16:13 2015 +0000
Committer: Julian Hyde <jh...@apache.org>
Committed: Fri Mar 27 20:14:19 2015 -0700
----------------------------------------------------------------------
.../org/apache/calcite/rel/metadata/RelMdSize.java | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/e2833a29/core/src/main/java/org/apache/calcite/rel/metadata/RelMdSize.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdSize.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdSize.java
index 1a42f01..27e8a0c 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdSize.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdSize.java
@@ -26,6 +26,7 @@ import org.apache.calcite.rel.core.Intersect;
import org.apache.calcite.rel.core.Join;
import org.apache.calcite.rel.core.Minus;
import org.apache.calcite.rel.core.Project;
+import org.apache.calcite.rel.core.SemiJoin;
import org.apache.calcite.rel.core.Sort;
import org.apache.calcite.rel.core.TableScan;
import org.apache.calcite.rel.core.Union;
@@ -172,13 +173,21 @@ public class RelMdSize {
return list.build();
}
+ public List<Double> averageColumnSizes(SemiJoin rel) {
+ return averageJoinColumnSizes(rel, true);
+ }
+
public List<Double> averageColumnSizes(Join rel) {
+ return averageJoinColumnSizes(rel, false);
+ }
+
+ private List<Double> averageJoinColumnSizes(Join rel, boolean semijoin) {
final RelNode left = rel.getLeft();
final RelNode right = rel.getRight();
final List<Double> lefts =
RelMetadataQuery.getAverageColumnSizes(left);
- final List<Double> rights =
- RelMetadataQuery.getAverageColumnSizes(right);
+ final List<Double> rights = semijoin
+ ? null : RelMetadataQuery.getAverageColumnSizes(right);
if (lefts == null && rights == null) {
return null;
}