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 2014/06/29 01:55:58 UTC

[1/2] git commit: Code formatting.

Repository: incubator-optiq
Updated Branches:
  refs/heads/master 71ebeaa81 -> 2db452ecb
  refs/heads/optiq-62b 9728dd91b -> 1d961d3b7


Code formatting.


Project: http://git-wip-us.apache.org/repos/asf/incubator-optiq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-optiq/commit/1d961d3b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-optiq/tree/1d961d3b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-optiq/diff/1d961d3b

Branch: refs/heads/optiq-62b
Commit: 1d961d3b7a09280bd8673b1dfc88e87b1522ed65
Parents: 9728dd9
Author: Julian Hyde <ju...@gmail.com>
Authored: Mon Jun 23 00:07:55 2014 -0700
Committer: Julian Hyde <ju...@gmail.com>
Committed: Mon Jun 23 00:07:55 2014 -0700

----------------------------------------------------------------------
 .../java/org/eigenbase/rel/rules/PushJoinThroughJoinRule.java  | 4 +---
 .../java/org/eigenbase/rel/rules/PushProjectPastJoinRule.java  | 5 +++--
 core/src/main/java/org/eigenbase/rel/rules/PushProjector.java  | 6 +++---
 core/src/main/java/org/eigenbase/relopt/RelOptUtil.java        | 4 ++--
 4 files changed, 9 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/1d961d3b/core/src/main/java/org/eigenbase/rel/rules/PushJoinThroughJoinRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/eigenbase/rel/rules/PushJoinThroughJoinRule.java b/core/src/main/java/org/eigenbase/rel/rules/PushJoinThroughJoinRule.java
index 5c2e411..5e343bf 100644
--- a/core/src/main/java/org/eigenbase/rel/rules/PushJoinThroughJoinRule.java
+++ b/core/src/main/java/org/eigenbase/rel/rules/PushJoinThroughJoinRule.java
@@ -259,9 +259,7 @@ public class PushJoinThroughJoinRule extends RelOptRule {
             new RexPermuteInputsShuttle(
                 Mappings.append(bottomJoin.mapping.inverse(),
                     Mappings.createIdentity(cCount)),
-                relA, relB
-            )
-        );
+                relA, relB));
 
     // Split the condition of topJoin into a conjunction. Each of the
     // parts that does not use columns from A can be pushed down.

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/1d961d3b/core/src/main/java/org/eigenbase/rel/rules/PushProjectPastJoinRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/eigenbase/rel/rules/PushProjectPastJoinRule.java b/core/src/main/java/org/eigenbase/rel/rules/PushProjectPastJoinRule.java
index 9c0c3a0..9f522a6 100644
--- a/core/src/main/java/org/eigenbase/rel/rules/PushProjectPastJoinRule.java
+++ b/core/src/main/java/org/eigenbase/rel/rules/PushProjectPastJoinRule.java
@@ -17,16 +17,17 @@
 */
 package org.eigenbase.rel.rules;
 
+import java.util.Arrays;
+
 import org.eigenbase.rel.*;
 import org.eigenbase.relopt.*;
 import org.eigenbase.rex.*;
 
-import com.google.common.collect.ImmutableSet;
 import org.eigenbase.util.CompositeList;
 import org.eigenbase.util.mapping.Mapping;
 import org.eigenbase.util.mapping.Mappings;
 
-import java.util.Arrays;
+import com.google.common.collect.ImmutableSet;
 
 /**
  * PushProjectPastJoinRule implements the rule for pushing a projection past a

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/1d961d3b/core/src/main/java/org/eigenbase/rel/rules/PushProjector.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/eigenbase/rel/rules/PushProjector.java b/core/src/main/java/org/eigenbase/rel/rules/PushProjector.java
index e5bf18b..789a6fd 100644
--- a/core/src/main/java/org/eigenbase/rel/rules/PushProjector.java
+++ b/core/src/main/java/org/eigenbase/rel/rules/PushProjector.java
@@ -25,15 +25,15 @@ import org.eigenbase.reltype.*;
 import org.eigenbase.rex.*;
 import org.eigenbase.sql.*;
 import org.eigenbase.util.Pair;
+import org.eigenbase.util.mapping.Mapping;
+import org.eigenbase.util.mapping.MappingType;
+import org.eigenbase.util.mapping.Mappings;
 
 import net.hydromatic.linq4j.Ord;
 
 import net.hydromatic.optiq.util.BitSets;
 
 import com.google.common.collect.ImmutableList;
-import org.eigenbase.util.mapping.Mapping;
-import org.eigenbase.util.mapping.MappingType;
-import org.eigenbase.util.mapping.Mappings;
 
 /**
  * PushProjector is a utility class used to perform operations used in push

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/1d961d3b/core/src/main/java/org/eigenbase/relopt/RelOptUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/eigenbase/relopt/RelOptUtil.java b/core/src/main/java/org/eigenbase/relopt/RelOptUtil.java
index 15ac6ff..d463864 100644
--- a/core/src/main/java/org/eigenbase/relopt/RelOptUtil.java
+++ b/core/src/main/java/org/eigenbase/relopt/RelOptUtil.java
@@ -1872,8 +1872,8 @@ public abstract class RelOptUtil {
     final int nTotalFields = nSysFields + nFieldsLeft + nFieldsRight;
 
     assert joinRel.mapping.getSourceCount() == nTotalFields;
-    assert joinRel.mapping.getTargetCount() ==
-        joinRel.getRowType().getFieldCount();
+    assert joinRel.mapping.getTargetCount()
+        == joinRel.getRowType().getFieldCount();
 
     // set the reference bitmaps for the left and right children
     BitSet leftBitmap =


[2/2] git commit: Fix a bug where composite SELECT DISTINCT would return duplicate rows.

Posted by jh...@apache.org.
Fix a bug where composite SELECT DISTINCT would return duplicate rows.


Project: http://git-wip-us.apache.org/repos/asf/incubator-optiq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-optiq/commit/2db452ec
Tree: http://git-wip-us.apache.org/repos/asf/incubator-optiq/tree/2db452ec
Diff: http://git-wip-us.apache.org/repos/asf/incubator-optiq/diff/2db452ec

Branch: refs/heads/master
Commit: 2db452ecbe0837d9f8207b5862558c031ac4aa7b
Parents: 71ebeaa
Author: Julian Hyde <ju...@gmail.com>
Authored: Sat Jun 28 16:36:39 2014 -0700
Committer: Julian Hyde <ju...@gmail.com>
Committed: Sat Jun 28 16:47:20 2014 -0700

----------------------------------------------------------------------
 .../hydromatic/optiq/rules/java/JavaRules.java  |   3 +-
 core/src/test/resources/sql/agg.oq              | 200 +++++++++++++++++++
 2 files changed, 201 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/2db452ec/core/src/main/java/net/hydromatic/optiq/rules/java/JavaRules.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/net/hydromatic/optiq/rules/java/JavaRules.java b/core/src/main/java/net/hydromatic/optiq/rules/java/JavaRules.java
index 266a7b4..3b17701 100644
--- a/core/src/main/java/net/hydromatic/optiq/rules/java/JavaRules.java
+++ b/core/src/main/java/net/hydromatic/optiq/rules/java/JavaRules.java
@@ -1180,8 +1180,7 @@ public class JavaRules {
                     childExp,
                     BuiltinMethod.DISTINCT.method,
                     Expressions.<Expression>list()
-                        .appendIfNotNull(
-                            keyPhysType.comparer()))));
+                        .appendIfNotNull(physType.comparer()))));
       } else {
         final Expression resultSelector =
             builder.append(

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/2db452ec/core/src/test/resources/sql/agg.oq
----------------------------------------------------------------------
diff --git a/core/src/test/resources/sql/agg.oq b/core/src/test/resources/sql/agg.oq
new file mode 100644
index 0000000..b718949
--- /dev/null
+++ b/core/src/test/resources/sql/agg.oq
@@ -0,0 +1,200 @@
+# outer.oq - Various kinds of outer join
+!use post
+!set outputformat mysql
+
+select * from emp;
++-------+--------+--------+
+| ENAME | DEPTNO | GENDER |
++-------+--------+--------+
+| Jane  |     10 | F      |
+| Bob   |     10 | M      |
+| Eric  |     20 | M      |
+| Susan |     30 | F      |
+| Alice |     30 | F      |
+| Adam  |     50 | M      |
+| Eve   |     50 | F      |
+| Grace |     60 | F      |
+| Wilma |        | F      |
++-------+--------+--------+
+(9 rows)
+
+!ok
+select * from emp join dept on emp.deptno = dept.deptno;
++-------+--------+--------+---------+-------------+
+| ENAME | DEPTNO | GENDER | DEPTNO0 | DNAME       |
++-------+--------+--------+---------+-------------+
+| Jane  |     10 | F      |      10 | Sales       |
+| Bob   |     10 | M      |      10 | Sales       |
+| Eric  |     20 | M      |      20 | Marketing   |
+| Susan |     30 | F      |      30 | Engineering |
+| Alice |     30 | F      |      30 | Engineering |
++-------+--------+--------+---------+-------------+
+(5 rows)
+
+!ok
+
+# The following test is disabled, because we cannot handle non-equi-join.
+# Following it are the results from MySQL.
+!if (false) {
+select * from emp join dept on emp.deptno = dept.deptno and emp.gender = 'F';
+ ename | deptno | gender | deptno | dname
+-------+--------+--------+--------+-------------
+ Jane  |     10 | F      |     10 | Sales
+ Susan |     30 | F      |     30 | Engineering
+ Alice |     30 | F      |     30 | Engineering
+
+!ok
+!}
+
+select * from emp join dept on emp.deptno = dept.deptno where emp.gender = 'F';
++-------+--------+--------+---------+-------------+
+| ENAME | DEPTNO | GENDER | DEPTNO0 | DNAME       |
++-------+--------+--------+---------+-------------+
+| Jane  |     10 | F      |      10 | Sales       |
+| Susan |     30 | F      |      30 | Engineering |
+| Alice |     30 | F      |      30 | Engineering |
++-------+--------+--------+---------+-------------+
+(3 rows)
+
+!ok
+
+select * from (select * from emp where gender ='F') as emp join dept on emp.deptno = dept.deptno;
++-------+--------+--------+---------+-------------+
+| ENAME | DEPTNO | GENDER | DEPTNO0 | DNAME       |
++-------+--------+--------+---------+-------------+
+| Jane  |     10 | F      |      10 | Sales       |
+| Susan |     30 | F      |      30 | Engineering |
+| Alice |     30 | F      |      30 | Engineering |
++-------+--------+--------+---------+-------------+
+(3 rows)
+
+!ok
+
+# The following test is disabled, because we cannot handle non-equi-join.
+# Following it are the results from MySQL.
+!if (false) {
+select * from emp left join dept on emp.deptno = dept.deptno and emp.gender = 'F';
+ ename | deptno | gender | deptno | dname
+-------+--------+--------+--------+-------------
+ Jane  |     10 | F      |     10 | Sales
+ Susan |     30 | F      |     30 | Engineering
+ Alice |     30 | F      |     30 | Engineering
+ Bob   |     10 | M      |   NULL | NULL
+ Eric  |     20 | M      |   NULL | NULL
+ Adam  |     50 | M      |   NULL | NULL
+ Eve   |     50 | F      |   NULL | NULL
+ Grace |     60 | F      |   NULL | NULL
+!ok
+!}
+
+select * from emp left join dept on emp.deptno = dept.deptno where emp.gender = 'F';
++-------+--------+--------+---------+-------------+
+| ENAME | DEPTNO | GENDER | DEPTNO0 | DNAME       |
++-------+--------+--------+---------+-------------+
+| Jane  |     10 | F      |      10 | Sales       |
+| Susan |     30 | F      |      30 | Engineering |
+| Alice |     30 | F      |      30 | Engineering |
+| Eve   |     50 | F      |         |             |
+| Grace |     60 | F      |         |             |
+| Wilma |        | F      |         |             |
++-------+--------+--------+---------+-------------+
+(6 rows)
+
+!ok
+
+select * from (select * from emp where gender ='F') as emp left join dept on emp.deptno = dept.deptno;
++-------+--------+--------+---------+-------------+
+| ENAME | DEPTNO | GENDER | DEPTNO0 | DNAME       |
++-------+--------+--------+---------+-------------+
+| Jane  |     10 | F      |      10 | Sales       |
+| Susan |     30 | F      |      30 | Engineering |
+| Alice |     30 | F      |      30 | Engineering |
+| Eve   |     50 | F      |         |             |
+| Grace |     60 | F      |         |             |
+| Wilma |        | F      |         |             |
++-------+--------+--------+---------+-------------+
+(6 rows)
+
+!ok
+
+# The following test is disabled, because we cannot handle non-equi-join.
+# Following it are the results from MySQL.
+!if (false) {
+select * from emp right join dept on emp.deptno = dept.deptno and emp.gender = 'F';
++-------+--------+--------+--------+-------------+
+| ename | deptno | gender | deptno | dname       |
++-------+--------+--------+--------+-------------+
+| Jane  |     10 | F      |     10 | Sales       |
+| Susan |     30 | F      |     30 | Engineering |
+| Alice |     30 | F      |     30 | Engineering |
+| NULL  |   NULL | NULL   |     20 | Marketing   |
+| NULL  |   NULL | NULL   |     40 | Empty       |
++-------+--------+--------+--------+-------------+
+!ok
+!}
+
+select * from emp right join dept on emp.deptno = dept.deptno where emp.gender = 'F';
++-------+--------+--------+---------+-------------+
+| ENAME | DEPTNO | GENDER | DEPTNO0 | DNAME       |
++-------+--------+--------+---------+-------------+
+| Jane  |     10 | F      |      10 | Sales       |
+| Susan |     30 | F      |      30 | Engineering |
+| Alice |     30 | F      |      30 | Engineering |
++-------+--------+--------+---------+-------------+
+(3 rows)
+
+!ok
+
+select * from (select * from emp where gender ='F') as emp right join dept on emp.deptno = dept.deptno;
++-------+--------+--------+---------+-------------+
+| ENAME | DEPTNO | GENDER | DEPTNO0 | DNAME       |
++-------+--------+--------+---------+-------------+
+| Jane  |     10 | F      |      10 | Sales       |
+| Susan |     30 | F      |      30 | Engineering |
+| Alice |     30 | F      |      30 | Engineering |
+|       |        |        |      20 | Marketing   |
+|       |        |        |      40 | Empty       |
++-------+--------+--------+---------+-------------+
+(5 rows)
+
+!ok
+
+!if (false) {
+select * from emp full join dept on emp.deptno = dept.deptno and emp.gender = 'F';
+!ok
+!}
+
+
+select * from emp full join dept on emp.deptno = dept.deptno where emp.gender = 'F';
++-------+--------+--------+---------+-------------+
+| ENAME | DEPTNO | GENDER | DEPTNO0 | DNAME       |
++-------+--------+--------+---------+-------------+
+| Jane  |     10 | F      |      10 | Sales       |
+| Susan |     30 | F      |      30 | Engineering |
+| Alice |     30 | F      |      30 | Engineering |
+| Eve   |     50 | F      |         |             |
+| Grace |     60 | F      |         |             |
+| Wilma |        | F      |         |             |
++-------+--------+--------+---------+-------------+
+(6 rows)
+
+!ok
+
+select * from (select * from emp where gender ='F') as emp full join dept on emp.deptno = dept.deptno;
++-------+--------+--------+---------+-------------+
+| ENAME | DEPTNO | GENDER | DEPTNO0 | DNAME       |
++-------+--------+--------+---------+-------------+
+| Jane  |     10 | F      |      10 | Sales       |
+| Susan |     30 | F      |      30 | Engineering |
+| Alice |     30 | F      |      30 | Engineering |
+| Eve   |     50 | F      |         |             |
+| Grace |     60 | F      |         |             |
+| Wilma |        | F      |         |             |
+|       |        |        |      20 | Marketing   |
+|       |        |        |      40 | Empty       |
++-------+--------+--------+---------+-------------+
+(8 rows)
+
+!ok
+
+# End outer.oq