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/28 06:52:45 UTC

[1/8] git commit: Add test case for query decorrelation bug [OPTIQ-313].

Repository: incubator-optiq
Updated Branches:
  refs/heads/master 99f396828 -> 71ebeaa81


Add test case for query decorrelation bug [OPTIQ-313].


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

Branch: refs/heads/master
Commit: d940fa3090f3014fc91d1015648133207d6ee123
Parents: e0b2f83
Author: Julian Hyde <ju...@gmail.com>
Authored: Thu Jun 26 18:39:59 2014 -0600
Committer: Julian Hyde <ju...@gmail.com>
Committed: Fri Jun 27 15:46:20 2014 -0700

----------------------------------------------------------------------
 .../net/hydromatic/optiq/prepare/Prepare.java   |  2 +
 .../java/net/hydromatic/optiq/runtime/Hook.java |  4 ++
 .../net/hydromatic/optiq/test/JdbcTest.java     |  5 ++-
 .../net/hydromatic/optiq/test/OptiqAssert.java  | 45 +++++++++++---------
 .../hydromatic/optiq/impl/tpch/TpchTest.java    | 30 +++++++++++--
 5 files changed, 60 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/d940fa30/core/src/main/java/net/hydromatic/optiq/prepare/Prepare.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/net/hydromatic/optiq/prepare/Prepare.java b/core/src/main/java/net/hydromatic/optiq/prepare/Prepare.java
index 469339d..219f9e5 100644
--- a/core/src/main/java/net/hydromatic/optiq/prepare/Prepare.java
+++ b/core/src/main/java/net/hydromatic/optiq/prepare/Prepare.java
@@ -255,6 +255,8 @@ public abstract class Prepare {
     // Trim unused fields.
     rootRel = trimUnusedFields(rootRel);
 
+    Hook.TRIMMED.run(rootRel);
+
     // Display physical plan after decorrelation.
     if (sqlExplain != null) {
       SqlExplain.Depth explainDepth = sqlExplain.getDepth();

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/d940fa30/core/src/main/java/net/hydromatic/optiq/runtime/Hook.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/net/hydromatic/optiq/runtime/Hook.java b/core/src/main/java/net/hydromatic/optiq/runtime/Hook.java
index 8c532c6..d63c09a 100644
--- a/core/src/main/java/net/hydromatic/optiq/runtime/Hook.java
+++ b/core/src/main/java/net/hydromatic/optiq/runtime/Hook.java
@@ -40,6 +40,10 @@ public enum Hook {
   /** Called with the output of sql-to-rel-converter. */
   CONVERTED,
 
+  /** Called after de-correlation and field trimming, but before
+   * optimization. */
+  TRIMMED,
+
   /** Called when a constant expression is being reduced. */
   EXPRESSION_REDUCER,
 

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/d940fa30/core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java b/core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java
index 51eb268..ccc4e99 100644
--- a/core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java
+++ b/core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java
@@ -3688,9 +3688,10 @@ public class JdbcTest {
             + "from \"hr\".\"emps\"\n"
             + "where \"empid\" > 10")
           .convertContains(
-              "ProjectRel(name=[$2], EXPR$1=[+(CAST(COUNT($4) OVER (PARTITION BY $1 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)):BIGINT, 1)])\n"
+              "ProjectRel(name=[$2], EXPR$1=[+(CAST(COUNT($3) OVER (PARTITION BY $1 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)):BIGINT, 1)])\n"
               + "  FilterRel(condition=[>($0, 10)])\n"
-              + "    EnumerableTableAccessRel(table=[[hr, emps]])\n");
+              + "    ProjectRel(empid=[$0], deptno=[$1], name=[$2], commission=[$4])\n"
+              + "      EnumerableTableAccessRel(table=[[hr, emps]])\n");
     } finally {
       Prepare.trim = false;
     }

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/d940fa30/core/src/test/java/net/hydromatic/optiq/test/OptiqAssert.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/net/hydromatic/optiq/test/OptiqAssert.java b/core/src/test/java/net/hydromatic/optiq/test/OptiqAssert.java
index 16657b7..cd85119 100644
--- a/core/src/test/java/net/hydromatic/optiq/test/OptiqAssert.java
+++ b/core/src/test/java/net/hydromatic/optiq/test/OptiqAssert.java
@@ -210,8 +210,7 @@ public class OptiqAssert {
         ++executeCount;
         try {
           final Collection result =
-              OptiqAssert.toStringList(
-                  resultSet,
+              OptiqAssert.toStringList(resultSet,
                   ordered ? new ArrayList<String>() : new TreeSet<String>());
           if (executeCount == 1) {
             expected = result;
@@ -358,14 +357,14 @@ public class OptiqAssert {
       Connection connection,
       String sql,
       boolean materializationsEnabled,
-      Function1<RelNode, Void> convertChecker) throws Exception {
+      final Function1<RelNode, Void> convertChecker) throws Exception {
     final String message =
         "With materializationsEnabled=" + materializationsEnabled;
-    final RelNode[] s = {null};
-    Hook.Closeable closeable = Hook.CONVERTED.addThread(
+    Hook.Closeable closeable = Hook.TRIMMED.addThread(
         new Function1<Object, Object>() {
-          public Object apply(Object rel) {
-            s[0] = (RelNode) rel;
+          public Object apply(Object a0) {
+            RelNode rel = (RelNode) a0;
+            convertChecker.apply(rel);
             return null;
           }
         });
@@ -380,7 +379,6 @@ public class OptiqAssert {
     } finally {
       closeable.close();
     }
-    convertChecker.apply(s[0]);
   }
 
   static String toString(ResultSet resultSet) throws SQLException {
@@ -887,25 +885,26 @@ public class OptiqAssert {
     }
 
     /** Checks that when the query (which was set using
-     * {@link AssertThat#query(String)}) is converted to a relational algrebra
+     * {@link AssertThat#query(String)}) is converted to a relational algebra
      * expression matching the given string. */
     public AssertQuery convertContains(final String expected) {
+      return convertMatches(
+          new Function1<RelNode, Void>() {
+            public Void apply(RelNode relNode) {
+              String s = RelOptUtil.toString(relNode);
+              assertThat(s, containsString(expected));
+              return null;
+            }
+          });
+    }
+
+    public AssertQuery convertMatches(final Function1<RelNode, Void> checker) {
       try {
-        assertPrepare(
-            createConnection(),
-            sql,
-            false,
-            new Function1<RelNode, Void>() {
-              public Void apply(RelNode relNode) {
-                String s = RelOptUtil.toString(relNode);
-                assertThat(s, containsString(expected));
-                return null;
-              }
-            });
+        assertPrepare(createConnection(), sql, false, checker);
         return this;
       } catch (Exception e) {
         throw new RuntimeException(
-            "exception while executing [" + sql + "]", e);
+            "exception while preparing [" + sql + "]", e);
       }
     }
 
@@ -1090,6 +1089,10 @@ public class OptiqAssert {
       return this;
     }
 
+    @Override public AssertQuery convertContains(String expected) {
+      return this;
+    }
+
     @Override
     public AssertQuery explainMatches(Function1<ResultSet, Void> checker) {
       return this;

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/d940fa30/plus/src/test/java/net/hydromatic/optiq/impl/tpch/TpchTest.java
----------------------------------------------------------------------
diff --git a/plus/src/test/java/net/hydromatic/optiq/impl/tpch/TpchTest.java b/plus/src/test/java/net/hydromatic/optiq/impl/tpch/TpchTest.java
index 561c89b..d9320f4 100644
--- a/plus/src/test/java/net/hydromatic/optiq/impl/tpch/TpchTest.java
+++ b/plus/src/test/java/net/hydromatic/optiq/impl/tpch/TpchTest.java
@@ -17,11 +17,20 @@
 */
 package net.hydromatic.optiq.impl.tpch;
 
+import net.hydromatic.linq4j.function.Function1;
+
 import net.hydromatic.optiq.test.OptiqAssert;
 
+import org.eigenbase.rel.RelNode;
+import org.eigenbase.relopt.RelOptUtil;
+
 import org.junit.Ignore;
 import org.junit.Test;
 
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.not;
+import static org.junit.Assert.assertThat;
+
 /** Unit test for {@link TpchSchema}.
  *
  * <p>Only runs if {@code -Doptiq.test.slow=true} is specified on the
@@ -791,6 +800,18 @@ public class TpchTest {
     checkQuery(2);
   }
 
+  @Ignore("RelDecorrelator leaves a CorrelatorRel behind")
+  @Test public void testQuery02Conversion() {
+    query(2)
+        .convertMatches(new Function1<RelNode, Void>() {
+          public Void apply(RelNode relNode) {
+            String s = RelOptUtil.toString(relNode);
+            assertThat(s, not(containsString("CorrelatorRel")));
+            return null;
+          }
+        });
+  }
+
   @Test public void testQuery03() {
     checkQuery(3);
   }
@@ -885,9 +906,12 @@ public class TpchTest {
   }
 
   private void checkQuery(int i) {
-    with()
-        .query(QUERIES[i - 1].replaceAll("tpch\\.", "tpch_01."))
-        .runs();
+    query(i).runs();
+  }
+
+  private OptiqAssert.AssertQuery query(int i) {
+    return with()
+        .query(QUERIES[i - 1].replaceAll("tpch\\.", "tpch_01."));
   }
 }
 


[5/8] git commit: Fix nested lists in history.

Posted by jh...@apache.org.
Fix nested lists in history.

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

Branch: refs/heads/master
Commit: 1de5cf80a50fbf21b0bfb3cf43ed98f3edd51b72
Parents: 349bd74
Author: Julian Hyde <ju...@hydromatic.net>
Authored: Fri Jun 27 17:34:18 2014 -0700
Committer: Julian Hyde <ju...@hydromatic.net>
Committed: Fri Jun 27 17:34:18 2014 -0700

----------------------------------------------------------------------
 HISTORY.md | 42 ++++++++++++++++++++++--------------------
 1 file changed, 22 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/1de5cf80/HISTORY.md
----------------------------------------------------------------------
diff --git a/HISTORY.md b/HISTORY.md
index b7d50a8..8d77152 100644
--- a/HISTORY.md
+++ b/HISTORY.md
@@ -17,10 +17,10 @@ New features
 * [<a href="https://issues.apache.org/jira/browse/OPTIQ-294">OPTIQ-294</a>]
   Implement DENSE_RANK windowed aggregate function
 * SqlRun utility
-** [<a href="https://issues.apache.org/jira/browse/OPTIQ-290">OPTIQ-290</a>]
-   Add `SqlRun`, an idempotent utility for running SQL test scripts
-** Add "!skip" command to SqlRun.
-** Add MySQL formatting mode to SqlRun.
+  * [<a href="https://issues.apache.org/jira/browse/OPTIQ-290">OPTIQ-290</a>]
+    Add `SqlRun`, an idempotent utility for running SQL test scripts
+  * Add "!skip" command to SqlRun.
+  * Add MySQL formatting mode to SqlRun.
 
 API changes
 * Re-organize planner initialization,
@@ -30,9 +30,9 @@ API changes
 * [<a href="https://issues.apache.org/jira/browse/OPTIQ-263">OPTIQ-263</a>]
   Add operand type that will cause a rule to fire when a new subset is created
 * Clean up and document SqlKind.
-** Add `IS_NOT_TRUE` and `IS_NOT_FALSE` `SqlKind` enums.
-** Add `SqlKind.IS_NOT_NULL` enum value, and use where possible,
-   including for `IS_NOT_UNKNOWN` operator.
+  * Add `IS_NOT_TRUE` and `IS_NOT_FALSE` `SqlKind` enums.
+  * Add `SqlKind.IS_NOT_NULL` enum value, and use where possible,
+    including for `IS_NOT_UNKNOWN` operator.
 
 Bug-fixes and internal changes
 * [<a href="https://issues.apache.org/jira/browse/OPTIQ-312">OPTIQ-312</a>]
@@ -48,7 +48,7 @@ Bug-fixes and internal changes
 * Add method `IntPair.zip`.
 * Reimplement regular and windowed aggregates
 * Switch from github to Apache JIRA for issues tracking.
-** In release history, update issue URLs from github to Apache JIRA
+  * In release history, update issue URLs from github to Apache JIRA
 * The Apache mailing list is now the official mailing list. Add presentations.
 * Add test for overloaded UDF.
 * Add tests for `NOT IN` where sub-query returns NULL values.
@@ -146,7 +146,7 @@ New features
   User-defined table macros
 * [<a href="https://issues.apache.org/jira/browse/OPTIQ-179">OPTIQ-179</a>]
   Optiq on Windows
-** Add `sqlline.bat` and fix issues running `sqlline` under Cygwin.
+  * Add `sqlline.bat` and fix issues running `sqlline` under Cygwin.
 * [<a href="https://issues.apache.org/jira/browse/OPTIQ-195">OPTIQ-195</a>]
   Push aggregation into MongoDB adapter
 * [<a href="https://issues.apache.org/jira/browse/OPTIQ-193">OPTIQ-193</a>]
@@ -270,11 +270,11 @@ API changes
 * [<a href="https://issues.apache.org/jira/browse/OPTIQ-147">OPTIQ-147</a>]
   Create a new kind of `SqlCall` that keeps operands in fields, not an operands
   array
-** Very widely used parse tree nodes with complex operands, including
-   `SqlSelect`, `SqlJoin`, `SqlInsert`, and a new node type `SqlOrderBy`, are now
-   sub-classes of `SqlCall` but not `SqlBasicCall`.
-** (**This is a breaking change** to code that assumes that, say,
-   `SqlSelect` has an `operands` field.)
+  * Very widely used parse tree nodes with complex operands, including
+    `SqlSelect`, `SqlJoin`, `SqlInsert`, and a new node type `SqlOrderBy`, are now
+    sub-classes of `SqlCall` but not `SqlBasicCall`.
+  * (**This is a breaking change** to code that assumes that, say,
+    `SqlSelect` has an `operands` field.)
 * Convert all enum constants to upper-case.
   (**This is a breaking change**.)
 
@@ -428,7 +428,6 @@ Bug fixes and internal changes
 ## <a href="https://github.com/julianhyde/optiq/releases/tag/optiq-parent-0.4.17">0.4.17</a> / 2014-01-13
 
 API changes
-
 * [<a href="https://issues.apache.org/jira/browse/OPTIQ-106">OPTIQ-106</a>]
   Make `Schema` and `Table` SPIs simpler to implement, and make them
   re-usable across connections
@@ -451,7 +450,6 @@ API changes
   Externalize RelNode to and from JSON
 
 Tuning
-
 * If `EnumerableAggregateRel` has no aggregate functions, generate a
    call to `Enumerable.distinct()`, thereby saving the effort of
    building trivial accumulators.
@@ -477,11 +475,10 @@ Tuning
   a fast O(n) get, and fast scan.
 
 Other
-
 * [<a href="https://issues.apache.org/jira/browse/OPTIQ-87">OPTIQ-87</a>]
   Constant folding
-** Rules for constant-expression reduction, and to simplify/eliminate
-   `VALUES` operator.
+  * Rules for constant-expression reduction, and to simplify/eliminate
+    `VALUES` operator.
 * Graph algorithms: Implement breadth-first iterator and cycle-detector.
 * Fix bug in planner which occurred when two `RelNode`s have identical
   digest but different row-type.
@@ -515,7 +512,12 @@ Other
 * Fix JDBC column, table, schema names for when the table is not in a schema of depth 1.
 * [<a href="https://issues.apache.org/jira/browse/OPTIQ-85">OPTIQ-85</a>]
   Adding a table to the root schema causes breakage in OptiqPrepareImpl
-* Extract Optiq's JDBC driver as a new JDBC driver framework, Avatica ([<a href="https://issues.apache.org/jira/browse/OPTIQ-84">OPTIQ-84</a>). Other projects can use this to implement a JDBC driver by implementing just a few methods. If you wish to use Optiq's JDBC driver, you will now need to include optiq-avatica.jar in addition to optiq-core.jar. Avatica does not depend on anything besides the standard Java library.
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-84">OPTIQ-84</a>]
+  Extract Optiq's JDBC driver as a new JDBC driver framework, Avatica.
+  Other projects can use this to implement a JDBC driver by implementing
+  just a few methods. If you wish to use Optiq's JDBC driver, you will
+  now need to include optiq-avatica.jar in addition to optiq-core.jar.
+  Avatica does not depend on anything besides the standard Java library.
 * Support for parameters in PreparedStatement.
 * First steps in recognizing complex materializations. Internally we introduce a concept called a "star table", virtual table composed of real tables joined together via many-to-one relationships. The queries that define materializations and end-user queries are canonized in terms of star tables. Matching (not done yet) will then be a matter of looking for sort, groupBy, project. It is not yet possible to define a star in an Optiq model file.
 * Add section to <a href="HOWTO.md">HOWTO</a> on implementing adapters.


[7/8] git commit: [maven-release-plugin] prepare release optiq-parent-0.8

Posted by jh...@apache.org.
[maven-release-plugin] prepare release optiq-parent-0.8


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

Branch: refs/heads/master
Commit: 3da850a1988eb47665b9f2e7ce4096a8f0adb1d7
Parents: 86a6f8c
Author: Julian Hyde <ju...@gmail.com>
Authored: Fri Jun 27 20:11:46 2014 -0700
Committer: Julian Hyde <ju...@gmail.com>
Committed: Fri Jun 27 20:11:46 2014 -0700

----------------------------------------------------------------------
 avatica/pom.xml    | 4 ++--
 core/pom.xml       | 6 +++---
 mongodb/pom.xml    | 8 ++++----
 plus/pom.xml       | 8 ++++----
 pom.xml            | 4 ++--
 spark/pom.xml      | 8 ++++----
 splunk/pom.xml     | 8 ++++----
 ubenchmark/pom.xml | 2 +-
 8 files changed, 24 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/3da850a1/avatica/pom.xml
----------------------------------------------------------------------
diff --git a/avatica/pom.xml b/avatica/pom.xml
index 8a7d9ab..beaf8b4 100644
--- a/avatica/pom.xml
+++ b/avatica/pom.xml
@@ -3,12 +3,12 @@
   <parent>
     <groupId>net.hydromatic</groupId>
     <artifactId>optiq-parent</artifactId>
-    <version>0.8-SNAPSHOT</version>
+    <version>0.8</version>
   </parent>
 
   <artifactId>optiq-avatica</artifactId>
   <packaging>jar</packaging>
-  <version>0.8-SNAPSHOT</version>
+  <version>0.8</version>
   <name>optiq-avatica</name>
   <description>JDBC driver framework.</description>
 

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/3da850a1/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index 1d1f060..3d34a1c 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -3,12 +3,12 @@
   <parent>
     <groupId>net.hydromatic</groupId>
     <artifactId>optiq-parent</artifactId>
-    <version>0.8-SNAPSHOT</version>
+    <version>0.8</version>
   </parent>
 
   <artifactId>optiq-core</artifactId>
   <packaging>jar</packaging>
-  <version>0.8-SNAPSHOT</version>
+  <version>0.8</version>
   <name>optiq-core</name>
   <description>Core Optiq APIs and engine.</description>
 
@@ -21,7 +21,7 @@
     <dependency>
       <groupId>net.hydromatic</groupId>
       <artifactId>optiq-avatica</artifactId>
-      <version>0.8-SNAPSHOT</version>
+      <version>0.8</version>
     </dependency>
   </dependencies>
 

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/3da850a1/mongodb/pom.xml
----------------------------------------------------------------------
diff --git a/mongodb/pom.xml b/mongodb/pom.xml
index 0ac5da5..0168366 100644
--- a/mongodb/pom.xml
+++ b/mongodb/pom.xml
@@ -3,12 +3,12 @@
   <parent>
     <groupId>net.hydromatic</groupId>
     <artifactId>optiq-parent</artifactId>
-    <version>0.8-SNAPSHOT</version>
+    <version>0.8</version>
   </parent>
 
   <artifactId>optiq-mongodb</artifactId>
   <packaging>jar</packaging>
-  <version>0.8-SNAPSHOT</version>
+  <version>0.8</version>
   <name>optiq-mongodb</name>
   <description>MongoDB adapter for Optiq.</description>
 
@@ -20,13 +20,13 @@
     <dependency>
       <groupId>net.hydromatic</groupId>
       <artifactId>optiq-core</artifactId>
-      <version>0.8-SNAPSHOT</version>
+      <version>0.8</version>
       <type>jar</type>
     </dependency>
     <dependency>
       <groupId>net.hydromatic</groupId>
       <artifactId>optiq-core</artifactId>
-      <version>0.8-SNAPSHOT</version>
+      <version>0.8</version>
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/3da850a1/plus/pom.xml
----------------------------------------------------------------------
diff --git a/plus/pom.xml b/plus/pom.xml
index 0800998..e62858c 100644
--- a/plus/pom.xml
+++ b/plus/pom.xml
@@ -3,12 +3,12 @@
   <parent>
     <groupId>net.hydromatic</groupId>
     <artifactId>optiq-parent</artifactId>
-    <version>0.8-SNAPSHOT</version>
+    <version>0.8</version>
   </parent>
 
   <artifactId>optiq-plus</artifactId>
   <packaging>jar</packaging>
-  <version>0.8-SNAPSHOT</version>
+  <version>0.8</version>
   <name>optiq-plus</name>
   <description>Miscellaneous extras for Optiq.</description>
 
@@ -20,13 +20,13 @@
     <dependency>
       <groupId>net.hydromatic</groupId>
       <artifactId>optiq-core</artifactId>
-      <version>0.8-SNAPSHOT</version>
+      <version>0.8</version>
       <type>jar</type>
     </dependency>
     <dependency>
       <groupId>net.hydromatic</groupId>
       <artifactId>optiq-core</artifactId>
-      <version>0.8-SNAPSHOT</version>
+      <version>0.8</version>
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/3da850a1/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index b0d9dec..03ddf9a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
   <groupId>net.hydromatic</groupId>
   <artifactId>optiq-parent</artifactId>
   <packaging>pom</packaging>
-  <version>0.8-SNAPSHOT</version>
+  <version>0.8</version>
 
   <!-- More project information. -->
   <name>optiq-parent</name>
@@ -79,7 +79,7 @@
     <connection>scm:git:git://github.com/julianhyde/optiq.git</connection>
     <developerConnection>scm:git:git@github.com:julianhyde/optiq.git</developerConnection>
     <url>http://github.com/julianhyde/optiq/tree/master</url>
-    <tag>HEAD</tag>
+    <tag>optiq-parent-0.8</tag>
   </scm>
 
   <modules>

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/3da850a1/spark/pom.xml
----------------------------------------------------------------------
diff --git a/spark/pom.xml b/spark/pom.xml
index 07005f4..e62b31c 100644
--- a/spark/pom.xml
+++ b/spark/pom.xml
@@ -3,12 +3,12 @@
   <parent>
     <groupId>net.hydromatic</groupId>
     <artifactId>optiq-parent</artifactId>
-    <version>0.8-SNAPSHOT</version>
+    <version>0.8</version>
   </parent>
 
   <artifactId>optiq-spark</artifactId>
   <packaging>jar</packaging>
-  <version>0.8-SNAPSHOT</version>
+  <version>0.8</version>
   <name>optiq-spark</name>
 
   <properties>
@@ -19,12 +19,12 @@
     <dependency>
       <groupId>net.hydromatic</groupId>
       <artifactId>optiq-core</artifactId>
-      <version>0.8-SNAPSHOT</version>
+      <version>0.8</version>
     </dependency>
     <dependency>
       <groupId>net.hydromatic</groupId>
       <artifactId>optiq-core</artifactId>
-      <version>0.8-SNAPSHOT</version>
+      <version>0.8</version>
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/3da850a1/splunk/pom.xml
----------------------------------------------------------------------
diff --git a/splunk/pom.xml b/splunk/pom.xml
index 935f5bd..9624be1 100644
--- a/splunk/pom.xml
+++ b/splunk/pom.xml
@@ -3,12 +3,12 @@
   <parent>
     <groupId>net.hydromatic</groupId>
     <artifactId>optiq-parent</artifactId>
-    <version>0.8-SNAPSHOT</version>
+    <version>0.8</version>
   </parent>
 
   <artifactId>optiq-splunk</artifactId>
   <packaging>jar</packaging>
-  <version>0.8-SNAPSHOT</version>
+  <version>0.8</version>
   <name>optiq-splunk</name>
   <description>Splunk adapter for Optiq; also a JDBC driver for Splunk.</description>
 
@@ -20,12 +20,12 @@
     <dependency>
       <groupId>net.hydromatic</groupId>
       <artifactId>optiq-core</artifactId>
-      <version>0.8-SNAPSHOT</version>
+      <version>0.8</version>
     </dependency>
     <dependency>
       <groupId>net.hydromatic</groupId>
       <artifactId>optiq-core</artifactId>
-      <version>0.8-SNAPSHOT</version>
+      <version>0.8</version>
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/3da850a1/ubenchmark/pom.xml
----------------------------------------------------------------------
diff --git a/ubenchmark/pom.xml b/ubenchmark/pom.xml
index 3272015..42fdef2 100644
--- a/ubenchmark/pom.xml
+++ b/ubenchmark/pom.xml
@@ -3,7 +3,7 @@
   <parent>
     <artifactId>optiq-parent</artifactId>
     <groupId>net.hydromatic</groupId>
-    <version>0.8-SNAPSHOT</version>
+    <version>0.8</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 


[4/8] git commit: Update history: release 0.8 changes and issue URLs

Posted by jh...@apache.org.
Update history: release 0.8 changes and issue URLs

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

Branch: refs/heads/master
Commit: 349bd74d61cdf216264fa5101f4299d202f2c2af
Parents: 96a949f
Author: Julian Hyde <ju...@hydromatic.net>
Authored: Fri Jun 27 17:27:24 2014 -0700
Committer: Julian Hyde <ju...@hydromatic.net>
Committed: Fri Jun 27 17:27:24 2014 -0700

----------------------------------------------------------------------
 HISTORY.md | 388 +++++++++++++++++++++++++++++++++-----------------------
 1 file changed, 232 insertions(+), 156 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/349bd74d/HISTORY.md
----------------------------------------------------------------------
diff --git a/HISTORY.md b/HISTORY.md
index e40d038..b7d50a8 100644
--- a/HISTORY.md
+++ b/HISTORY.md
@@ -2,13 +2,76 @@
 
 For a full list of releases, see <a href="https://github.com/julianhyde/optiq/releases">github</a>.
 
+## <a href="https://github.com/julianhyde/optiq/releases/tag/optiq-parent-0.8">0.8</a> / 2014-06-27
+
+New features
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-310">OPTIQ-310</a>]
+   Implement LEAD, LAG and NTILE windowed aggregates
+* Reduce `COUNT(not-null-expression)` to `COUNT()`
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-292">OPTIQ-292</a>]
+   Improve windowed aggregate return types
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-302">OPTIQ-302</a>]
+   Use heuristic rule to plan queries with large numbers of joins
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-283">OPTIQ-283</a>]
+  Add TPC-DS data generator
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-294">OPTIQ-294</a>]
+  Implement DENSE_RANK windowed aggregate function
+* SqlRun utility
+** [<a href="https://issues.apache.org/jira/browse/OPTIQ-290">OPTIQ-290</a>]
+   Add `SqlRun`, an idempotent utility for running SQL test scripts
+** Add "!skip" command to SqlRun.
+** Add MySQL formatting mode to SqlRun.
+
+API changes
+* Re-organize planner initialization,
+  to make it easier to use heuristic join order.
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-301">OPTIQ-301</a>]
+  Add `Program` interface, a planner phase more general than current `RuleSet`
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-263">OPTIQ-263</a>]
+  Add operand type that will cause a rule to fire when a new subset is created
+* Clean up and document SqlKind.
+** Add `IS_NOT_TRUE` and `IS_NOT_FALSE` `SqlKind` enums.
+** Add `SqlKind.IS_NOT_NULL` enum value, and use where possible,
+   including for `IS_NOT_UNKNOWN` operator.
+
+Bug-fixes and internal changes
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-312">OPTIQ-312</a>]
+  Trim non-required fields before `WindowRel`
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-311">OPTIQ-311</a>]
+  Wrong results when filtering the results of windowed aggregation
+* More tests for `WITH ... ORDER BY`
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-309">OPTIQ-309</a>]
+  `WITH ... ORDER BY` query gives `AssertionError`
+* Enable `MultiJoinRel` and some other planner rule tests.
+* Add `ImmutableNullableList` and `UnmodifiableArrayList`,
+  and remove calls to `Arrays.asList`.
+* Add method `IntPair.zip`.
+* Reimplement regular and windowed aggregates
+* Switch from github to Apache JIRA for issues tracking.
+** In release history, update issue URLs from github to Apache JIRA
+* The Apache mailing list is now the official mailing list. Add presentations.
+* Add test for overloaded UDF.
+* Add tests for `NOT IN` where sub-query returns NULL values.
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-288">OPTIQ-288</a>]
+  Add tests for windowed aggregation based on Postgres reference queries
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-286">OPTIQ-286</a>]
+  Error casting MongoDB date
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-284">OPTIQ-284</a>]
+  Window functions range defaults to `CURRENT ROW`
+* [<a href=https://issues.apache.org/jira/browse/OPTIQ-285">OPTIQ-285</a>]
+  Window functions throw exception without `ORDER BY`
+* Test case for
+  [<a href=““https://issues.apache.org/jira/browse/OPTIQ-285”>OPTIQ-285</a>].
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-281">OPTIQ-281</a>]
+  `EXTRACT` function's SQL return type is `BIGINT` but implemented as Java `int`
+
 ## <a href="https://github.com/julianhyde/optiq/releases/tag/optiq-parent-0.7">0.7</a> / 2014-05-13
 
 New features
 * Implement table functions.
 * Arrays and multi-sets:
-  * Fix <a href="https://github.com/julianhyde/optiq/issues/267">#267</a>,
-    "Improve support for ARRAY data type".
+  * [<a href="https://issues.apache.org/jira/browse/OPTIQ-267">OPTIQ-267</a>]
+    Improve support for ARRAY data type
   * Better type information for JDBC Array; nested array now possible.
   * Implement `JOIN LATERAL` and `JOIN UNNEST`.
   * Implement the `UNNEST` relational operator, and various improvements
@@ -16,18 +79,18 @@ New features
   * Represent `ARRAY` columns as Java lists.
   * Implement `CARDINALITY(ARRAY)` SQL operator.
 * Implement scalar sub-query in `SELECT` clause.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/273">#273</a>,
-  "Support column alias in WITH queries (common table expressions)".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-273">OPTIQ-273</a>]
+  Support column alias in WITH queries (common table expressions)
 * Windowed aggregates:
   * Aggregate over constants, e.g. `SUM(1) OVER (ROWS 10 PRECEDING)`;
   * `UNBOUNDED PRECEDING` window range;
   * Windowed aggregates computed over primitive scalars.
 * Fix return type inference for aggregate calls. If the `GROUP BY` clause is
   empty, `SUM` may return null.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/37">#37</a>,
-  "Document JSON model file format" (as <a href="MODEL.md">MODEL.md</a>).
-* Fix <a href="https://github.com/julianhyde/optiq/issues/238">#238</a>,
-  "Add adapter that generates TPC-H data".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-37">OPTIQ-37</a>]
+  Document JSON model file format (as <a href="MODEL.md">MODEL.md</a>).
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-238">OPTIQ-238</a>]
+  Add adapter that generates TPC-H data
 * Improve exception message in `AvaticaConnection`; add
   `ExceptionMessageTest`.
 * Implement micro-benchmarks via
@@ -36,8 +99,8 @@ New features
 API changes
 * Provide an option to create root schema without the "metadata" schema.
 * Schema SPI:
-  * Fix <a href="https://github.com/julianhyde/optiq/issues/175">#175</a>,
-   "Modify Schema SPI to allow caching".
+  * [<a href="https://issues.apache.org/jira/browse/OPTIQ-175">OPTIQ-175</a>]
+    Modify Schema SPI to allow caching
   * Get sub-schemas defined by a Schema SPI, and cache their `OptiqSchema`
     wrappers. (Tobi Vollebregt and Julian Hyde)
 * SqlAdvisor callable from client via JDBC.
@@ -58,38 +121,38 @@ Bug-fixes and internal changes
 * Use `fromTrait` of the just previously converted `RelNode` instead
   of the original `RelNode`.
 * Disable a MongoDB test, pending
-  <a href="https://github.com/julianhyde/optiq/issues/270">#270</a>.
+  [<a href="https://issues.apache.org/jira/browse/OPTIQ-270">OPTIQ-270</a>.
 * Hush warnings from `SplunkAdapterTest` if Splunk is not available.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/252">#252</a>,
-  "Scalar sub-query that returns 0 rows should become NULL value".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-252">OPTIQ-252</a>]
+  Scalar sub-query that returns 0 rows should become NULL value
 * `SplunkAdapterTest` now uses the same Foodmart database as `JdbcTest`.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/242">#242</a>,
-  "SplunkAdapterTest fails".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-242">OPTIQ-242</a>]
+  SplunkAdapterTest fails
 * Remove some obsolete classes.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/205">#205</a>,
-  "Suspicious map.get in VolcanoPlanner.reregister".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-205">OPTIQ-205</a>]
+  Suspicious map.get in VolcanoPlanner.reregister
 
 ## <a href="https://github.com/julianhyde/optiq/releases/tag/optiq-parent-0.6">0.6</a> / 2014-04-11
 
 New features
-* Fix <a href="https://github.com/julianhyde/optiq/issues/214">#214</a>,
-  "Modify Frameworks to allow Schema to be re-used".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-214">OPTIQ-214</a>]
+  Modify Frameworks to allow Schema to be re-used
   Obsoletes `name` field of `ReflectiveSchema`.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/237">#237</a>,
-  "Allow user-defined aggregate functions (UDAs) to be defined in a model".
-* Fix <a href="https://github.com/julianhyde/optiq/pull/227">#227</a>,
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-237">OPTIQ-237</a>]
+  Allow user-defined aggregate functions (UDAs) to be defined in a model
+* Fix <a href="https://github.com/julianhyde/optiq/pull/227">OPTIQ-227</a>,
   "Extend `EXTRACT` function to support `DATE`, `TIME` and `TIMESTAMP` values".
-* Fix <a href="https://github.com/julianhyde/optiq/issues/222">#222</a>,
-  "User-defined table macros".
-* Fix <a href="https://github.com/julianhyde/optiq/issues/179">#179</a>,
-  "Optiq on Windows". Add `sqlline.bat` and fix issues running `sqlline` under
-  Cygwin.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/195">#195</a>,
-  "Push aggregation into MongoDB adapter".
-* Fix <a href="https://github.com/julianhyde/optiq/issues/193">#193</a>,
-  "Implement OFFSET and LIMIT in MongoDB adapter".
-* Fix <a href="https://github.com/julianhyde/optiq/issues/164">#164</a>,
-  "Improve query performance of optiq over MongoDB".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-222">OPTIQ-222</a>]
+  User-defined table macros
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-179">OPTIQ-179</a>]
+  Optiq on Windows
+** Add `sqlline.bat` and fix issues running `sqlline` under Cygwin.
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-195">OPTIQ-195</a>]
+  Push aggregation into MongoDB adapter
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-193">OPTIQ-193</a>]
+  Implement OFFSET and LIMIT in MongoDB adapter
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-164">OPTIQ-164</a>]
+  Improve query performance of optiq over MongoDB
 * Add Phoenix (HBase) SQL dialect (Bruno Dumon)
 
 API changes
@@ -100,15 +163,15 @@ API changes
 * Extend `Planner` to pass a custom `ConvertletTable` and custom SQL parser.
 * In `Frameworks`, add a way to specify list of `TraitDef`s that will be used
   by planner. (Jinfeng Ni)
-* Fix <a href="https://github.com/julianhyde/optiq/pull/198">#198</a>,
+* Fix <a href="https://github.com/julianhyde/optiq/pull/198">OPTIQ-198</a>,
   "Use `RexExecutor` to evaluate projections and filters".
-* Fix <a href="https://github.com/julianhyde/optiq/issues/219">#219</a>,
-  "Parse `ALTER scope SET option = value` statement".
-* Fix <a href="https://github.com/julianhyde/optiq/issues/215">#215</a>,
-  "A Schema should not have to remember its name and parent".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-219">OPTIQ-219</a>]
+  Parse `ALTER scope SET option = value` statement
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-215">OPTIQ-215</a>]
+  A Schema should not have to remember its name and parent
   (**This is a breaking change**.)
-* Fix <a href="https://github.com/julianhyde/optiq/issues/180">#180</a>,
-  "Common base class for TableFunction, ScalarFunction".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-180">OPTIQ-180</a>]
+  Common base class for TableFunction, ScalarFunction
   (**This is a breaking change**.)
 * Add methods for dealing with symbols; deprecate
   `SqlLiteral.booleanValue(SqlNode)`, `SqlLiteral.symbolValue(SqlNode)`.
@@ -121,53 +184,53 @@ Bug fixes and internal changes
 * Upgrade to linq4j-0.2.
 * `FETCH` and `LIMIT` are ignored during SQL-to-RelNode translation.
   (Venki Korukanti)
-* Fix <a href="https://github.com/julianhyde/optiq/issues/245">#245</a>,
-  "Off-by-one translation of ON clause of JOIN".
-* Fix <a href="https://github.com/julianhyde/optiq/pull/191">#191</a>,
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-245">OPTIQ-245</a>]
+  Off-by-one translation of ON clause of JOIN
+* Fix <a href="https://github.com/julianhyde/optiq/pull/191">OPTIQ-191</a>,
   "Rotate time/date/timestamp vals to local timezone".
-* Fix <a href="https://github.com/julianhyde/optiq/pull/244">#244</a>,
+* Fix <a href="https://github.com/julianhyde/optiq/pull/244">OPTIQ-244</a>,
   "`RelOptTableImpl.create` always expects `QueryableTable` type in
   `OptiqSchema.TableEntry`".
-* Fix <a href="https://github.com/julianhyde/optiq/issues/225">#225</a>,
-  "Optiq doesn't correctly decorrelate queries".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-225">OPTIQ-225</a>]
+  Optiq doesn't correctly decorrelate queries
 * Clean up package-info.  Remove duplicates in test packages so they
   don't conflict with those in non-test packages.
 * Add `Pair.adjacents(Iterable)`.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/199">#199</a>,
-  "Various `ANY` type conditions aren't correctly being considered".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-199">OPTIQ-199</a>]
+  Various `ANY` type conditions aren't correctly being considered
   (Jacques Nadeau)
 * Add files to `.gitignore` that shouldn't be checked in when using
   Eclipse. (Jacques Nadeau)
 * Add class `ControlFlowException`, and make it base class of
   existing control-flow exception classes.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/232">#232</a>,
-  "Sum and avg of empty set should be null as per SQL specification".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-232">OPTIQ-232</a>]
+  Sum and avg of empty set should be null as per SQL specification
 * Add `SqlUnresolvedFunction`, to improve how return type of
   user-defined functions is resolved. (Vladimir Sitnikov)
-* Fix <a href="https://github.com/julianhyde/optiq/issues/228">#228</a>,
-  "Error while compiling generated Java code when using UDF in expression"
-* Fix <a href="https://github.com/julianhyde/optiq/issues/226">#226</a>,
-  "User-defined functions should work without explicit schema prefix".
-* Fix <a href="https://github.com/julianhyde/optiq/issues/229">#229</a>,
-  "Join between different JDBC schemas not implementable".
-* Fix <a href="https://github.com/julianhyde/optiq/pull/230">#230</a>,
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-228">OPTIQ-228</a>]
+  Error while compiling generated Java code when using UDF in expression
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-226">OPTIQ-226</a>]
+  User-defined functions should work without explicit schema prefix
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-229">OPTIQ-229</a>]
+  Join between different JDBC schemas not implementable
+* Fix <a href="https://github.com/julianhyde/optiq/pull/230">OPTIQ-230</a>,
   "RemoveSortRule derives trait set from sort, should derive it from sort's child".
 * Test view and sub-query with `ORDER BY` and `LIMIT`.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/223">#223</a>,
-  "Add `NOTICE` and `LICENSE` files in all generated JAR files".
-* Fix <a href="https://github.com/julianhyde/optiq/issues/209">#209</a>,
-  "Consistent strategy for line-endings in tests".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-223">OPTIQ-223</a>]
+  Add `NOTICE` and `LICENSE` files in all generated JAR files
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-209">OPTIQ-209</a>]
+  Consistent strategy for line-endings in tests
   Convert uses of `NL` in tests to Linux newline "\n".
   This makes string constants simpler.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/218">#218</a>,
-  "Functions case sensitive when using `Lex.MYSQL`".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-218">OPTIQ-218</a>]
+  Functions case sensitive when using `Lex.MYSQL`
 * Add tests that a query with aggregate expressions in the `SELECT`
   clause is considered an aggregate query, even if there is no `GROUP BY`.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/216">#216</a>,
-  "Inconsistent use of provided operator table causes inability to
-  add aggregate functions".
-* Fix <a href="https://github.com/julianhyde/optiq/issues/200">#200</a>,
-  "Javadoc generation fails under JDK 1.8".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-216">OPTIQ-216</a>]
+  Inconsistent use of provided operator table causes inability to
+  add aggregate functions
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-200">OPTIQ-200</a>]
+  Javadoc generation fails under JDK 1.8
 * Add class `XmlOutput` (based on `org.eigenbase.xom.XMLOutput`) and remove
   dependency on eigenbase-xom.
 * Performance: Don't create stack-trace for exceptions used for control-flow.
@@ -188,12 +251,12 @@ New features
   properties to be specified explicitly (Vladimir Sitnikov)
 * Recognize more kinds of materializations, including filter-on-project (where
   project contains expressions) and some kinds of aggregation.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/128">#128</a>,
-  "Support `WITH` queries (common table expressions)".
-* Fix <a href="https://github.com/julianhyde/optiq/issues/53">#53</a>,
-  "Allow `WHEN` clause in simple `CASE` expression to have multiple values".
-* Fix <a href="https://github.com/julianhyde/optiq/issues/156">#156</a>,
-  "Optiq should recognize 'SYSTEM TABLE', 'JOIN', 'INDEX' as table types".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-128">OPTIQ-128</a>]
+  Support `WITH` queries (common table expressions)
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-53">OPTIQ-53</a>]
+  Allow `WHEN` clause in simple `CASE` expression to have multiple values
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-156">OPTIQ-156</a>]
+  Optiq should recognize 'SYSTEM TABLE', 'JOIN', 'INDEX' as table types
 * Support querying ARRAY columns from JDBC source. (Gabriel Reid)
 
 API changes
@@ -202,70 +265,71 @@ API changes
   (**This is a breaking change** for sub-classes of `ProjectRelBase`.)
 * Change `RexBuilder.makeRangeReference` parameter type.
 * `RexBuilder.makeInputRef` replaces `RelOptUtil.createInputRef`.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/160">#160</a>,
- "Allow comments in schema definitions".
-* Fix <a href="https://github.com/julianhyde/optiq/issues/147">#147</a>,
-  "Create a new kind of `SqlCall` that keeps operands in fields, not an operands
-  array". Very widely used parse tree nodes with complex operands, including
-  `SqlSelect`, `SqlJoin`, `SqlInsert`, and a new node type `SqlOrderBy`, are now
-  sub-classes of `SqlCall` but not `SqlBasicCall`.
-  (**This is a breaking change** to code that assumes that, say,
- `SqlSelect` has an `operands` field.)
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-160">OPTIQ-160</a>]
+  Allow comments in schema definitions
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-147">OPTIQ-147</a>]
+  Create a new kind of `SqlCall` that keeps operands in fields, not an operands
+  array
+** Very widely used parse tree nodes with complex operands, including
+   `SqlSelect`, `SqlJoin`, `SqlInsert`, and a new node type `SqlOrderBy`, are now
+   sub-classes of `SqlCall` but not `SqlBasicCall`.
+** (**This is a breaking change** to code that assumes that, say,
+   `SqlSelect` has an `operands` field.)
 * Convert all enum constants to upper-case.
   (**This is a breaking change**.)
 
 Bug-fixes and internal changes
 * Generate optiq-core-VERSION-tests.jar not parent-VERSION-tests.jar.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/176">#176</a>,
-  "ORDER BY expression doesn't work with SELECT \*".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-176">OPTIQ-176</a>]
+  ORDER BY expression doesn't work with SELECT \*
 * Fix VARCHAR casts sent to hsqldb source (Bruno Dumon)
-* Fix <a href="https://github.com/julianhyde/optiq/issues/143">#143</a>,
-  "Remove dependency on eigenbase-resgen".
-* Fix <a href="https://github.com/julianhyde/optiq/issues/173">#173</a>,
- "Case-insensitive table names are not supported for `Casing.UNCHANGED`".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-143">OPTIQ-143</a>]
+  Remove dependency on eigenbase-resgen
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-173">OPTIQ-173</a>]
+  Case-insensitive table names are not supported for `Casing.UNCHANGED`
 * `DATE.getLimit` now returns `Calendar` in GMT time zone (Vladimir Sitnikov)
 * Set `en_US` locale in tests that match against error numbers, dates
   (Vladimir Sitnikov)
 * Use 1 test thread per CPU to avoid thread starvation on dual core CPUs
   (Vladimir Sitnikov)
-* Fix <a href="https://github.com/julianhyde/optiq/issues/174">#174</a>,
-  "Move hsqldb to test scope".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-174">OPTIQ-174</a>]
+  Move hsqldb to test scope
 * Add unit tests for `RexExecutorImpl`.
 * Correct JSON model examples in Javadoc comments. (Karel Vervaeke)
 * Move test reference logs from `src/test/java` to `src/test/resources`
   (reduces the number of 'untracked files' reported by git)
 * Tune `Util.SpaceList`, fix race condition, and move into new utility class
   `Spaces`.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/163">#163</a>,
-  "Equi-join warning".
-* Fix <a href="https://github.com/julianhyde/optiq/issues/157">#157</a>,
-  "Handle `SQLFeatureNotSupported` when calling `setQueryTimeout`".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-163">OPTIQ-163</a>]
+  Equi-join warning
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-157">OPTIQ-157</a>]
+  Handle `SQLFeatureNotSupported` when calling `setQueryTimeout`
   (Karel Vervaeke)
 * Fix Optiq on Windows. (All tests and checkstyle checks pass.)
 * In checkstyle, support Windows-style file separator, otherwise build fails in
   Windows due to suppressions not used. (Vladimir Sitnikov)
 * Enable MongoDB tests when `-Doptiq.test.mongodb=true`.
 * Cleanup cache exception-handling and an assert.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/153">#153</a>,
-  "Error using MongoDB adapter: Failed to set setXIncludeAware(true)".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-153">OPTIQ-153</a>]
+  Error using MongoDB adapter: Failed to set setXIncludeAware(true)
 * Disable spark engine unless Spark libraries are on the class path and
   `spark=true` is specified in the connect string.
 * Fix path to `mongo-zips-model.json` in HOWTO. (Mariano Luna)
 * Fix bug deriving the type of a join-key.
 * Fix the value of `ONE_MINUS_EPSILON`.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/158">#158</a>,
-  "Optiq fails when call `Planner.transform()` multiple times, each with
-  different ruleset".
-* Fix <a href="https://github.com/julianhyde/optiq/issues/148">#148</a>,
- "Less verbose description of collation". Also, optimize `RelTraitSet` creation
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-158">OPTIQ-158</a>]
+  Optiq fails when call `Planner.transform()` multiple times, each with
+  different ruleset
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-148">OPTIQ-148</a>]
+ Less verbose description of collation. Also, optimize `RelTraitSet` creation
  and amortize `RelTraitSet.toString()`.
 * Add generics to SQL parser.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/145">#145</a>,
-  "Unexpected upper-casing of keywords when using java lexer".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-145">OPTIQ-145</a>]
+  Unexpected upper-casing of keywords when using java lexer
 * Remove duplicate `maven-source-plugin`.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/141">#141</a>,
-  "Downgrade to guava-11.0.2". This is necessary for Hadoop compatibility.
-  Later versions of Guava can also be used.
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-141">OPTIQ-141</a>]
+  Downgrade to guava-11.0.2. (This is necessary for Hadoop compatibility.
+  Later versions of Guava can also be used.)
 * Upgrade to spark-0.9.0. (Because this version of spark is available from
   maven-central, we can make optiq-spark part of the regular build, and remove
   the spark profile.)
@@ -274,10 +338,10 @@ Bug-fixes and internal changes
 
 API and functionality changes
 * Configurable lexical policy
-    * Fix <a href="https://github.com/julianhyde/optiq/issues/33">#33</a>,
-      "SQL parser should allow different identifier quoting".
-    * Fix <a href="https://github.com/julianhyde/optiq/issues/34">#34</a>,
-      "Policy for case-sensitivity of identifiers should be configurable".
+    * [<a href="https://issues.apache.org/jira/browse/OPTIQ-33">OPTIQ-33</a>]
+      SQL parser should allow different identifier quoting
+    * [<a href="https://issues.apache.org/jira/browse/OPTIQ-34">OPTIQ-34</a>]
+      Policy for case-sensitivity of identifiers should be configurable
     * New connect-string parameter "lex", with allowable values
       "ORACLE", "MYSQL", "SQL_SERVER", "JAVA" sets policy to be like those
       databases, in terms of quote string, whether quoted and unquoted
@@ -293,13 +357,13 @@ API and functionality changes
       apply the right case-sensitivity policy.
     * Enable optiq consumer to utilize different lexical settings in
       Frameworks/Planner. (Jacques Nadeau)
-* Fix <a href="https://github.com/julianhyde/optiq/issues/135">#115</a>,
-  "Add a PARSE_TREE hook point with SqlNode parameter".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-135">OPTIQ-115</a>]
+  Add a PARSE_TREE hook point with SqlNode parameter
 * Change planner rules to use `ProjectFactory` for creating
   projects. (John Pullokkaran)
-* Fix <a href="https://github.com/julianhyde/optiq/issues/131">#131</a>,
-  "Add interfaces for metadata (statistics)". (**This is a breaking
-  change**.)
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-131">OPTIQ-131</a>]
+  Add interfaces for metadata (statistics)
+  (**This is a breaking change**.)
 * Update Avatica to allow `Cursor` & `Accessor` implementations to throw
   `SQLException`. (Jacques Nadeau)
 * Separate cost model (`RelOptCostFactory`) from planner. Allow
@@ -312,8 +376,8 @@ API and functionality changes
   checkstyle. (**This is a breaking change**.)
 * Add a mechanism for defining configuration parameters and have them
   appear in the responses to `AvaticaDatabaseMetaData` methods.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/113">#113</a>,
-  "User-defined scalar functions".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-113">OPTIQ-113</a>]
+  User-defined scalar functions
 * Add rules to short-cut a query if `LIMIT 0` is present. Also remove
   sort, aggregation, join if their inputs are known to be empty, and
   propagate the fact that the relational expressions are known to be
@@ -321,29 +385,29 @@ API and functionality changes
 * `RexNode` and its sub-classes are now immutable.
 
 Bug fixes and internal changes
-* Fix <a href="https://github.com/julianhyde/optiq/issues/61">#16</a>,
-  "Upgrade to janino-2.7".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-61">OPTIQ-16</a>]
+  Upgrade to janino-2.7
 * Upgrade to guava-15.0 (guava-14.0.1 still allowed), sqlline-1.1.7,
   maven-surefire-plugin-2.16, linq4j-0.1.13.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/136">#136</a>,
-  "Support Hive dialect".
-* Fix <a href="https://github.com/julianhyde/optiq/issues/138">#138</a>,
-  "SqlDataTypeSpec.clone handles collection types wrong".
-* Fix <a href="https://github.com/julianhyde/optiq/issues/137">#137</a>,
-  "If a subset is created that is subsumed by an existing subset, its
-  "best" is not assigned".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-136">OPTIQ-136</a>]
+  Support Hive dialect
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-138">OPTIQ-138</a>]
+  SqlDataTypeSpec.clone handles collection types wrong
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-137">OPTIQ-137</a>]
+  If a subset is created that is subsumed by an existing subset, its
+  'best' is not assigned
     * If best rel in a Volcano subset doesn't have metadata, see if
       other rels have metadata.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/127">#127</a>,
- "EnumerableCalcRel can't support 3+ AND conditions". (Harish Butani)
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-127">OPTIQ-127</a>]
+  EnumerableCalcRel can't support 3+ AND conditions (Harish Butani)
 * Fix push-down of datetime literals to JDBC data sources.
 * Add `Util.startsWith(List, List)` and `Util.hashCode(double)`.
 * Add maven-checkstyle-plugin, enable in "verify" phase, and fix exceptions.
 * Fix `SqlValidator` to rely on `RelDataType` to do field name matching.  Fix
   `RelDataTypeImpl` to correctly use the case sensitive flag rather than
   ignoring it.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/119">#119</a>,
-  "Comparing Java type long with SQL type INTEGER gives wrong answer".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-119">OPTIQ-119</a>]
+  Comparing Java type long with SQL type INTEGER gives wrong answer
 * Enable multi-threaded testing, and fix race conditions.
     * Two of the race conditions involved involving trait caches. The
       other was indeterminacy in type system when precision was not
@@ -351,13 +415,13 @@ Bug fixes and internal changes
       instance.
 * Convert files to `us-ascii`.
 * Work around
-  <a href="http://jira.codehaus.org/browse/JANINO-169">JANINO-169</a>.
+  [<a href="http://jira.codehaus.org/browse/JANINO-169">JANINO-169</a>].
 * Refactor SQL validator testing infrastructure so SQL parser is
   configurable.
 * Add `optiq-mat-plugin` to README.
 * Fix the check for duplicate subsets in a rule match.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/112">#112</a>,
-  "Java boolean column should be treated as SQL boolean".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-112">OPTIQ-112</a>]
+  Java boolean column should be treated as SQL boolean
 * Fix escaped unicode characters above 0x8000. Add tests for unicode
   strings.
 
@@ -365,24 +429,26 @@ Bug fixes and internal changes
 
 API changes
 
-* Fix <a href="https://github.com/julianhyde/optiq/issues/106">#106</a>,
-  "Make `Schema` and `Table` SPIs simpler to implement, and make them
-  re-usable across connections". (**This is a breaking change**.)
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-106">OPTIQ-106</a>]
+  Make `Schema` and `Table` SPIs simpler to implement, and make them
+  re-usable across connections
+  (**This is a breaking change**.)
 * Make it easier to define sub-classes of rule operands. The new class
   `RelOptRuleOperandChildren` contains the children of an operand and
   the policy for dealing with them. Existing rules now use the new
   methods to construct operands: `operand()`, `leaf()`, `any()`, `none()`,
   `unordered()`. The previous methods are now deprecated and will be
   removed before 0.4.18. (**This is a breaking change**.)
-* Fix <a href="https://github.com/julianhyde/optiq/issues/101">#101</a>,
-  "Enable phased access to the Optiq engine".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-101">OPTIQ-101</a>]
+  Enable phased access to the Optiq engine
 * List-handling methods in `Util`: add methods `skipLast`, `last`, `skip`; remove `subList`, `butLast`.
 * Convert `SqlIdentifier.names` from `String[]` to `ImmutableList<String>`.
 * Rename `OptiqAssert.assertThat()` to `that()`, to avoid clash with junit's `Assert.assertThat()`.
 * Usability improvements for `RelDataTypeFactory.FieldInfoBuilder`. It
   now has a type-factory, so you can just call `build()`.
 * Rework `HepProgramBuilder` into a fluent API.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/105">#105</a>, "Externalize RelNode to and from JSON".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-105">OPTIQ-105</a>]
+  Externalize RelNode to and from JSON
 
 Tuning
 
@@ -402,8 +468,8 @@ Tuning
   tweak cost of `EnumerableJoinRel` so that join is cheaper if the
   larger input is on the left, and more expensive if it is a cartesian
   product.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/70">#70</a>,
-  "Joins seem to be very expensive in memory".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-70">OPTIQ-70</a>]
+  Joins seem to be very expensive in memory
 * Make planning process more efficient by not sorting the list of
   matched rules each cycle. It is sorted if tracing is enabled;
   otherwise we scan to find the most important element. For this list,
@@ -412,9 +478,10 @@ Tuning
 
 Other
 
-* Fix <a href="https://github.com/julianhyde/optiq/issues/87">#87</a>,
-  "Constant folding". Rules for constant-expression reduction, and to simplify/eliminate
-  `VALUES` operator.
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-87">OPTIQ-87</a>]
+  Constant folding
+** Rules for constant-expression reduction, and to simplify/eliminate
+   `VALUES` operator.
 * Graph algorithms: Implement breadth-first iterator and cycle-detector.
 * Fix bug in planner which occurred when two `RelNode`s have identical
   digest but different row-type.
@@ -425,13 +492,13 @@ Other
 * Upgrade to eigenbase-xom-1.3.4, eigenbase-properties-1.1.4,
   eigenbase-resgen-1.3.6.
 * Upgrade to linq4j-0.1.12.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/97">#97</a>,
-  correlated EXISTS.
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-97">OPTIQ-97</a>]
+  Correlated EXISTS
 * Fix a bug in `VolcanoCost`.
 * Add class `FoodMartQuerySet`, that contains the 6,700 foodmart queries.
 * Fix factory class names in `UnregisteredDriver`
-* Fix <a href="https://github.com/julianhyde/optiq/issues/96">#96</a>,
-  "LIMIT against a table in a clone schema causes UnsupportedOperationException".
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-96">OPTIQ-96</a>]
+  LIMIT against a table in a clone schema causes UnsupportedOperationException
 * Disable spark module by default.
 * Allow `CloneSchema` to be specified in terms of url, driver, user,
   password; not just dataSource.
@@ -439,11 +506,16 @@ Other
 
 ## <a href="https://github.com/julianhyde/optiq/releases/tag/optiq-parent-0.4.16">0.4.16</a> / 2013-11-24
 
-* Fix <a href="https://github.com/julianhyde/optiq/issues/69">#69</a>, "Can't join on string columns" and other problems with expressions in the join condition
-* Fix <a href="https://github.com/julianhyde/optiq/issues/74">#74</a>, "JOIN ... USING fails in 3-way join with UnsupportedOperationException".
-* Fix <a href="https://github.com/julianhyde/optiq/issues/65">#65</a> issues in the JDBC driver, and in particular to DatabaseMetaData methods, to make Squirrel-SQL run better. Fix JDBC column, table, schema names for when the table is not in a schema of depth 1.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/85">#85</a>, "Adding a table to the root schema causes breakage in OptiqPrepareImpl".
-* Extract Optiq's JDBC driver as a new JDBC driver framework, Avatica (<a href="https://github.com/julianhyde/optiq/issues/84">#84</a>). Other projects can use this to implement a JDBC driver by implementing just a few methods. If you wish to use Optiq's JDBC driver, you will now need to include optiq-avatica.jar in addition to optiq-core.jar. Avatica does not depend on anything besides the standard Java library.
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-69">OPTIQ-69</a>]
+  Can't join on string columns and other problems with expressions in the join condition
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-74">OPTIQ-74</a>]
+  JOIN ... USING fails in 3-way join with UnsupportedOperationException.
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-65">OPTIQ-65</a>]
+  Fix issues in the JDBC driver, and in particular to DatabaseMetaData methods, to make Squirrel-SQL run better.
+* Fix JDBC column, table, schema names for when the table is not in a schema of depth 1.
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-85">OPTIQ-85</a>]
+  Adding a table to the root schema causes breakage in OptiqPrepareImpl
+* Extract Optiq's JDBC driver as a new JDBC driver framework, Avatica ([<a href="https://issues.apache.org/jira/browse/OPTIQ-84">OPTIQ-84</a>). Other projects can use this to implement a JDBC driver by implementing just a few methods. If you wish to use Optiq's JDBC driver, you will now need to include optiq-avatica.jar in addition to optiq-core.jar. Avatica does not depend on anything besides the standard Java library.
 * Support for parameters in PreparedStatement.
 * First steps in recognizing complex materializations. Internally we introduce a concept called a "star table", virtual table composed of real tables joined together via many-to-one relationships. The queries that define materializations and end-user queries are canonized in terms of star tables. Matching (not done yet) will then be a matter of looking for sort, groupBy, project. It is not yet possible to define a star in an Optiq model file.
 * Add section to <a href="HOWTO.md">HOWTO</a> on implementing adapters.
@@ -451,12 +523,16 @@ Other
 * Fix how strings are escaped in JsonBuilder.
 * Test suite now depends on an embedded hsqldb database, so you can run <code>mvn test</code> right after pulling from git. You can instead use a MySQL database if you specify '-Doptiq.test.db=mysql', but you need to manually populate it.
 * Fix a planner issue which occurs when the left and right children of join are the same relational expression, caused by a self-join query.
-* Fix <a href="https://github.com/julianhyde/optiq/issues/76">#76</a> precedence of the item operator, <code>map[index]</code>; remove the space before '[' when converting parse tree to string.
+* [<a href="https://issues.apache.org/jira/browse/OPTIQ-76">OPTIQ-76</a>]
+  Precedence of the item operator, <code>map[index]</code>; remove the space before '[' when converting parse tree to string.
 * Allow <code>CAST(expression AS ANY)</code>, and fix an issue with the ANY type and NULL values.
 * Handle null timestamps and dates coming out of JDBC adapter.
 * Add <code>jdbcDriver</code> attribute to JDBC schema in model, for drivers that do not auto-register.
 * Allow join rules to match any subclass of JoinRelBase.
-* Push projects, filters and sorts down to MongoDB. (Fixes <a href="https://github.com/julianhyde/optiq/issues/57">#57</a>, <a href="https://github.com/julianhyde/optiq/pull/60">#60</a> and <a href="https://github.com/julianhyde/optiq/issues/72">#72</a>.)
+* Push projects, filters and sorts down to MongoDB.
+  (Fixes [<a href="https://issues.apache.org/jira/browse/OPTIQ-57">OPTIQ-57</a>],
+  <a href="https://github.com/julianhyde/optiq/pull/60">pull #60</a> and
+  [<a href="https://issues.apache.org/jira/browse/OPTIQ-72">OPTIQ-72</a>.)
 * Add instructions for loading FoodMart data set into MongoDB, and how to enable tracing.
 * Now runs on JDK 1.8 (still runs on JDK 1.6 and JDK 1.7).
 * Upgrade to junit-4.11 (avoiding the dodgy junit-4.1.12).


[6/8] git commit: Change Prepare.trim to a thread-local, to fix non-determinism in tests.

Posted by jh...@apache.org.
Change Prepare.trim to a thread-local, to fix non-determinism in tests.


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

Branch: refs/heads/master
Commit: 86a6f8c53f3e978574dbbae7c40a5efd5a736e2b
Parents: 1de5cf8
Author: julianhyde <ju...@gmail.com>
Authored: Fri Jun 27 18:14:41 2014 -0700
Committer: julianhyde <ju...@gmail.com>
Committed: Fri Jun 27 18:18:31 2014 -0700

----------------------------------------------------------------------
 .../main/java/net/hydromatic/optiq/prepare/Prepare.java | 10 ++++++++--
 .../test/java/net/hydromatic/optiq/test/JdbcTest.java   |  8 ++++----
 .../net/hydromatic/optiq/test/MaterializationTest.java  | 12 ++++++------
 3 files changed, 18 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/86a6f8c5/core/src/main/java/net/hydromatic/optiq/prepare/Prepare.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/net/hydromatic/optiq/prepare/Prepare.java b/core/src/main/java/net/hydromatic/optiq/prepare/Prepare.java
index 219f9e5..c2d5dba 100644
--- a/core/src/main/java/net/hydromatic/optiq/prepare/Prepare.java
+++ b/core/src/main/java/net/hydromatic/optiq/prepare/Prepare.java
@@ -84,7 +84,13 @@ public abstract class Prepare {
   protected List<List<String>> fieldOrigins;
   protected RelDataType parameterRowType;
 
-  public static boolean trim = false; // temporary. for testing.
+  // temporary. for testing.
+  public static final ThreadLocal<Boolean> THREAD_TRIM =
+      new ThreadLocal<Boolean>() {
+        @Override protected Boolean initialValue() {
+          return false;
+        }
+      };
 
   public Prepare(OptiqPrepare.Context context, CatalogReader catalogReader,
       Convention resultConvention) {
@@ -353,7 +359,7 @@ public abstract class Prepare {
     // For now, don't trim if there are more than 3 joins. The projects
     // near the leaves created by trim migrate past joins and seem to
     // prevent join-reordering.
-    return trim || RelOptUtil.countJoins(rootRel) < 2;
+    return THREAD_TRIM.get() || RelOptUtil.countJoins(rootRel) < 2;
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/86a6f8c5/core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java b/core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java
index 4a7a548..81198b6 100644
--- a/core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java
+++ b/core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java
@@ -3659,7 +3659,7 @@ public class JdbcTest {
   /** Tests that field-trimming creates a project near the table scan. */
   @Test public void testTrimFields() throws Exception {
     try {
-      Prepare.trim = true;
+      Prepare.THREAD_TRIM.set(true);
       OptiqAssert.that()
           .with(OptiqAssert.Config.REGULAR)
           .query(
@@ -3672,7 +3672,7 @@ public class JdbcTest {
               + "    ProjectRel(deptno=[$1], name=[$2], commission=[$4])\n"
               + "      EnumerableTableAccessRel(table=[[hr, emps]])\n");
     } finally {
-      Prepare.trim = false;
+      Prepare.THREAD_TRIM.set(false);
     }
   }
 
@@ -3680,7 +3680,7 @@ public class JdbcTest {
    * query with windowed-aggregation. */
   @Test public void testTrimFieldsOver() throws Exception {
     try {
-      Prepare.trim = true;
+      Prepare.THREAD_TRIM.set(true);
       OptiqAssert.that()
           .with(OptiqAssert.Config.REGULAR)
           .query(
@@ -3693,7 +3693,7 @@ public class JdbcTest {
               + "    ProjectRel(empid=[$0], deptno=[$1], name=[$2], commission=[$4])\n"
               + "      EnumerableTableAccessRel(table=[[hr, emps]])\n");
     } finally {
-      Prepare.trim = false;
+      Prepare.THREAD_TRIM.set(false);
     }
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/86a6f8c5/core/src/test/java/net/hydromatic/optiq/test/MaterializationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/net/hydromatic/optiq/test/MaterializationTest.java b/core/src/test/java/net/hydromatic/optiq/test/MaterializationTest.java
index 72e49a4..624f7c5 100644
--- a/core/src/test/java/net/hydromatic/optiq/test/MaterializationTest.java
+++ b/core/src/test/java/net/hydromatic/optiq/test/MaterializationTest.java
@@ -67,7 +67,7 @@ public class MaterializationTest {
 
   @Test public void testFilterQueryOnProjectView() {
     try {
-      Prepare.trim = true;
+      Prepare.THREAD_TRIM.set(true);
       MaterializationService.setThreadLocal();
       OptiqAssert.that()
           .with(OptiqAssert.Config.REGULAR)
@@ -82,7 +82,7 @@ public class MaterializationTest {
               "EnumerableTableAccessRel(table=[[hr, m0]])")
           .sameResultWithMaterializationsDisabled();
     } finally {
-      Prepare.trim = false;
+      Prepare.THREAD_TRIM.set(false);
     }
   }
 
@@ -97,7 +97,7 @@ public class MaterializationTest {
   private void checkMaterialize(String materialize, String query, String model,
       Function1<ResultSet, Void> checker) {
     try {
-      Prepare.trim = true;
+      Prepare.THREAD_TRIM.set(true);
       MaterializationService.setThreadLocal();
       OptiqAssert.that()
           .with(OptiqAssert.Config.REGULAR)
@@ -107,7 +107,7 @@ public class MaterializationTest {
           .explainMatches(checker)
           .sameResultWithMaterializationsDisabled();
     } finally {
-      Prepare.trim = false;
+      Prepare.THREAD_TRIM.set(false);
     }
   }
 
@@ -116,7 +116,7 @@ public class MaterializationTest {
   private void checkNoMaterialize(String materialize, String query,
       String model) {
     try {
-      Prepare.trim = true;
+      Prepare.THREAD_TRIM.set(true);
       MaterializationService.setThreadLocal();
       OptiqAssert.that()
           .with(OptiqAssert.Config.REGULAR)
@@ -126,7 +126,7 @@ public class MaterializationTest {
           .explainContains(
               "EnumerableTableAccessRel(table=[[hr, emps]])");
     } finally {
-      Prepare.trim = false;
+      Prepare.THREAD_TRIM.set(false);
     }
   }
 


[3/8] git commit: Oops! (Expected result changed following merge.)

Posted by jh...@apache.org.
Oops! (Expected result changed following merge.)


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

Branch: refs/heads/master
Commit: 96a949f2ea24fa287bdb0b3fd4283ecff8812851
Parents: d940fa3
Author: julianhyde <ju...@gmail.com>
Authored: Fri Jun 27 16:22:27 2014 -0700
Committer: julianhyde <ju...@gmail.com>
Committed: Fri Jun 27 16:22:27 2014 -0700

----------------------------------------------------------------------
 core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/96a949f2/core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java b/core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java
index ccc4e99..4a7a548 100644
--- a/core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java
+++ b/core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java
@@ -3688,7 +3688,7 @@ public class JdbcTest {
             + "from \"hr\".\"emps\"\n"
             + "where \"empid\" > 10")
           .convertContains(
-              "ProjectRel(name=[$2], EXPR$1=[+(CAST(COUNT($3) OVER (PARTITION BY $1 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)):BIGINT, 1)])\n"
+              "ProjectRel(name=[$2], EXPR$1=[+(COUNT($3) OVER (PARTITION BY $1 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING), 1)])\n"
               + "  FilterRel(condition=[>($0, 10)])\n"
               + "    ProjectRel(empid=[$0], deptno=[$1], name=[$2], commission=[$4])\n"
               + "      EnumerableTableAccessRel(table=[[hr, emps]])\n");


[2/8] git commit: Add tests that RelFieldTrimmer creates a ProjectRel, near the leaf of the tree, for just the fields used above it.

Posted by jh...@apache.org.
Add tests that RelFieldTrimmer creates a ProjectRel, near the leaf of the tree, for just the fields used above it.


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

Branch: refs/heads/master
Commit: e0b2f8348ac97a666004c10ab93e6143358aa5cc
Parents: 99f3968
Author: Julian Hyde <ju...@gmail.com>
Authored: Thu Jun 26 17:43:38 2014 -0600
Committer: Julian Hyde <ju...@gmail.com>
Committed: Fri Jun 27 15:46:20 2014 -0700

----------------------------------------------------------------------
 .../net/hydromatic/optiq/prepare/Prepare.java   |  2 +
 .../net/hydromatic/optiq/test/JdbcTest.java     | 40 +++++++++++++++
 .../net/hydromatic/optiq/test/OptiqAssert.java  | 54 ++++++++++++++++++++
 3 files changed, 96 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/e0b2f834/core/src/main/java/net/hydromatic/optiq/prepare/Prepare.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/net/hydromatic/optiq/prepare/Prepare.java b/core/src/main/java/net/hydromatic/optiq/prepare/Prepare.java
index 026f436..469339d 100644
--- a/core/src/main/java/net/hydromatic/optiq/prepare/Prepare.java
+++ b/core/src/main/java/net/hydromatic/optiq/prepare/Prepare.java
@@ -23,6 +23,7 @@ import net.hydromatic.optiq.jdbc.OptiqPrepare;
 import net.hydromatic.optiq.jdbc.OptiqSchema;
 import net.hydromatic.optiq.rules.java.JavaRules;
 import net.hydromatic.optiq.runtime.Bindable;
+import net.hydromatic.optiq.runtime.Hook;
 import net.hydromatic.optiq.runtime.Typed;
 import net.hydromatic.optiq.tools.Program;
 import net.hydromatic.optiq.tools.Programs;
@@ -215,6 +216,7 @@ public abstract class Prepare {
 
     RelNode rootRel =
         sqlToRelConverter.convertQuery(sqlQuery, needsValidation, true);
+    Hook.CONVERTED.run(rootRel);
 
     if (timingTracer != null) {
       timingTracer.traceTime("end sql2rel");

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/e0b2f834/core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java b/core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java
index 76d54a2..51eb268 100644
--- a/core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java
+++ b/core/src/test/java/net/hydromatic/optiq/test/JdbcTest.java
@@ -3656,6 +3656,46 @@ public class JdbcTest {
         "ENAME=Wilma; DEPTNO=null; GENDER=F; M1=1; M2=1; M3=9");
   }
 
+  /** Tests that field-trimming creates a project near the table scan. */
+  @Test public void testTrimFields() throws Exception {
+    try {
+      Prepare.trim = true;
+      OptiqAssert.that()
+          .with(OptiqAssert.Config.REGULAR)
+          .query(
+            "select \"name\", count(\"commission\") + 1\n"
+            + "from \"hr\".\"emps\"\n"
+            + "group by \"deptno\", \"name\"")
+          .convertContains(
+              "ProjectRel(name=[$1], EXPR$1=[+($2, 1)])\n"
+              + "  AggregateRel(group=[{0, 1}], agg#0=[COUNT($2)])\n"
+              + "    ProjectRel(deptno=[$1], name=[$2], commission=[$4])\n"
+              + "      EnumerableTableAccessRel(table=[[hr, emps]])\n");
+    } finally {
+      Prepare.trim = false;
+    }
+  }
+
+  /** Tests that field-trimming creates a project near the table scan, in a
+   * query with windowed-aggregation. */
+  @Test public void testTrimFieldsOver() throws Exception {
+    try {
+      Prepare.trim = true;
+      OptiqAssert.that()
+          .with(OptiqAssert.Config.REGULAR)
+          .query(
+            "select \"name\", count(\"commission\") over (partition by \"deptno\") + 1\n"
+            + "from \"hr\".\"emps\"\n"
+            + "where \"empid\" > 10")
+          .convertContains(
+              "ProjectRel(name=[$2], EXPR$1=[+(CAST(COUNT($4) OVER (PARTITION BY $1 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)):BIGINT, 1)])\n"
+              + "  FilterRel(condition=[>($0, 10)])\n"
+              + "    EnumerableTableAccessRel(table=[[hr, emps]])\n");
+    } finally {
+      Prepare.trim = false;
+    }
+  }
+
   /** Tests window aggregate whose argument is a constant. */
   @Test public void testWinAggConstant() {
     OptiqAssert.that()

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/e0b2f834/core/src/test/java/net/hydromatic/optiq/test/OptiqAssert.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/net/hydromatic/optiq/test/OptiqAssert.java b/core/src/test/java/net/hydromatic/optiq/test/OptiqAssert.java
index b3d08d7..16657b7 100644
--- a/core/src/test/java/net/hydromatic/optiq/test/OptiqAssert.java
+++ b/core/src/test/java/net/hydromatic/optiq/test/OptiqAssert.java
@@ -29,6 +29,8 @@ import net.hydromatic.optiq.jdbc.MetaImpl;
 import net.hydromatic.optiq.jdbc.OptiqConnection;
 import net.hydromatic.optiq.runtime.Hook;
 
+import org.eigenbase.rel.RelNode;
+import org.eigenbase.relopt.RelOptUtil;
 import org.eigenbase.util.*;
 
 import com.google.common.collect.ImmutableList;
@@ -352,6 +354,35 @@ public class OptiqAssert {
     }
   }
 
+  static void assertPrepare(
+      Connection connection,
+      String sql,
+      boolean materializationsEnabled,
+      Function1<RelNode, Void> convertChecker) throws Exception {
+    final String message =
+        "With materializationsEnabled=" + materializationsEnabled;
+    final RelNode[] s = {null};
+    Hook.Closeable closeable = Hook.CONVERTED.addThread(
+        new Function1<Object, Object>() {
+          public Object apply(Object rel) {
+            s[0] = (RelNode) rel;
+            return null;
+          }
+        });
+    try {
+      ((OptiqConnection) connection).getProperties().setProperty(
+          "materializationsEnabled", Boolean.toString(materializationsEnabled));
+      PreparedStatement statement = connection.prepareStatement(sql);
+      statement.close();
+      connection.close();
+    } catch (Throwable e) {
+      throw new RuntimeException(message, e);
+    } finally {
+      closeable.close();
+    }
+    convertChecker.apply(s[0]);
+  }
+
   static String toString(ResultSet resultSet) throws SQLException {
     final StringBuilder buf = new StringBuilder();
     final ResultSetMetaData metaData = resultSet.getMetaData();
@@ -855,6 +886,29 @@ public class OptiqAssert {
       }
     }
 
+    /** Checks that when the query (which was set using
+     * {@link AssertThat#query(String)}) is converted to a relational algrebra
+     * expression matching the given string. */
+    public AssertQuery convertContains(final String expected) {
+      try {
+        assertPrepare(
+            createConnection(),
+            sql,
+            false,
+            new Function1<RelNode, Void>() {
+              public Void apply(RelNode relNode) {
+                String s = RelOptUtil.toString(relNode);
+                assertThat(s, containsString(expected));
+                return null;
+              }
+            });
+        return this;
+      } catch (Exception e) {
+        throw new RuntimeException(
+            "exception while executing [" + sql + "]", e);
+      }
+    }
+
     public AssertQuery explainContains(String expected) {
       return explainMatches(checkResultContains(expected));
     }


[8/8] git commit: [maven-release-plugin] prepare for next development iteration

Posted by jh...@apache.org.
[maven-release-plugin] prepare for next development iteration


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

Branch: refs/heads/master
Commit: 71ebeaa81ad92845a145191cd31f2d6448d14a50
Parents: 3da850a
Author: Julian Hyde <ju...@gmail.com>
Authored: Fri Jun 27 20:11:51 2014 -0700
Committer: Julian Hyde <ju...@gmail.com>
Committed: Fri Jun 27 20:11:51 2014 -0700

----------------------------------------------------------------------
 avatica/pom.xml    | 4 ++--
 core/pom.xml       | 6 +++---
 mongodb/pom.xml    | 8 ++++----
 plus/pom.xml       | 8 ++++----
 pom.xml            | 4 ++--
 spark/pom.xml      | 8 ++++----
 splunk/pom.xml     | 8 ++++----
 ubenchmark/pom.xml | 2 +-
 8 files changed, 24 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/71ebeaa8/avatica/pom.xml
----------------------------------------------------------------------
diff --git a/avatica/pom.xml b/avatica/pom.xml
index beaf8b4..315db36 100644
--- a/avatica/pom.xml
+++ b/avatica/pom.xml
@@ -3,12 +3,12 @@
   <parent>
     <groupId>net.hydromatic</groupId>
     <artifactId>optiq-parent</artifactId>
-    <version>0.8</version>
+    <version>0.9-SNAPSHOT</version>
   </parent>
 
   <artifactId>optiq-avatica</artifactId>
   <packaging>jar</packaging>
-  <version>0.8</version>
+  <version>0.9-SNAPSHOT</version>
   <name>optiq-avatica</name>
   <description>JDBC driver framework.</description>
 

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/71ebeaa8/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index 3d34a1c..b2352ab 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -3,12 +3,12 @@
   <parent>
     <groupId>net.hydromatic</groupId>
     <artifactId>optiq-parent</artifactId>
-    <version>0.8</version>
+    <version>0.9-SNAPSHOT</version>
   </parent>
 
   <artifactId>optiq-core</artifactId>
   <packaging>jar</packaging>
-  <version>0.8</version>
+  <version>0.9-SNAPSHOT</version>
   <name>optiq-core</name>
   <description>Core Optiq APIs and engine.</description>
 
@@ -21,7 +21,7 @@
     <dependency>
       <groupId>net.hydromatic</groupId>
       <artifactId>optiq-avatica</artifactId>
-      <version>0.8</version>
+      <version>0.9-SNAPSHOT</version>
     </dependency>
   </dependencies>
 

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/71ebeaa8/mongodb/pom.xml
----------------------------------------------------------------------
diff --git a/mongodb/pom.xml b/mongodb/pom.xml
index 0168366..bc0b6cb 100644
--- a/mongodb/pom.xml
+++ b/mongodb/pom.xml
@@ -3,12 +3,12 @@
   <parent>
     <groupId>net.hydromatic</groupId>
     <artifactId>optiq-parent</artifactId>
-    <version>0.8</version>
+    <version>0.9-SNAPSHOT</version>
   </parent>
 
   <artifactId>optiq-mongodb</artifactId>
   <packaging>jar</packaging>
-  <version>0.8</version>
+  <version>0.9-SNAPSHOT</version>
   <name>optiq-mongodb</name>
   <description>MongoDB adapter for Optiq.</description>
 
@@ -20,13 +20,13 @@
     <dependency>
       <groupId>net.hydromatic</groupId>
       <artifactId>optiq-core</artifactId>
-      <version>0.8</version>
+      <version>0.9-SNAPSHOT</version>
       <type>jar</type>
     </dependency>
     <dependency>
       <groupId>net.hydromatic</groupId>
       <artifactId>optiq-core</artifactId>
-      <version>0.8</version>
+      <version>0.9-SNAPSHOT</version>
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/71ebeaa8/plus/pom.xml
----------------------------------------------------------------------
diff --git a/plus/pom.xml b/plus/pom.xml
index e62858c..1f7f7cd 100644
--- a/plus/pom.xml
+++ b/plus/pom.xml
@@ -3,12 +3,12 @@
   <parent>
     <groupId>net.hydromatic</groupId>
     <artifactId>optiq-parent</artifactId>
-    <version>0.8</version>
+    <version>0.9-SNAPSHOT</version>
   </parent>
 
   <artifactId>optiq-plus</artifactId>
   <packaging>jar</packaging>
-  <version>0.8</version>
+  <version>0.9-SNAPSHOT</version>
   <name>optiq-plus</name>
   <description>Miscellaneous extras for Optiq.</description>
 
@@ -20,13 +20,13 @@
     <dependency>
       <groupId>net.hydromatic</groupId>
       <artifactId>optiq-core</artifactId>
-      <version>0.8</version>
+      <version>0.9-SNAPSHOT</version>
       <type>jar</type>
     </dependency>
     <dependency>
       <groupId>net.hydromatic</groupId>
       <artifactId>optiq-core</artifactId>
-      <version>0.8</version>
+      <version>0.9-SNAPSHOT</version>
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/71ebeaa8/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 03ddf9a..45e35fe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
   <groupId>net.hydromatic</groupId>
   <artifactId>optiq-parent</artifactId>
   <packaging>pom</packaging>
-  <version>0.8</version>
+  <version>0.9-SNAPSHOT</version>
 
   <!-- More project information. -->
   <name>optiq-parent</name>
@@ -79,7 +79,7 @@
     <connection>scm:git:git://github.com/julianhyde/optiq.git</connection>
     <developerConnection>scm:git:git@github.com:julianhyde/optiq.git</developerConnection>
     <url>http://github.com/julianhyde/optiq/tree/master</url>
-    <tag>optiq-parent-0.8</tag>
+    <tag>HEAD</tag>
   </scm>
 
   <modules>

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/71ebeaa8/spark/pom.xml
----------------------------------------------------------------------
diff --git a/spark/pom.xml b/spark/pom.xml
index e62b31c..3e76688 100644
--- a/spark/pom.xml
+++ b/spark/pom.xml
@@ -3,12 +3,12 @@
   <parent>
     <groupId>net.hydromatic</groupId>
     <artifactId>optiq-parent</artifactId>
-    <version>0.8</version>
+    <version>0.9-SNAPSHOT</version>
   </parent>
 
   <artifactId>optiq-spark</artifactId>
   <packaging>jar</packaging>
-  <version>0.8</version>
+  <version>0.9-SNAPSHOT</version>
   <name>optiq-spark</name>
 
   <properties>
@@ -19,12 +19,12 @@
     <dependency>
       <groupId>net.hydromatic</groupId>
       <artifactId>optiq-core</artifactId>
-      <version>0.8</version>
+      <version>0.9-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>net.hydromatic</groupId>
       <artifactId>optiq-core</artifactId>
-      <version>0.8</version>
+      <version>0.9-SNAPSHOT</version>
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/71ebeaa8/splunk/pom.xml
----------------------------------------------------------------------
diff --git a/splunk/pom.xml b/splunk/pom.xml
index 9624be1..dcc1c05 100644
--- a/splunk/pom.xml
+++ b/splunk/pom.xml
@@ -3,12 +3,12 @@
   <parent>
     <groupId>net.hydromatic</groupId>
     <artifactId>optiq-parent</artifactId>
-    <version>0.8</version>
+    <version>0.9-SNAPSHOT</version>
   </parent>
 
   <artifactId>optiq-splunk</artifactId>
   <packaging>jar</packaging>
-  <version>0.8</version>
+  <version>0.9-SNAPSHOT</version>
   <name>optiq-splunk</name>
   <description>Splunk adapter for Optiq; also a JDBC driver for Splunk.</description>
 
@@ -20,12 +20,12 @@
     <dependency>
       <groupId>net.hydromatic</groupId>
       <artifactId>optiq-core</artifactId>
-      <version>0.8</version>
+      <version>0.9-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>net.hydromatic</groupId>
       <artifactId>optiq-core</artifactId>
-      <version>0.8</version>
+      <version>0.9-SNAPSHOT</version>
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/71ebeaa8/ubenchmark/pom.xml
----------------------------------------------------------------------
diff --git a/ubenchmark/pom.xml b/ubenchmark/pom.xml
index 42fdef2..af9cb5d 100644
--- a/ubenchmark/pom.xml
+++ b/ubenchmark/pom.xml
@@ -3,7 +3,7 @@
   <parent>
     <artifactId>optiq-parent</artifactId>
     <groupId>net.hydromatic</groupId>
-    <version>0.8</version>
+    <version>0.9-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>