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