http://git-wip-us.apache.org/repos/asf/calcite/blob/5cee486f/avatica/site/_docs/history.md ---------------------------------------------------------------------- diff --git a/avatica/site/_docs/history.md b/avatica/site/_docs/history.md new file mode 100644 index 0000000..d46bfc8 --- /dev/null +++ b/avatica/site/_docs/history.md @@ -0,0 +1,2343 @@ +--- +layout: docs +title: History +permalink: "/docs/history.html" +--- + +<!-- +{% comment %} +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to you under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +{% endcomment %} +--> + +For a full list of releases, see +<a href="https://github.com/apache/calcite/releases">github</a>. +Downloads are available on the +[downloads page]({{ site.baseurl }}/downloads/). + +## 1.7.0 / (Under Development) +{: #v1-7-0} + +One notable change is that the use of JUL (java.util.logging) has been replaced +with [SLF4J](http://slf4j.org/). SLF4J provides an API which Calcite can use +independent of the logging implementation. This ultimately provides additional +flexibility to users, allowing them to configure Calcite's logging within their +own chosen logging framework. This work was done in [CALCITE-669](https://issues.apache.org/jira/browse/CALCITE-669). + +For users experienced with configuring JUL in Calcite previously, there are some +differences as some the JUL logging levels do not exist in SLF4J: `FINE`, +`FINER`, and `FINEST`, specifically. To deal with this, `FINE` was mapped +to SLF4J's `DEBUG` level, while `FINER` and `FINEST` were mapped to SLF4J's `TRACE`. + +## <a href="https://github.com/apache/calcite/releases/tag/calcite-1.6.0">1.6.0</a> / 2016-01-22 +{: #v1-6-0} + +As usual in this release, there are new SQL features, improvements to +planning rules and Avatica, and lots of bug fixes. We'll spotlight a +couple of features make it easier to handle complex queries. + +[<a href="https://issues.apache.org/jira/browse/CALCITE-816">CALCITE-816</a>] +allows you to represent sub-queries (`EXISTS`, `IN` and scalar) as +`RexSubQuery`, a kind of expression in the relational algebra. Until +now, the sql-to-rel converter was burdened with expanding sub-queries, +and people creating relational algebra directly (or via RelBuilder) +could only create 'flat' relational expressions. Now we have planner +rules to expand and de-correlate sub-queries. + +Metadata is the fuel that powers query planning. It includes +traditional query-planning statistics such as cost and row-count +estimates, but also information such as which columns form unique +keys, unique and what predicates are known to apply to a relational +expression's output rows. From the predicates we can deduce which +columns are constant, and following +[<a href="https://issues.apache.org/jira/browse/CALCITE-1023">CALCITE-1023</a>] +we can now remove constant columns from `GROUP BY` keys. + +Metadata is often computed recursively, and it is hard to safely and +efficiently calculate metadata on a graph of `RelNode`s that is large, +frequently cyclic, and constantly changing. +[<a href="https://issues.apache.org/jira/browse/CALCITE-794">CALCITE-794</a>] +introduces a context to each metadata call. That context can detect +cyclic metadata calls and produce a safe answer to the metadata +request. It will also allow us to add finer-grained caching and +further tune the metadata layer. + +New features + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-816">CALCITE-816</a>] + Represent sub-query as a `RexNode` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-854">CALCITE-854</a>] + Implement `UNNEST ... WITH ORDINALITY` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1003">CALCITE-1003</a>] + Utility to convert `RelNode` to SQL (Amogh Margoor) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-1010">CALCITE-1010</a>] + `FETCH/LIMIT` and `OFFSET` in RelToSqlConverter (Amogh Margoor) + * Move code from `JdbcImplementor` and `JdbcRules` to new class + `SqlImplementor` + * Deduce dialect's null collation from `DatabaseMetaData` + * Fix `RelToSqlConverterTest` on Windows +* Following + [<a href="https://issues.apache.org/jira/browse/CALCITE-897">CALCITE-897</a>], + empty string for `boolean` properties means true +* [<a href="https://issues.apache.org/jira/browse/CALCITE-992">CALCITE-992</a>] + Validate and resolve sequence reference as a `Table` object +* [<a href="https://issues.apache.org/jira/browse/CALCITE-968">CALCITE-968</a>] + Stream-to-relation and stream-to-stream joins (Milinda Pathirage) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1041">CALCITE-1041</a>] + User-defined function that returns `DATE` or `TIMESTAMP` value +* [<a href="https://issues.apache.org/jira/browse/CALCITE-986">CALCITE-986</a>] + User-defined function with `DATE` or `TIMESTAMP` parameters +* [<a href="https://issues.apache.org/jira/browse/CALCITE-958">CALCITE-958</a>] + Overloaded Table Functions with named arguments (Julien Le Dem) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-970">CALCITE-970</a>] + If `NULLS FIRST`/`NULLS LAST` not specified, sort `NULL` values high + +Avatica features and bug fixes + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1040">CALCITE-1040</a>] + Differentiate better between arrays and scalars in protobuf +* [<a href="https://issues.apache.org/jira/browse/CALCITE-934">CALCITE-934</a>] + Use an OS-assigned ephemeral port for `CalciteRemoteDriverTest` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-767">CALCITE-767</a>] + Create Avatica RPC endpoints for commit and rollback commands +* [<a href="https://issues.apache.org/jira/browse/CALCITE-983">CALCITE-983</a>] + Handle nulls in `ErrorResponse`'s protobuf representation better +* [<a href="https://issues.apache.org/jira/browse/CALCITE-989">CALCITE-989</a>] + Add server's address in each response +* Fix some bugs found by static analysis +* Make all `equals` and `hashCode` methods uniform +* [<a href="https://issues.apache.org/jira/browse/CALCITE-962">CALCITE-962</a>] + Propagate the cause, not just the cause's message, from `JdbcMeta` + +Planner rules + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1057">CALCITE-1057</a>] + Add `RelMetadataProvider` parameter to standard planner `Program`s +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1055">CALCITE-1055</a>] + `SubQueryRemoveRule` should create `Correlate`, not `Join`, for correlated + sub-queries +* [<a href="https://issues.apache.org/jira/browse/CALCITE-978">CALCITE-978</a>] + Enable customizing constant folding rule behavior when a `Filter` simplifies + to false (Jason Altekruse) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-977">CALCITE-977</a>] + Make the constant expression `Executor` configurable in `FrameworkConfig` + (Jason Altekruse) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1058">CALCITE-1058</a>] + Add method `RelBuilder.empty`, and rewrite LIMIT 0 and WHERE FALSE to it +* [<a href="https://issues.apache.org/jira/browse/CALCITE-996">CALCITE-996</a>] + Simplify predicate when we create a `Filter` operator +* Simplify `RexProgram`, in particular `(NOT CASE ... END) IS TRUE`, which + occurs in when `NOT IN` is expanded +* Fix variant of + [<a href="https://issues.apache.org/jira/browse/CALCITE-923">CALCITE-923</a>] + that occurs in `RelOptRulesTest.testPushFilterPastProject` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1023">CALCITE-1023</a>] + and + [<a href="https://issues.apache.org/jira/browse/CALCITE-1038">CALCITE-1038</a>] + Planner rule that removes `Aggregate` keys that are constant +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1018">CALCITE-1018</a>] + `SortJoinTransposeRule` not firing due to `getMaxRowCount(RelSubset)` returning + null +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1019">CALCITE-1019</a>] + `RelMdUtil.checkInputForCollationAndLimit()` was wrong with `alreadySorted` + check +* Not safe to use '=' for predicates on constant expressions that might be null +* [<a href="https://issues.apache.org/jira/browse/CALCITE-993">CALCITE-993</a>] + Pull up all constant expressions, not just literals, as predicates +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1005">CALCITE-1005</a>] + Handle null in `getMaxRowCount` for `Aggregate` (Mike Hinchey) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-995">CALCITE-995</a>] + Sort transpose rules might fall in an infinite loop +* [<a href="https://issues.apache.org/jira/browse/CALCITE-987">CALCITE-987</a>] + Pushing `LIMIT 0` results in an infinite loop (Pengcheng Xiong) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-988">CALCITE-988</a>] + `FilterToProjectUnifyRule.invert(MutableRel, MutableRel, MutableProject)` + works incorrectly +* [<a href="https://issues.apache.org/jira/browse/CALCITE-969">CALCITE-969</a>] + Composite `EnumerableSort` with `DESC` wrongly sorts `NULL` values low +* [<a href="https://issues.apache.org/jira/browse/CALCITE-959">CALCITE-959</a>] + Add description to `SortProjectTransposeRule`'s constructor + +Bug fixes, API changes and minor enhancements + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1060">CALCITE-1060</a>] + Fix test deadlock by initializing `DriverManager` before registering `AlternatingDriver` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1047">CALCITE-1047</a>] + `ChunkList.clear` throws `AssertionError` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1053">CALCITE-1053</a>] + CPU spin, `ReflectiveRelMetadataProvider.apply` waiting for `HashMap.get` +* Upgrade toolbox, to fix line length issue on Windows +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1051">CALCITE-1051</a>] + Underflow exception due to scaling IN clause literals (Frankie Bollaert) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-975">CALCITE-975</a>] + Allow Planner to return validated row type together with SqlNode +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1020">CALCITE-1020</a>] + Add `MILLISECOND` in `TimeUnit` (Pengcheng Xiong) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-794">CALCITE-794</a>] + Detect cycles when computing statistics + (**This is a breaking change**.) +* Tune algorithm that deduces the return type of `AND` expression +* [<a href="https://issues.apache.org/jira/browse/CALCITE-842">CALCITE-842</a>] + Decorrelator gets field offsets confused if fields have been trimmed +* Fix `NullPointerException` in `SqlJoin.toString()` +* Add `ImmutableBitSet.rebuild()` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-915">CALCITE-915</a>] + Tests now unset `ThreadLocal` values on exit +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1036">CALCITE-1036</a>] + `DiffRepository` should not insert new resources at the end of the repository +* [<a href="https://issues.apache.org/jira/browse/CALCITE-955">CALCITE-955</a>] + `Litmus` (continuation-passing style for methods that check invariants) +* `RelBuilder.project` now does nothing if asked to project the identity with + the same field names +* Deprecate some `Util` methods, and upgrade last Maven modules to JDK 1.7 +* Document `RelOptPredicateList` +* Add `ImmutableNullableList.copyOf(Iterable)` +* Fix "endPosTable already set" error from `javac` +* Add benchmark of `Parser.create(sql).parseQuery()` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1042">CALCITE-1042</a>] + Ensure that `FILTER` is `BOOLEAN NOT NULL` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1039">CALCITE-1039</a>] + Assign a `SqlKind` value for each built-in aggregate function +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1030">CALCITE-1030</a>] + JSON `ModelHandler` calling `SchemaPlus.setCacheEnabled()` causes + `UnsupportedOperationException` when using `SimpleCalciteSchema` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1028">CALCITE-1028</a>] + Move populate materializations after sql-to-rel conversion +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1034">CALCITE-1034</a>] + Use a custom checker for code style rules that Checkstyle cannot express +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1032">CALCITE-1032</a>] + Verify javadoc of private methods +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1015">CALCITE-1015</a>] + `OFFSET 0` causes `AssertionError` (Zhen Wang) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1024">CALCITE-1024</a>] + In a planner test, if a rule should have no effect, state that explicitly +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1016">CALCITE-1016</a>] + `GROUP BY *constant*` on empty relation should return 0 rows +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1022">CALCITE-1022</a>] + Rename `.oq` Quidem files to `.iq` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-980">CALCITE-980</a>] + Fix `AND` and `OR` implementation in `Enumerable` convention +* [<a href="https://issues.apache.org/jira/browse/CALCITE-459">CALCITE-459</a>] + When parsing SQL, allow single line comment on last line (Zhen Wang) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1009">CALCITE-1009</a>] + `SelfPopulatingList` is not thread-safe +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1008">CALCITE-1008</a>] + Replace `Closeable` with `AutoCloseable` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1001">CALCITE-1001</a>] + Upgrade to quidem-0.7 +* [<a href="https://issues.apache.org/jira/browse/CALCITE-990">CALCITE-990</a>] + In `VolcanoPlanner`, populate `RelOptRuleCall.nodeInputs` for operands of type + "any" +* [<a href="https://issues.apache.org/jira/browse/CALCITE-966">CALCITE-966</a>] + `VolcanoPlanner` now clears `ruleNames` in order to avoid rule name + conflicting error +* Factor user-defined function tests from `JdbcTest` to `UdfTest`, and classes + into `Smalls` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-974">CALCITE-974</a>] + Exception while validating `DELETE` (Yuri Au Yong) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-964">CALCITE-964</a>] + Rename `timezone` connection property to `timeZone` + +Web site and documentation + +* Avatica + * [<a href="https://issues.apache.org/jira/browse/CALCITE-1033">CALCITE-1033</a>] + Introduce Avatica protobuf documentation + * [<a href="https://issues.apache.org/jira/browse/CALCITE-1029">CALCITE-1029</a>] + Add "purpose" descriptions to Avatica JSON docs + * [<a href="https://issues.apache.org/jira/browse/CALCITE-984">CALCITE-984</a>] + Massive cleanup of Avatica JSON docs +* [<a href="https://issues.apache.org/jira/browse/CALCITE-861">CALCITE-861</a>] + Be explicit that `mvn test` needs to be invoked +* [<a href="https://issues.apache.org/jira/browse/CALCITE-997">CALCITE-997</a>] + Document keywords +* [<a href="https://issues.apache.org/jira/browse/CALCITE-979">CALCITE-979</a>] + Broken links in web site +* [<a href="https://issues.apache.org/jira/browse/CALCITE-961">CALCITE-961</a>] + Web site: Add downloads and Apache navigation links +* [<a href="https://issues.apache.org/jira/browse/CALCITE-960">CALCITE-960</a>] + Download links for pgp, md5, `KEYS` files, and direct from mirrors +* Remove embedded date-stamps from javadoc; add javadoc for test classes +* [<a href="https://issues.apache.org/jira/browse/CALCITE-965">CALCITE-965</a>] + Link to downloads page from each release news item + +## <a href="https://github.com/apache/calcite/releases/tag/calcite-1.5.0">1.5.0</a> / 2015-11-06 +{: #v1-5-0} + +Our first release as a top-level Apache project! + +Avatica has undergone major improvements, +including a new RPC layer that uses +[protocol buffers](https://developers.google.com/protocol-buffers/), +support for DML statements, better support for bind variables and +unique identifiers for connections and statements. + +There are lots of improvements to planner rules, and the logic +that replaces relational expressions with equivalent materializations. + +We continue to find more uses for +[RelBuilder]({{ site.baseurl }}/docs/algebra.html). +We now recommend that you use `RelBuilder` whenever you create +relational expressions within a planner rule; the rule can then be +re-used to create different sub-classes of relational expression, and +the builder will perform simple optimizations automatically. + +Using `RelBuilder` we built Piglet, +a subset of the classic Hadoop language +[Pig](https://pig.apache.org/). +Pig is particularly interesting because it makes heavy use of nested +multi-sets. You can follow this example to implement your own query +language, and immediately taking advantage of Calcite's back-ends and +optimizer rules. It's all just algebra, after all! + +New features + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-911">CALCITE-911</a>] + Add a variant of `CalciteSchema` that does not cache sub-objects +* [<a href="https://issues.apache.org/jira/browse/CALCITE-845">CALCITE-845</a>] + Derive `SUM`âs return type by a customizable policy (Maryann Xue) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-916">CALCITE-916</a>] + Support table function that implements `ScannableTable` + * Example table function that generates mazes and their solutions +* [<a href="https://issues.apache.org/jira/browse/CALCITE-941">CALCITE-941</a>] + Named, optional and `DEFAULT` arguments to function calls; + support named arguments when calling table functions and table macros +* [<a href="https://issues.apache.org/jira/browse/CALCITE-910">CALCITE-910</a>] + Improve handling of `ARRAY`, `MULTISET`, `STRUCT` types +* [<a href="https://issues.apache.org/jira/browse/CALCITE-879">CALCITE-879</a>] + `COLLECT` aggregate function +* [<a href="https://issues.apache.org/jira/browse/CALCITE-546">CALCITE-546</a>] + Allow table, column and field called '*' +* [<a href="https://issues.apache.org/jira/browse/CALCITE-893">CALCITE-893</a>] + Theta join in JDBC adapter +* Linq4j: Implement `EnumerableDefaults` methods (MiNG) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-823">CALCITE-823</a>] + Add `ALTER ... RESET` statement (Sudheesh Katkam) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-881">CALCITE-881</a>] + Allow schema.table.column references in `GROUP BY` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-852">CALCITE-852</a>] + DDL statements +* [<a href="https://issues.apache.org/jira/browse/CALCITE-851">CALCITE-851</a>] + Add original SQL string as a field in the parser +* [<a href="https://issues.apache.org/jira/browse/CALCITE-819">CALCITE-819</a>] + Add `RelRoot`, a contract for the result of a relational expression + +Avatica features and bug fixes + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-951">CALCITE-951</a>] + Print the server-side stack in the local exception (Josh Elser) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-936">CALCITE-936</a>] + Make HttpServer configurable (Navis Ryu) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-903">CALCITE-903</a>] + Enable Avatica client to recover from missing server-side state (Josh Elser) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-921">CALCITE-921</a>] + Fix incorrectness when calling `getString()` on binary data (Josh Elser) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-913">CALCITE-913</a>] + Construct proper `ColumnMetaData` for arrays (Josh Elser) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-871">CALCITE-871</a>] + In `JdbcMeta`, register each statement using an id from a generator (Bruno + Dumon) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-645">CALCITE-645</a>] + Implement `AvaticaSqlException` to pass server-side exception information to + clients (Josh Elser) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-912">CALCITE-912</a>] + Add Avatica `OpenConnectionRequest` (Bruno Dumon) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-919">CALCITE-919</a>] + Avoid `setScale` on `BigDecimal` when scale is 0 (Josh Elser) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-927">CALCITE-927</a>] + Call finagle for all calls that return ResultSetResponses (Josh Elser) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-705">CALCITE-705</a>] + DML in Avatica, and split `Execute` out from `Fetch` request (Yeong Wei) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-914">CALCITE-914</a>] + Add `JsonSubType` for `ExecuteResponse`, and fix JSON docs (Josh Elser) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-905">CALCITE-905</a>] + `getTables` returns empty result in `JdbcMeta` (Jan Van Besien) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-906">CALCITE-906</a>] + Avatica `JdbcMeta` statement IDs are not unique +* [<a href="https://issues.apache.org/jira/browse/CALCITE-866">CALCITE-866</a>] + Break out Avatica documentation and add JSON reference (Josh Elser) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-843">CALCITE-843</a>] + `AvaticaConnection.getAutoCommit` throws `NullPointerException` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-840">CALCITE-840</a>] + Protocol buffer serialization over HTTP for Avatica Server (Josh Elser) + +Materializations + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-952">CALCITE-952</a>] + Organize applicable materializations in reversed topological order (Maryann + Xue) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-890">CALCITE-890</a>] + Register all combinations of materialization substitutions (Maryann Xue) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-891">CALCITE-891</a>] + When substituting materializations, match `TableScan` without `Project` + (Maryann Xue) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-890">CALCITE-890</a>] + Register all combinations of materialization substitutions (Maryann Xue) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-925">CALCITE-925</a>] + Match materialized views when predicates contain strings and ranges (Amogh + Margoor) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-793">CALCITE-793</a>] + Planner requires unnecessary collation when using materialized view (Maryann + Xue) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-825">CALCITE-825</a>] + Allow user to specify sort order of an `ArrayTable` + +Planner rules + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-953">CALCITE-953</a>] + Improve `RelMdPredicates` to deal with `RexLiteral` (Pengcheng Xiong) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-939">CALCITE-939</a>] + Variant of `SortUnionTransposeRule` for order-preserving `Union` + (Maryann Xue) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-931">CALCITE-931</a>] + Wrong collation trait in `SortJoinTransposeRule` for right joins + (Maryann Xue) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-938">CALCITE-938</a>] + More accurate rowCount for `Aggregate` applied to already unique keys + (Maryann Xue) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-935">CALCITE-935</a>] + Improve how `ReduceExpressionsRule` handles duplicate constraints (Pengcheng + Xiong) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-922">CALCITE-922</a>] + Extract value of an `INTERVAL` literal (Hsuan-Yi Chu) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-889">CALCITE-889</a>] + Implement `SortUnionTransposeRule` (Pengcheng Xiong) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-909">CALCITE-909</a>] + Make `ReduceExpressionsRule` extensible +* [<a href="https://issues.apache.org/jira/browse/CALCITE-856">CALCITE-856</a>] + Make more rules extensible +* [<a href="https://issues.apache.org/jira/browse/CALCITE-902">CALCITE-902</a>] + Match nullability when reducing expressions in a `Project` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-895">CALCITE-895</a>] + Simplify "(`CASE` ... `END`) = constant" inside `AND` or `OR` (Hsuan-Yi Chu) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-828">CALCITE-828</a>] + Use RelBuilder in rules rather than type-specific RelNode factories +* [<a href="https://issues.apache.org/jira/browse/CALCITE-892">CALCITE-892</a>] + Implement `SortJoinTransposeRule` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-876">CALCITE-876</a>] + After pushing `LogicalProject` past `LogicalWindow`, adjust references to + constants properly (Hsuan-Yi Chu) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-844">CALCITE-844</a>] + Push `Project` through `Window` (Hsuan-Yi Chu) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-841">CALCITE-841</a>] + Redundant windows when window function arguments are expressions (Hsuan-Yi + Chu) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-846">CALCITE-846</a>] + Push `Aggregate` with `Filter` through `Union(all)` + +RelBuilder and Piglet + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-933">CALCITE-933</a>] + `RelBuilder.scan()` now gives a nice exception if the table does not exist + (Andy Grove) +* Fix Piglet `DUMP` applied to multisets and structs +* Multisets and `COLLECT` in Piglet +* [<a href="https://issues.apache.org/jira/browse/CALCITE-785">CALCITE-785</a>] + Add "Piglet", a subset of Pig Latin on top of Calcite algebra +* [<a href="https://issues.apache.org/jira/browse/CALCITE-869">CALCITE-869</a>] + Add `VALUES` command to Piglet +* [<a href="https://issues.apache.org/jira/browse/CALCITE-868">CALCITE-868</a>] + Add API to execute queries expressed as `RelNode` +* In RelBuilder, build expressions by table alias + +Bug fixes, API changes and minor enhancements + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-948">CALCITE-948</a>] + Indicator columns not preserved by `RelFieldTrimmer` +* Fix Windows issues (line endings and checkstyle suppressions) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-937">CALCITE-937</a>] + User-defined function within view +* [<a href="https://issues.apache.org/jira/browse/CALCITE-926">CALCITE-926</a>] + Rules fail to match because of missing link to parent equivalence set + (Maryann Xue) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-908">CALCITE-908</a>] + Bump protobuf to 3.0.0-beta-1, fix deprecations and update docs (Josh Elser) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-932">CALCITE-932</a>] + Fix muddled columns when `RelFieldTrimmer` is applied to `Aggregate` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-930">CALCITE-930</a>] + Now Calcite is a top-level project, remove references to "incubating" +* [<a href="https://issues.apache.org/jira/browse/CALCITE-929">CALCITE-929</a>] + Calls to `AbstractRelNode` may result in NPE +* [<a href="https://issues.apache.org/jira/browse/CALCITE-923">CALCITE-923</a>] + Type mismatch when converting `LEFT JOIN` to `INNER` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-666">CALCITE-666</a>] + Anti-semi-joins against JDBC adapter give wrong results (Yeong Wei) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-918">CALCITE-918</a>] + `createProject` in `RelOptUtil` should uniquify field names +* [<a href="https://issues.apache.org/jira/browse/CALCITE-792">CALCITE-792</a>] + Obsolete `RelNode.isKey` and `isDistinct` methods +* Allow FlatLists of different length to be compared +* [<a href="https://issues.apache.org/jira/browse/CALCITE-898">CALCITE-898</a>] + Type of 'Java<Long> * `INTEGER`' should be `BIGINT` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-894">CALCITE-894</a>] + Do not generate redundant column alias for the left relation when + translating `IN` subquery (Maryann Xue) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-897">CALCITE-897</a>] + Enable debugging using "-Dcalcite.debug" +* [<a href="https://issues.apache.org/jira/browse/CALCITE-885">CALCITE-885</a>] + Add Oracle test environment +* [<a href="https://issues.apache.org/jira/browse/CALCITE-888">CALCITE-888</a>] + Overlay window loses `PARTITION BY` list (Hsuan-Yi Chu) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-886">CALCITE-886</a>] + System functions in `GROUP BY` clause +* [<a href="https://issues.apache.org/jira/browse/CALCITE-860">CALCITE-860</a>] + Correct LICENSE file for generated web site +* [<a href="https://issues.apache.org/jira/browse/CALCITE-882">CALCITE-882</a>] + Allow web site to be deployed not as the root directory of the web server + (Josh Elser) +* Upgrade parent POM to apache-17 +* [<a href="https://issues.apache.org/jira/browse/CALCITE-687">CALCITE-687</a>] + Synchronize HSQLDB at a coarse level using a Lock (Josh Elser) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-870">CALCITE-870</a>] + Remove copyright content from archers.json +* Replace `Stack` with `ArrayDeque` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-874">CALCITE-874</a>] + `ReflectiveRelMetadataProvider` is not thread-safe +* Add `LogicalWindow.create()` +* Add `ImmutableBitSet.get(int, int)` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-865">CALCITE-865</a>] + Unknown table type causes `NullPointerException` in `JdbcSchema` + * Add table types used by Oracle and DB2 +* [<a href="https://issues.apache.org/jira/browse/CALCITE-862">CALCITE-862</a>] + `JdbcSchema` gives `NullPointerException` on non-standard column type (Marc + Prud'hommeaux) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-847">CALCITE-847</a>] + `AVG` window function in `GROUP BY` gives `AssertionError` (Hsuan-Yi Chu) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-827">CALCITE-827</a>] + Calcite incorrectly permutes columns of `OVER` query (Hsuan-Yi Chu) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-809">CALCITE-809</a>] + `TableScan` does not support large/infinite scans (Jesse Yates) +* Lazily create exception only when it needs to be thrown (Marc Prud'hommeaux) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-812">CALCITE-812</a>] + Make JSON reader and writer use properly quoted key names (Marc + Prud'hommeaux) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-820">CALCITE-820</a>] + Validate that window functions have `OVER` clause (Hsuan-Yi Chu) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-824">CALCITE-824</a>] + Type inference when converting `IN` clause to semijoin (Josh Wills) + + +## <a href="https://github.com/apache/calcite/releases/tag/calcite-1.4.0-incubating">1.4.0-incubating</a> / 2015-09-02 +{: #v1-4-0} + +In addition to a large number of bug fixes and minor enhancements, +this release includes improvements to lattices and materialized views, +and adds a builder API so that you can easily create relational +algebra expressions. + +New features + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-748">CALCITE-748</a>] + Add `RelBuilder`, builder for expressions in relational algebra +* [<a href="https://issues.apache.org/jira/browse/CALCITE-758">CALCITE-758</a>] + Use more than one lattice in the same query (Rajat Venkatesh) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-761">CALCITE-761</a>] + Pre-populated materializations (Maryann Xue) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-786">CALCITE-786</a>] + Detect if materialized view can be used to rewrite a query in + non-trivial cases (Amogh Margoor) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-732">CALCITE-732</a>] + Implement multiple distinct-`COUNT` using `GROUPING SETS` +* Add various `BitSet` and `ImmutableBitSet` utilities + +Website updates + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-810">CALCITE-810</a>] + Add committers' organizations to the web site +* Add news item (XLDB best lighting talk), and some talks +* Fix javadoc links +* Add license notice for web site +* Wrap file header in HTML comments +* How to release +* Move disclaimer out of every page's footer and into home page and downloads + page +* For web site files, add license headers where possible, apache-rat + exclusions otherwise +* Calcite DOAP +* [<a href="https://issues.apache.org/jira/browse/CALCITE-355">CALCITE-355</a>] + Web site + +Bug fixes, API changes and minor enhancements + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-741">CALCITE-741</a>] + Ensure that the source release's `DEPENDENCIES` file includes all module + dependencies +* [<a href="https://issues.apache.org/jira/browse/CALCITE-743">CALCITE-743</a>] + Ensure only a single source assembly is executed +* [<a href="https://issues.apache.org/jira/browse/CALCITE-850">CALCITE-850</a>] + Remove push down expressions from `FilterJoinRule` and create a new rule + for it +* [<a href="https://issues.apache.org/jira/browse/CALCITE-834">CALCITE-834</a>] + `StackOverflowError` getting predicates from the metadata provider +* [<a href="https://issues.apache.org/jira/browse/CALCITE-833">CALCITE-833</a>] + `RelOptUtil.splitJoinCondition` incorrectly splits a join condition + (Hsuan-Yi Chu) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-822">CALCITE-822</a>] + Add a unit test case to test collation of `LogicalAggregate` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-822">CALCITE-822</a>] + Revert incorrect `LogicalAggregate` collation inferring logic made in + [<a href="https://issues.apache.org/jira/browse/CALCITE-783">CALCITE-783</a>] + (Milinda Pathirage) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-826">CALCITE-826</a>] + Use `ProjectFactory` in `AggregateJoinTranposeRule` and `FilterJoinRule` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-821">CALCITE-821</a>] + `Frameworks` gives NPE when `FrameworkConfig` has no default schema +* [<a href="https://issues.apache.org/jira/browse/CALCITE-811">CALCITE-811</a>] + Extend `JoinProjectTransposeRule` with option to support outer joins +* [<a href="https://issues.apache.org/jira/browse/CALCITE-805">CALCITE-805</a>] + Add support for using an alternative grammar specification for left and + right curly braces. Additionally, add support for including addition token + manager declarations +* [<a href="https://issues.apache.org/jira/browse/CALCITE-803">CALCITE-803</a>] + Add `MYSQL_ANSI` Lexing policy +* [<a href="https://issues.apache.org/jira/browse/CALCITE-717">CALCITE-717</a>] + Compare BINARY and VARBINARY on unsigned byte values (Low Chin Wei) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-814">CALCITE-814</a>] + `RexBuilder` reverses precision and scale of `DECIMAL` literal +* [<a href="https://issues.apache.org/jira/browse/CALCITE-813">CALCITE-813</a>] + Upgrade `updateCount`, `maxRows` from int to long +* [<a href="https://issues.apache.org/jira/browse/CALCITE-714">CALCITE-714</a>] + When de-correlating, push join condition into subquery +* [<a href="https://issues.apache.org/jira/browse/CALCITE-751">CALCITE-751</a>] + Push aggregate with aggregate functions through join +* Add `RelBuilder.avg` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-806">CALCITE-806</a>] + `ROW_NUMBER` should emit distinct values +* Document JSON model, making javadoc consistent with the model reference +* [<a href="https://issues.apache.org/jira/browse/CALCITE-808">CALCITE-808</a>] + Optimize `ProjectMergeRule` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-791">CALCITE-791</a>] + Optimize `RelOptUtil.pushFilterPastProject` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-783">CALCITE-783</a>] + Infer collation of `Project` using monotonicity (Milinda Pathirage) +* Change the argument types of `SqlOperator.getMonotonicity` to allow it to be + used for `RexNode` as well as `SqlNode` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-800">CALCITE-800</a>] + Window function defined within another window function should be invalid + (Hsuan-Yi Chu) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-787">CALCITE-787</a>] + Star table wrongly assigned to materialized view (Amogh Margoor) +* Remove duplicate resources from XML test reference files +* [<a href="https://issues.apache.org/jira/browse/CALCITE-795">CALCITE-795</a>] + Loss of precision when sending a decimal number via the remote JSON + service (Lukáš Lalinský) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-774">CALCITE-774</a>] + When `GROUP BY` is present, ensure that window function operands only + refer to grouping keys (Hsuan-Yi Chu) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-799">CALCITE-799</a>] + Incorrect result for `HAVING count(*) > 1` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-801">CALCITE-801</a>] + `NullPointerException` using `USING` on table alias with column aliases +* [<a href="https://issues.apache.org/jira/browse/CALCITE-390">CALCITE-390</a>] + Infer predicates for semi-join +* [<a href="https://issues.apache.org/jira/browse/CALCITE-789">CALCITE-789</a>] + `MetaImpl.MetaCatalog` should expose `TABLE_CAT` instead of + `TABLE_CATALOG` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-752">CALCITE-752</a>] + Add back sqlline as a dependency to csv example +* [<a href="https://issues.apache.org/jira/browse/CALCITE-780">CALCITE-780</a>] + HTTP error 413 when sending a long string to the Avatica server +* In `RelBuilder`, calling `sort` then `limit` has same effect as calling + `sortLimit` +* Add `Ord.reverse` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-788">CALCITE-788</a>] + Allow `EnumerableJoin` to be sub-classed (Li Yang) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-280">CALCITE-280</a>] + `BigDecimal` underflow (Li Yang) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-763">CALCITE-763</a>] + Missing translation from `Sort` to `MutableSort` (Maryann Xue) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-770">CALCITE-770</a>] + Ignore window aggregates and ranking functions when finding aggregate + functions +* [<a href="https://issues.apache.org/jira/browse/CALCITE-765">CALCITE-765</a>] + Set `Content-Type` from the RPC server to `application/json` (Lukáš Lalinský) +* Fix Windows line-endings in `RelBuilderTest` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-727">CALCITE-727</a>] + Constant folding involving `CASE` and `NULL` +* Related to + [<a href="https://issues.apache.org/jira/browse/CALCITE-758">CALCITE-758</a>], + speed up matching by not considering tiles separately from other + materialized views +* Test case and workaround for + [<a href="https://issues.apache.org/jira/browse/CALCITE-760">CALCITE-760</a>] + `Aggregate` recommender blows up if row count estimate is too high +* [<a href="https://issues.apache.org/jira/browse/CALCITE-753">CALCITE-753</a>] + `Aggregate` operators may derive row types with duplicate column names +* [<a href="https://issues.apache.org/jira/browse/CALCITE-457">CALCITE-457</a>] + Push condition of non-ansi join into join operator +* Change jsonRequest encoding to UTF-8 (Guitao Ding) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-757">CALCITE-757</a>] + Fix expansion of view of another view (Venki Korukanti) +* Fix coverity warnings +* Remove deprecated `SqlTypeName` methods +* [<a href="https://issues.apache.org/jira/browse/CALCITE-754">CALCITE-754</a>] + Validator error when resolving `OVER` clause of `JOIN` query +* [<a href="https://issues.apache.org/jira/browse/CALCITE-429">CALCITE-429</a>] + Cardinality provider for use by lattice algorithm +* [<a href="https://issues.apache.org/jira/browse/CALCITE-740">CALCITE-740</a>] + Redundant `WHERE` clause causes wrong result in MongoDB adapter +* [<a href="https://issues.apache.org/jira/browse/CALCITE-665">CALCITE-665</a>] + `ClassCastException` in MongoDB adapter +* Separate `TableFactory` from suggested table name, so one `TableFactory` can be + used for several tables +* [<a href="https://issues.apache.org/jira/browse/CALCITE-749">CALCITE-749</a>] + Add `MaterializationService.TableFactory` (Rajat Venkatesh) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-718">CALCITE-718</a>] + Enable fetch to work for `Statement.execute()` for Avatica (Xavier Leong) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-712">CALCITE-712</a>] + Obey `setMaxRows` for statement execute (Xavier Leong) +* Add `LoggingLocalJsonService`, to make it easier to test that JDBC requests + cause the right RPCs +* [<a href="https://issues.apache.org/jira/browse/CALCITE-708">CALCITE-708</a>] + Implement `DatabaseMetaData.getTypeInfo` (Xavier Leong) +* Enable Travis CI on new-master branch and bug-fix branches named + "NNN-description" +* Clean up +* Upgrade tpcds +* Make `JdbcTest.testVersion` more permissive, so that `version.major` and + `version.minor` can be set just before a release, rather than just after as at + present + +## <a href="https://github.com/apache/calcite/releases/tag/calcite-1.3.0-incubating">1.3.0-incubating</a> / 2015-05-30 +{: #v1-3-0} + +Mainly bug-fixes, but this release adds support for +<a href="https://issues.apache.org/jira/browse/CALCITE-505">modifiable views</a> +and +<a href="https://issues.apache.org/jira/browse/CALCITE-704">filtered aggregate functions</a> +and various improvements to Avatica. + +New features + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-505">CALCITE-505</a>] + Support modifiable view +* [<a href="https://issues.apache.org/jira/browse/CALCITE-704">CALCITE-704</a>] + `FILTER` clause for aggregate functions +* [<a href="https://issues.apache.org/jira/browse/CALCITE-522">CALCITE-522</a>] + In remote JDBC driver, transmit static database properties as a map +* [<a href="https://issues.apache.org/jira/browse/CALCITE-661">CALCITE-661</a>] + Remote fetch in Calcite JDBC driver +* Support Date, Time, Timestamp parameters + +API changes + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-722">CALCITE-722</a>] + Rename markdown files to lower-case +* [<a href="https://issues.apache.org/jira/browse/CALCITE-697">CALCITE-697</a>] + Obsolete class `RelOptQuery` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-693">CALCITE-693</a>] + Allow clients to control creation of `RelOptCluster` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-691">CALCITE-691</a>] + Allow projects to supply alternate SQL parser +* [<a href="https://issues.apache.org/jira/browse/CALCITE-675">CALCITE-675</a>] + Enable `AggregateProjectMergeRule` in standard rule set +* [<a href="https://issues.apache.org/jira/browse/CALCITE-679">CALCITE-679</a>] + Factory method for `SemiJoin` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-674">CALCITE-674</a>] + Add a `SWAP_OUTER` static instance to `JoinCommuteRule` (Maryann Xue) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-735">CALCITE-735</a>] + `Primitive.DOUBLE.min` should be large and negative + +Bug-fixes and internal changes + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-688">CALCITE-688</a>] + `splitCondition` does not behave correctly when one side of the condition + references columns from different inputs +* [<a href="https://issues.apache.org/jira/browse/CALCITE-259">CALCITE-259</a>] + Using sub-queries in `CASE` statement against JDBC tables generates invalid + Oracle SQL (Yeong Wei) +* In sample code in README.md, rename optiq to calcite (Ethan) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-720">CALCITE-720</a>] + `VolcanoPlanner.ambitious` comment doc is inconsistent (Santiago M. Mola) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-729">CALCITE-729</a>] + `IndexOutOfBoundsException` in `ROLLUP` query on JDBC data source +* [<a href="https://issues.apache.org/jira/browse/CALCITE-733">CALCITE-733</a>] + Multiple distinct-`COUNT` query gives wrong results +* [<a href="https://issues.apache.org/jira/browse/CALCITE-730">CALCITE-730</a>] + `ClassCastException` in table from `CloneSchema` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-728">CALCITE-728</a>] + Test suite hangs on Windows +* [<a href="https://issues.apache.org/jira/browse/CALCITE-723">CALCITE-723</a>] + Document lattices +* [<a href="https://issues.apache.org/jira/browse/CALCITE-515">CALCITE-515</a>] + Add Apache headers to markdown files +* Upgrade quidem +* [<a href="https://issues.apache.org/jira/browse/CALCITE-716">CALCITE-716</a>] + Scalar sub-query and aggregate function in `SELECT` or `HAVING` clause gives + `AssertionError` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-694">CALCITE-694</a>] + Scan `HAVING` clause for sub-queries and `IN`-lists (Hsuan-Yi Chu) +* Upgrade hydromatic-resource-maven-plugin +* [<a href="https://issues.apache.org/jira/browse/CALCITE-710">CALCITE-710</a>] + Identical conditions in the `WHERE` clause cause `AssertionError` (Sean + Hsuan-Yi Chu) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-695">CALCITE-695</a>] + Do not add `SINGLE_VALUE` aggregate function to a sub-query that will never + return more than one row (Hsuan-Yi Chu) +* Add tests for scalar sub-queries, including test cases for + [<a href="https://issues.apache.org/jira/browse/CALCITE-709">CALCITE-709</a>] + Errors with `LIMIT` inside scalar sub-query +* [<a href="https://issues.apache.org/jira/browse/CALCITE-702">CALCITE-702</a>] + Add validator test for monotonic expressions +* [<a href="https://issues.apache.org/jira/browse/CALCITE-699">CALCITE-699</a>] + In Avatica, synchronize access to Calendar +* [<a href="https://issues.apache.org/jira/browse/CALCITE-700">CALCITE-700</a>] + Pass time zone into tests +* [<a href="https://issues.apache.org/jira/browse/CALCITE-698">CALCITE-698</a>] + For `GROUP BY ()`, `areColumnsUnique()` should return true for any key +* Disable tests that fail under JDK 1.7 due to + [<a href="https://issues.apache.org/jira/browse/CALCITE-687">CALCITE-687</a>] +* Add "getting started" to HOWTO +* [<a href="https://issues.apache.org/jira/browse/CALCITE-692">CALCITE-692</a>] + Add back sqlline as a dependency +* [<a href="https://issues.apache.org/jira/browse/CALCITE-677">CALCITE-677</a>] + `RemoteDriverTest.testTypeHandling` fails east of Greenwich +* Disable test for + [<a href="https://issues.apache.org/jira/browse/CALCITE-687">CALCITE-687</a>] + Make `RemoteDriverTest.testStatementLifecycle` thread-safe +* [<a href="https://issues.apache.org/jira/browse/CALCITE-686">CALCITE-686</a>] + `SqlNode.unparse` produces invalid SQL +* [<a href="https://issues.apache.org/jira/browse/CALCITE-507">CALCITE-507</a>] + Update HOWTO.md with running integration tests +* Add H2 integration test +* Add PostgreSQL integration test +* [<a href="https://issues.apache.org/jira/browse/CALCITE-590">CALCITE-590</a>] + Update MongoDB test suite to calcite-test-dataset +* Add `CalciteAssert.assertArrayEqual` for more user-friendly asserts +* [<a href="https://issues.apache.org/jira/browse/CALCITE-585">CALCITE-585</a>] + Avatica JDBC methods should throw `SQLFeatureNotSupportedException` (Ng Jiunn + Jye) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-671">CALCITE-671</a>] + `ByteString` does not deserialize properly as a `FetchRequest` parameter value +* [<a href="https://issues.apache.org/jira/browse/CALCITE-676">CALCITE-676</a>] + `AssertionError` in `GROUPING SETS` query +* [<a href="https://issues.apache.org/jira/browse/CALCITE-678">CALCITE-678</a>] + `SemiJoinRule` mixes up fields when `Aggregate.groupSet` is not field #0 + +## <a href="https://github.com/apache/calcite/releases/tag/calcite-1.2.0-incubating">1.2.0-incubating</a> / 2015-04-07 +{: #v1-2-0} + +A short release, less than a month after 1.1. + +There have been many changes to Avatica, hugely improving its coverage of the +JDBC API and overall robustness. A new provider, `JdbcMeta`, allows +you to remote an existing JDBC driver. + +[<a href="https://issues.apache.org/jira/browse/CALCITE-606">CALCITE-606</a>] +improves how the planner propagates traits such as collation and +distribution among relational expressions. + +[<a href="https://issues.apache.org/jira/browse/CALCITE-613">CALCITE-613</a>] +and [<a href="https://issues.apache.org/jira/browse/CALCITE-307">CALCITE-307</a>] +improve implicit and explicit conversions in SQL. + +New features + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-366">CALCITE-366</a>] + Support Aggregate push down in bushy joins (Jesus Camacho Rodriguez) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-613">CALCITE-613</a>] + Implicitly convert character values in comparisons +* [<a href="https://issues.apache.org/jira/browse/CALCITE-307">CALCITE-307</a>] + Implement `CAST` between date-time types +* [<a href="https://issues.apache.org/jira/browse/CALCITE-634">CALCITE-634</a>] + Allow `ORDER BY` aggregate function in `SELECT DISTINCT`, provided that it + occurs in `SELECT` clause (Sean Hsuan-Yi Chu) +* In linq4j, implement `firstOrDefault`, `single`, and `singleOrDefault` methods + (Daniel Cooper) +* JDBC adapter + * [<a href="https://issues.apache.org/jira/browse/CALCITE-631">CALCITE-631</a>] + Push theta joins down to JDBC adapter (Ng Jiunn Jye) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-657">CALCITE-657</a>] + `NullPointerException` when executing `JdbcAggregate.implement` + method (Yuri Au Yong) +* Metadata + * [<a href="https://issues.apache.org/jira/browse/CALCITE-659">CALCITE-659</a>] + Missing types in `averageTypeValueSize` method in `RelMdSize` + (Jesus Camacho Rodriguez) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-650">CALCITE-650</a>] + Add metadata for average size of a tuple in `SemiJoin` (Jesus + Camacho Rodriguez) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-649">CALCITE-649</a>] + Extend `splitCondition` method in `RelOptUtil` to handle multiple + joins on the same key (Jesus Camacho Rodriguez) + +Avatica features and bug fixes + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-670">CALCITE-670</a>] + `AvaticaPreparedStatement` should support `execute()` and + `executeUpdate()` (Nick Dimiduk) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-641">CALCITE-641</a>] + Implement logging throughout Avatica server (Nick Dimiduk) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-646">CALCITE-646</a>] + `AvaticaStatement.execute` method broken over remote JDBC (Yeong Wei + and Julian Hyde) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-660">CALCITE-660</a>] + Improve Avatica date support +* [<a href="https://issues.apache.org/jira/browse/CALCITE-655">CALCITE-655</a>] + Implement `ConnectionSync` RPC (Nick Dimiduk) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-654">CALCITE-654</a>] + Tighten up `AvaticaStatement.execute` semantics (Nick Dimiduk) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-658">CALCITE-658</a>] + Cleanup dependency usage (Nick Dimiduk) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-652">CALCITE-652</a>] + Move server pieces of `avatica` into `avatica-server` (Nick Dimiduk) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-651">CALCITE-651</a>] + In `JdbcMeta`, convert property definitions to an enum (Nick Dimiduk) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-640">CALCITE-640</a>] + Avatica server should expire stale connections/statements (Nick Dimiduk) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-639">CALCITE-639</a>] + Open up permissions on avatica server components (Nick Dimiduk) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-637">CALCITE-637</a>] + Implement Avatica `CloseConnection` RPC (Nick Dimiduk) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-636">CALCITE-636</a>] + Connection isolation for Avatica clients (Nick Dimiduk) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-626">CALCITE-626</a>] + Implement `CloseStatement` RPC (Nick Dimiduk) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-630">CALCITE-630</a>] + Flesh out `AvaticaParameter.setObject` (Nick Dimiduk) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-627">CALCITE-627</a>] + Add Avatica support for `getTableTypes`, `getColumns` (Xavier FH Leong) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-618">CALCITE-618</a>] + Add Avatica support for `getTables` (Julian Hyde and Nick Dimiduk) + +API changes + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-617">CALCITE-617</a>] + Check at initialization time in `CachingInvocationHandler` that MD provider + is not null (Jesus Camacho Rodriguez) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-638">CALCITE-638</a>] + SQL standard `REAL` is 4 bytes, `FLOAT` is 8 bytes + +Bug-fixes and internal changes + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-672">CALCITE-672</a>] + SQL `ANY` type should be nullable (Jinfeng Ni) +* Disable tests, pending + [<a href="https://issues.apache.org/jira/browse/CALCITE-673">CALCITE-673</a>] + Timeout executing joins against MySQL +* Fix traits in MongoDB adapter, and `NullPointerException` in `JdbcTest` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-662">CALCITE-662</a>] + Query validation fails when an `ORDER BY` clause is used with `WITH CLAUSE` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-606">CALCITE-606</a>] + Fix trait propagation and add test case +* Remove checkstyle Eclipse properties from git tracking +* [<a href="https://issues.apache.org/jira/browse/CALCITE-644">CALCITE-644</a>] + Increase check style line limit to 100 chars (Nick Dimiduk) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-648">CALCITE-648</a>] + Update `ProjectMergeRule` description for new naming convention (Jinfeng Ni) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-625">CALCITE-625</a>] + `README.md` linking to the wrong page of `optiq-csv` (hongbin ma) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-632">CALCITE-632</a>] + Sort order returned by `SUPERCLASS_COMPARATOR` in + `ReflectiveRelMetadataProvider` is inconsistent (Jesus Camacho + Rodriguez) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-335">CALCITE-335</a>] + Remove uses of linq4j `Functions.adapt` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-592">CALCITE-592</a>] + Upgrade to Guava 14.0.1 +* [<a href="https://issues.apache.org/jira/browse/CALCITE-596">CALCITE-596</a>] + JDBC adapter incorrectly reads null values as 0 (Ng Jiunn Jye) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-633">CALCITE-633</a>] + `WITH ... ORDER BY` cannot find table +* [<a href="https://issues.apache.org/jira/browse/CALCITE-614">CALCITE-614</a>] + `IN` clause in `CASE` in `GROUP BY` gives `AssertionError` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-619">CALCITE-619</a>] + Slim down dependencies in parent POM + +## <a href="https://github.com/apache/calcite/releases/tag/calcite-1.1.0-incubating">1.1.0-incubating</a> / 2015-03-13 +{: #v1-1-0} + +This Calcite release makes it possible to exploit physical properties +of relational expressions to produce more efficient plans, introducing +collation and distribution as traits, `Exchange` relational operator, +and several new forms of metadata. + +We add experimental support for streaming SQL. + +This release drops support for JDK 1.6; Calcite now requires 1.7 or +later. + +We have introduced static `create` methods for many sub-classes of +`RelNode`. We strongly suggest that you use these rather than +calling constructors directly. + +New features + +* SQL + * [<a href="https://issues.apache.org/jira/browse/CALCITE-602">CALCITE-602</a>] + Streaming queries (experimental) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-588">CALCITE-588</a>] + Allow `TableMacro` to consume maps and collections + * [<a href="https://issues.apache.org/jira/browse/CALCITE-583">CALCITE-583</a>] + Operator `||` mishandles `ANY` type (Sean Hsuan-Yi Chu) +* Planner rule improvements + * [<a href="https://issues.apache.org/jira/browse/CALCITE-445">CALCITE-445</a>] + Pull up filters rejected by a `ProjectableFilterableTable` + * [<a href="https://issues.apache.org/jira/browse/CALCITE-600">CALCITE-600</a>] + Use `SetOpFactory` in rules containing `Union` operator (Jesus + Camacho Rodriguez) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-603">CALCITE-603</a>] + Metadata providers for size, memory, parallelism + * [<a href="https://issues.apache.org/jira/browse/CALCITE-607">CALCITE-607</a>] + Change visibility of constructor in metadata providers for size, + memory, parallelism (Jesus Camacho Rodriguez) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-608">CALCITE-608</a>] + Exception is thrown when `RelMdDistribution` for `Project` + operator is called (Jesus Camacho Rodriguez) +* Collation and distribution as traits + * [<a href="https://issues.apache.org/jira/browse/CALCITE-88">CALCITE-88</a>] + Add collation as a trait and a kind of `RelNode` metadata + * [<a href="https://issues.apache.org/jira/browse/CALCITE-569">CALCITE-569</a>] + `ArrayIndexOutOfBoundsException` when deducing collation (Aman Sinha) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-581">CALCITE-581</a>] + Add `LogicalSort` relational expression, and make `Sort` abstract + * [<a href="https://issues.apache.org/jira/browse/CALCITE-526">CALCITE-526</a>] + Add `EnumerableMergeJoin`, which exploits sorted inputs + * [<a href="https://issues.apache.org/jira/browse/CALCITE-71">CALCITE-71</a>] + Provide a way to declare that tables are sorted + * [<a href="https://issues.apache.org/jira/browse/CALCITE-576">CALCITE-576</a>] + Make `RelCollation` trait and `AbstractRelNode.getCollationList` consistent + * [<a href="https://issues.apache.org/jira/browse/CALCITE-254">CALCITE-254</a>] + Propagate `RelCollation` on aliased columns in `JoinRule` + * [<a href="https://issues.apache.org/jira/browse/CALCITE-569">CALCITE-569</a>] + `ArrayIndexOutOfBoundsException` when deducing collation + * [<a href="https://issues.apache.org/jira/browse/CALCITE-594">CALCITE-594</a>] + Add `RelDistribution` trait and `Exchange` relational expression + +API changes + +* Many sub-classes of `RelNode` now have a static `create` method + which automatically sets up traits such as collation and + distribution. The constructors are not marked deprecated, but we + strongly suggest that you use the `create` method if it exists. +* [<a href="https://issues.apache.org/jira/browse/CALCITE-591">CALCITE-591</a>] + Drop support for Java 1.6 (and JDBC 4.0) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-587">CALCITE-587</a>] + Upgrade `jetty-server` to 9.2.7.v20150116 and port avatica-server `HttpServer` + (Trevor Hartman) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-577">CALCITE-577</a>] + Revert temporary API changes introduced in + [<a href="https://issues.apache.org/jira/browse/CALCITE-575">CALCITE-575</a>] +* Add means to create `Context` instances by wrapping objects and by chaining + contexts +* [<a href="https://issues.apache.org/jira/browse/CALCITE-599">CALCITE-599</a>] + `EquiJoin` in wrong package (Jesus Camacho Rodriguez) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-573">CALCITE-573</a>] + Use user-given names in `RelOptUtil.createProject` and `createRename` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-572">CALCITE-572</a>] + Remove `Project.flags` (methods are deprecated, to be removed before 2.0) + +Bug-fixes and internal changes + +* Remove the `LICENSE` file of calcite-example-csv (the former + optiq-csv) and move its history into main history +* [<a href="https://issues.apache.org/jira/browse/CALCITE-615">CALCITE-615</a>] + AvaticaParameter should be Jackson serializable (Nick Dimiduk) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-612">CALCITE-612</a>] + Update AvaticaStatement to handle cancelled queries (Parth Chandra) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-605">CALCITE-605</a>] + Reduce dependency on third-party maven repositories +* [<a href="https://issues.apache.org/jira/browse/CALCITE-611">CALCITE-611</a>] + Method `setAggChildKeys` should take into account indicator columns of + `Aggregate` operator (Jesus Camacho Rodriguez) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-566">CALCITE-566</a>] + `ReduceExpressionsRule` requires planner to have an `Executor` +* Refactor `TableScanNode.create` method +* [<a href="https://issues.apache.org/jira/browse/CALCITE-593">CALCITE-593</a>] + Validator in `Frameworks` should expand identifiers (Jinfeng Ni) +* Australian time-zones changed in `tzdata2014f`, Java 1.8.0_31 +* [<a href="https://issues.apache.org/jira/browse/CALCITE-580">CALCITE-580</a>] + Average aggregation on an `Integer` column throws `ClassCastException` +* In Travis, ask Surefire to print results to screen +* [<a href="https://issues.apache.org/jira/browse/CALCITE-586">CALCITE-586</a>] + Prevent JSON serialization of `Signature.internalParameters` + +## <a href="https://github.com/apache/calcite/releases/tag/calcite-1.0.0-incubating">1.0.0-incubating</a> / 2015-01-31 +{: #v1-0-0} + +Calcite's first major release. + +Since the previous release we have re-organized the into the `org.apache.calcite` +namespace. To make migration of your code easier, we have described the +<a href="https://issues.apache.org/jira/secure/attachment/12681620/mapping.txt">mapping from old to new class names</a> +as an attachment to +[<a href="https://issues.apache.org/jira/browse/CALCITE-296">CALCITE-296</a>]. + +The release adds SQL support for `GROUPING SETS`, `EXTEND`, `UPSERT` and sequences; +a remote JDBC driver; +improvements to the planner engine and built-in planner rules; +improvements to the algorithms that implement the relational algebra, +including an interpreter that can evaluate queries without compilation; +and fixes about 30 bugs. + +New features + +* SQL + * [<a href="https://issues.apache.org/jira/browse/CALCITE-494">CALCITE-494</a>] + Support `NEXT`/`CURRENT VALUE FOR` syntax for using sequences + * [<a href="https://issues.apache.org/jira/browse/CALCITE-492">CALCITE-492</a>] + Support `UPSERT` statement in parser + * [<a href="https://issues.apache.org/jira/browse/CALCITE-493">CALCITE-493</a>] + Add `EXTEND` clause, for defining columns and their types at query/DML time + * [<a href="https://issues.apache.org/jira/browse/CALCITE-497">CALCITE-497</a>] + Support optional qualifier for column name references + * [<a href="https://issues.apache.org/jira/browse/CALCITE-356">CALCITE-356</a>] + Allow column references of the form `schema.table.column` + * [<a href="https://issues.apache.org/jira/browse/CALCITE-462">CALCITE-462</a>] + Allow table functions in `LATERAL` expression + * [<a href="https://issues.apache.org/jira/browse/CALCITE-282">CALCITE-282</a>] + Add `{fn QUARTER(date)}` function (Benoy Antony) + * Grouping sets + * [<a href="https://issues.apache.org/jira/browse/CALCITE-370">CALCITE-370</a>] + Support `GROUPING SETS`, `CUBE`, `ROLLUP` in SQL and algebra + * [<a href="https://issues.apache.org/jira/browse/CALCITE-512">CALCITE-512</a>] + Add `GROUP_ID`,`GROUPING_ID`, `GROUPING` functions +* Planner rule improvements + * [<a href="https://issues.apache.org/jira/browse/CALCITE-92">CALCITE-92</a>] + Optimize away `Project` that merely renames fields + * Detect and merge duplicate predicates `AND(x, y, x)` to `AND(x, y)` in more + circumstances + * [<a href="https://issues.apache.org/jira/browse/CALCITE-557">CALCITE-557</a>] + Speed up planning by never creating `AbstractConverter` + * [<a href="https://issues.apache.org/jira/browse/CALCITE-545">CALCITE-545</a>] + When a projected expression can only have one value, replace with that + constant + * Grouping sets + * [<a href="https://issues.apache.org/jira/browse/CALCITE-542">CALCITE-542</a>] + Support for `Aggregate` with grouping sets in `RelMdColumnOrigins` (Jesus + Camacho Rodriguez) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-533">CALCITE-533</a>] + Support for grouping sets in `FilterAggregateTransposeRule` (Jesus Camacho + Rodriguez) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-532">CALCITE-532</a>] + Support for grouping sets in `AggregateFilterTransposeRule` (Jesus Camacho + Rodriguez) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-513">CALCITE-513</a>] + Support for grouping sets in `AggregateProjectMergeRule` (Jesus Camacho + Rodriguez) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-510">CALCITE-510</a>] + Support for grouping sets in `AggregateExpandDistinctAggregatesRule` (Jesus + Camacho Rodriguez) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-502">CALCITE-502</a>] + Support for grouping sets in `AggregateUnionTransposeRule` (Jesus Camacho + Rodriguez) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-503">CALCITE-503</a>] + Tests to check rules on `Aggregate` operator without grouping sets (Jesus + Camacho Rodriguez) +* Algorithms + * [<a href="https://issues.apache.org/jira/browse/CALCITE-451">CALCITE-451</a>] + Implement theta join, inner and outer, in enumerable convention + * [<a href="https://issues.apache.org/jira/browse/CALCITE-489">CALCITE-489</a>] + Update `Correlate` mechanics and implement `EnumerableCorrelate` (aka nested + loops join) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-544">CALCITE-544</a>] + Implement `Union` in interpreter + * [<a href="https://issues.apache.org/jira/browse/CALCITE-562">CALCITE-562</a>] + Implement inner `Join` in interpreter and improve handling of scalar expressions + * [<a href="https://issues.apache.org/jira/browse/CALCITE-543">CALCITE-543</a>] + Implement `Aggregate` (including `GROUPING SETS`) in interpreter (Jacques + Nadeau) + * In progress towards + [<a href="https://issues.apache.org/jira/browse/CALCITE-558">CALCITE-558</a>] + add `BINDABLE` convention (but `ENUMERABLE` is still the default), and add + `ArrayBindable` and `Scalar` interfaces +* Remote driver + * [<a href="https://issues.apache.org/jira/browse/CALCITE-93">CALCITE-93</a>] + Calcite RPC server + * [<a href="https://issues.apache.org/jira/browse/CALCITE-94">CALCITE-94</a>] + Remote JDBC driver + * Make `JsonHandler` and `JsonService` thread-safe + +API changes + +* The great code re-org + * [<a href="https://issues.apache.org/jira/browse/CALCITE-296">CALCITE-296</a>] + Re-organize package structure + * [<a href="https://issues.apache.org/jira/browse/CALCITE-419">CALCITE-419</a>] + Naming convention for planner rules + * [<a href="https://issues.apache.org/jira/browse/CALCITE-306">CALCITE-306</a>] + Standardize code style for "import package.*;" + * [<a href="https://issues.apache.org/jira/browse/CALCITE-474">CALCITE-474</a>] + Clean up rule naming in order to support enabling/disabling rules + * [<a href="https://issues.apache.org/jira/browse/CALCITE-460">CALCITE-460</a>] + Add `ImmutableBitSet` and replace uses of `BitSet` + * [<a href="https://issues.apache.org/jira/browse/CALCITE-479">CALCITE-479</a>] + Migrate `RelNode.getChildExps` to `RelNode.accept(RexShuttle)` + * [<a href="https://issues.apache.org/jira/browse/CALCITE-527">CALCITE-527</a>] + Drop `rowType` field and constructor/copy argument of `Calc` +* Add linq4j and example-csv modules + * Remove unused packages in linq4j, and fix checkstyle issues in linq4j and csv + * Add calcite-linq4j and calcite-example-csv as POM sub-modules + * Import 'optiq-csv' project as 'example/csv/', and add Apache headers + * Import 'linq4j' project, and add Apache headers + * [<a href="https://issues.apache.org/jira/browse/CALCITE-478">CALCITE-478</a>] + Move CSV tutorial (Siva Narayanan) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-464">CALCITE-464</a>] + Make parser accept configurable max length for SQL identifier +* [<a href="https://issues.apache.org/jira/browse/CALCITE-465">CALCITE-465</a>] + Remove `OneRow` and `Empty` relational expressions; `Values` will suffice + +Bug-fixes and internal changes + +* Build improvements + * [<a href="https://issues.apache.org/jira/browse/CALCITE-541">CALCITE-541</a>] + Update maven-source-plugin to 2.4 to get speedup in jdk 1.8 + * [<a href="https://issues.apache.org/jira/browse/CALCITE-537">CALCITE-537</a>] + Skip overwrite of `NOTICE`, `DEPENDENCIES`, and `LICENSE` files + * [<a href="https://issues.apache.org/jira/browse/CALCITE-538">CALCITE-538</a>] + Generate `Parser.jj` only at first build + * [<a href="https://issues.apache.org/jira/browse/CALCITE-539">CALCITE-539</a>] + Avoid rewrite of `org-apache-calcite-jdbc.properties` + * [<a href="https://issues.apache.org/jira/browse/CALCITE-540">CALCITE-540</a>] + Create git.properties file only at first build. This saves time in + development at a cost of stale `git.properties` + * [<a href="https://issues.apache.org/jira/browse/CALCITE-536">CALCITE-536</a>] + Add `@PackageMarker` to `package-info.java` so maven-compiler skips + compilation when the sources are unchanged + * [<a href="https://issues.apache.org/jira/browse/CALCITE-535">CALCITE-535</a>] + Support skip overwrite in hydromatic-resource +* [<a href="https://issues.apache.org/jira/browse/CALCITE-582">CALCITE-582</a>] + `EnumerableTableScan` broken when table has single column +* [<a href="https://issues.apache.org/jira/browse/CALCITE-575">CALCITE-575</a>] + Variant of `ProjectRemoveRule` that considers a project trivial only if its + field names are identical (John Pullokkaran) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-571">CALCITE-571</a>] + `ReduceExpressionsRule` tries to reduce `SemiJoin` condition to non-equi + condition +* [<a href="https://issues.apache.org/jira/browse/CALCITE-568">CALCITE-568</a>] + Upgrade to a version of `pentaho-aggdesigner` that does not pull in + `servlet-api` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-567">CALCITE-567</a>] + Make `quidem` dependency have scope "test" +* [<a href="https://issues.apache.org/jira/browse/CALCITE-570">CALCITE-570</a>] + `ReduceExpressionsRule` throws "duplicate key" exception +* [<a href="https://issues.apache.org/jira/browse/CALCITE-561">CALCITE-561</a>] + Upgrade parent POM +* [<a href="https://issues.apache.org/jira/browse/CALCITE-458">CALCITE-458</a>] + ArrayIndexOutOfBoundsException when using just a single column in interpreter +* Fix spurious extra row from `FULL JOIN` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-554">CALCITE-554</a>] + Outer join over NULL keys generates wrong result +* [<a href="https://issues.apache.org/jira/browse/CALCITE-489">CALCITE-489</a>] + Teach `CalciteAssert` to respect multiple settings +* [<a href="https://issues.apache.org/jira/browse/CALCITE-516">CALCITE-516</a>] + `GROUP BY` on a `CASE` expression containing `IN` predicate fails (Aman Sinha) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-552">CALCITE-552</a>] + Upgrade tpcds (which depends on an old version of guava) +* Copy identifier when fully-qualifying, so column aliases have the right case +* [<a href="https://issues.apache.org/jira/browse/CALCITE-548">CALCITE-548</a>] + Extend `induce` method to return `CUBE` and `ROLLUP` (Jesus Camacho Rodriguez) + * Simplify `Group.induce` by assuming that group sets are sorted +* Test case for + [<a href="https://issues.apache.org/jira/browse/CALCITE-212">CALCITE-212</a>] + Join condition with `OR` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-550">CALCITE-550</a>] + Case-insensitive matching of sub-query columns fails + * Add more unit tests (Jinfeng Ni) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-448">CALCITE-448</a>] + `FilterIntoJoinRule` creates filters containing invalid `RexInputRef` +* When registering a `RelNode`, be tolerant if it is equivalent to a `RelNode` + with different traits +* [<a href="https://issues.apache.org/jira/browse/CALCITE-547">CALCITE-547</a>] + Set nullability while inferring return type of `item(any,...)` operator +* In Travis CI, enable containers, and cache `.m2` directory +* [<a href="https://issues.apache.org/jira/browse/CALCITE-534">CALCITE-534</a>] + Missing implementation of `ResultSetMetaData.getColumnClassName` (Knut + Forkalsrud) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-506">CALCITE-506</a>] + Update `EnumerableRelImplementor.stash` so it is suitable for all kinds of + classes +* Merge join algorithm for `Enumerable`s +* Efficient `Enumerable` over random-access list +* Add a test that calls all functions with arguments of all types that they + claim to accept +* [<a href="https://issues.apache.org/jira/browse/CALCITE-511">CALCITE-511</a>] + `copy` method in `LogicalAggregate` not copying the indicator value properly +* Add a model that has lattices and works against HSQLDB +* [<a href="https://issues.apache.org/jira/browse/CALCITE-509">CALCITE-509</a>] + `RelMdColumnUniqueness` uses `ImmutableBitSet.Builder` twice, gets + `NullPointerException` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-488">CALCITE-488</a>] + `Enumerable<Holder>` does not work if where `Holder` is a custom class + with a single field; Calcite tries to treat it as `SCALAR` due to premature + `JavaRowFormat.optimize` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-352">CALCITE-352</a>] + Throw exception if `ResultSet.next()` is called after `close()` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-403">CALCITE-403</a>] + `Enumerable` gives `NullPointerException` with `NOT` on nullable expression +* [<a href="https://issues.apache.org/jira/browse/CALCITE-469">CALCITE-469</a>] + Update example/csv README.md instructions +* Document `WITH`, `LATERAL`, `GROUPING SETS`, `CUBE`, `ROLLUP`; + add descriptions for all built-in functions and operators +* [<a href="https://issues.apache.org/jira/browse/CALCITE-470">CALCITE-470</a>] + Print warning when column type hint is not understood; + Update `EMPS.deptno` column Integer → int +* Fix `Linq4j.product`; the cartesian product of 0 attributes is one row of 0 + attributes +* Update link optiq-mat-plugin → mat-calcite-plugin +* [<a href="https://issues.apache.org/jira/browse/CALCITE-467">CALCITE-467</a>] + Incorrect namespace in `package-info.java` +* Add headers, to appease the RAT +* [<a href="https://issues.apache.org/jira/browse/CALCITE-446">CALCITE-446</a>] + CSV adapter should read from directory relative to the model file +* Add examples of scannable and filterable tables, matching + [<a href="https://issues.apache.org/jira/browse/CALCITE-436">CALCITE-436</a>] + Simpler SPI to query Table +* Fix `JdbcTest.testVersion` now that version is 1.0 +* Update release HOWTO + +## <a href="https://github.com/apache/calcite/releases/tag/calcite-0.9.2-incubating">0.9.2-incubating</a> / 2014-11-05 +{: #v0-9-2} + +A fairly minor release, and last release before we rename all of the +packages and lots of classes, in what we expect to call 1.0. If you +have an existing application, it's worth upgrading to this first, +before you move on to 1.0. + +New features + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-436">CALCITE-436</a>] + Simpler SPI to query `Table` + +API changes + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-447">CALCITE-447</a>] + Change semi-join rules to make use of factories +* [<a href="https://issues.apache.org/jira/browse/CALCITE-442">CALCITE-442</a> + Add `RelOptRuleOperand` constructor that takes a predicate + +Bug-fixes and internal changes + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-397">CALCITE-397</a>] + `SELECT DISTINCT *` on reflective schema gives `ClassCastException` at runtime +* Various lattice improvements. +* sqlline: Looking for class-path in inconsistent locations. +* Re-order test suite, so that fast tests are run first. +* [<a href="https://issues.apache.org/jira/browse/CALCITE-444">CALCITE-444</a>] + Filters wrongly pushed into full outer join +* Make it more convenient to unit test `RelMetadataQuery`, and add some more + tests for + [<a href="https://issues.apache.org/jira/browse/CALCITE-443">CALCITE-443</a>] +* [<a href="https://issues.apache.org/jira/browse/CALCITE-443">CALCITE-443</a>] + `getPredicates` from a Union is not correct +* Update references to web sites, git repositories, jira, mailing lists, + travis CI now that [INFRA-8413] is fixed +* [<a href="https://issues.apache.org/jira/browse/CALCITE-434">CALCITE-435</a>] + `FilterAggregateTransposeRule` loses conditions that cannot be pushed +* [<a href="https://issues.apache.org/jira/browse/CALCITE-435">CALCITE-435</a>] + `LoptOptimizeJoinRule` incorrectly re-orders outer joins +* [<a href="https://issues.apache.org/jira/browse/CALCITE-439">CALCITE-439</a>] + `SqlValidatorUtil.uniquify()` may not terminate under some conditions +* [<a href="https://issues.apache.org/jira/browse/CALCITE-438">CALCITE-438</a>] + Push predicates through `SemiJoinRel` +* Add test case for `LIKE ... ESCAPE`. +* HOWTO: Modify release instructions. +* Update `DiffRepository` documentation. +* Add tests for windowed aggregates without `ORDER BY`. (Works already.) + +## <a href="https://github.com/apache/calcite/releases/tag/calcite-0.9.1-incubating">0.9.1-incubating</a> / 2014-10-02 +{: #v0-9-1} + +This is the first release as Calcite. (The project was previously called Optiq.) + +New features + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-430">CALCITE-430</a>] + Rename project from Optiq to Calcite +* [<a href="https://issues.apache.org/jira/browse/CALCITE-426">CALCITE-426</a>] + Pool JDBC data sources, to make it easier to pool connections +* [<a href="https://issues.apache.org/jira/browse/CALCITE-416">CALCITE-416</a>] + Execute logical `RelNode`s using an interpreter +* [<a href="https://issues.apache.org/jira/browse/CALCITE-376">CALCITE-376</a>] + Move `SqlRun` into its own artifact, + <a href="https://github.com/julianhyde/quidem">Quidem</a>. +* [<a href="https://issues.apache.org/jira/browse/CALCITE-269">CALCITE-269</a>] + MongoDB result sets larger than 16MB +* [<a href="https://issues.apache.org/jira/browse/CALCITE-373">CALCITE-373</a>] + `NULL` values in `NOT IN` sub-queries +* SQL functions: + * [<a href="https://issues.apache.org/jira/browse/CALCITE-422">CALCITE-422</a>] + Add `REGR_SXX` and `REGR_SYY` regression functions + * [<a href="https://issues.apache.org/jira/browse/CALCITE-421">CALCITE-421</a>] + Add `COVAR_POP` and `COVAR_SAMP` aggregate functions +* Planner rules: + * [<a href="https://issues.apache.org/jira/browse/CALCITE-425">CALCITE-425</a>] + Add `FilterAggregateTransposeRule`, that pushes a filter through an + aggregate + * [<a href="https://issues.apache.org/jira/browse/CALCITE-399">CALCITE-399</a>] + Factorize common `AND` factors out of `OR` predicates + * [<a href="https://issues.apache.org/jira/browse/CALCITE-404">CALCITE-404</a>] + `MergeProjectRule` should not construct `RexProgram`s for simple mappings + * [<a href="https://issues.apache.org/jira/browse/CALCITE-394">CALCITE-394</a>] + Add `RexUtil.toCnf()`, to convert expressions to conjunctive normal form + (CNF) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-389">CALCITE-389</a>] + `MergeFilterRule` should flatten `AND` condition +* Lattices: + * [<a href="https://issues.apache.org/jira/browse/CALCITE-428">CALCITE-428</a>] + Use optimization algorithm to suggest which tiles of a lattice to + materialize + * [<a href="https://issues.apache.org/jira/browse/CALCITE-410">CALCITE-410</a>] + Allow lattice tiles to satisfy a query by rolling up + * [<a href="https://issues.apache.org/jira/browse/CALCITE-406">CALCITE-406</a>] + Add tile and measure elements to lattice model element + * Now, a lattice can materialize an aggregate-join and use it in a subsequent + query. + * [<a href="https://issues.apache.org/jira/browse/CALCITE-402">CALCITE-402</a>] + Lattice should create materializations on demand + * [<a href="https://issues.apache.org/jira/browse/CALCITE-344">CALCITE-344</a>] + Lattice data structure +* Field trimmer: + * [<a href="https://issues.apache.org/jira/browse/CALCITE-408">CALCITE-408</a>] + Make `FieldTrimmer` work with `RelNode` base classes + * [<a href="https://issues.apache.org/jira/browse/CALCITE-388">CALCITE-388</a>] + Handle semi-joins in field trimmer + * [<a href="https://issues.apache.org/jira/browse/CALCITE-395">CALCITE-395</a>] + Make `FieldTrimmer.trimFields(SetOp)` generate `ProjectRel` instead of + `CalcRel` + * [<a href="https://issues.apache.org/jira/browse/CALCITE-393">CALCITE-393</a>] + If no fields are projected from a table, field trimmer should project a + dummy expression + +API changes + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-413">CALCITE-413</a>] + Add `RelDataTypeSystem` plugin, allowing different max precision of a + `DECIMAL` +* In `Planner`, query de-correlation no longer requires state in a + `SqlToRelConverter`. +* Factories: + * [<a href="https://issues.apache.org/jira/browse/CALCITE-392">CALCITE-392</a>] + `RelFieldTrimmer` should use factory to create new rel nodes + * [<a href="https://issues.apache.org/jira/browse/CALCITE-382">CALCITE-382</a>] + Refactoring rules to use factories + * [<a href="https://issues.apache.org/jira/browse/CALCITE-398">CALCITE-398</a>] + Move `CalcRel.createProject` methods to `RelOptUtil` + * [<a href="https://issues.apache.org/jira/browse/CALCITE-396">CALCITE-396</a>] + Change return type of `JoinFactory.createJoin()`; add `SemiJoinFactory` + +Bug-fixes and internal changes + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-386">CALCITE-386</a>] + Fix NOTICE +* Add tests inspired by Derby bugs. +* Add recent presentation to README.md. +* [<a href="https://issues.apache.org/jira/browse/CALCITE-427">CALCITE-427</a>] + Off-by-one issues in `RemoveDistinctAggregateRule`, + `AggregateFilterTransposeRule` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-414">CALCITE-414</a>] + Bad class name in `sqlline` shell script +* Bad package name in `package-info.java` was causing errors in Eclipse. +* [<a href="https://issues.apache.org/jira/browse/CALCITE-412">CALCITE-412</a>] + `RelFieldTrimmer`: when trimming `SortRel`, the collation and trait set don't + match +* Add test case for + [<a href="https://issues.apache.org/jira/browse/CALCITE-411">CALCITE-411</a>] + Duplicate column aliases +* [<a href="https://issues.apache.org/jira/browse/CALCITE-407">CALCITE-407</a>] + `RemoveTrivialProjectRule` drops child node's traits +* [<a href="https://issues.apache.org/jira/browse/CALCITE-409">CALCITE-409</a>] + `PushFilterPastProjectRule` should not push filters past windowed aggregates +* Fix tests on Windows. +* Don't load `FoodMartQuerySet` unless we have to. It's big. +* Enable connection pooling in test suite. +* [<a href="https://issues.apache.org/jira/browse/CALCITE-384">CALCITE-384</a>] + Add `apache-` prefix to tarball and directory within tarball +* Freeze hive fmpp > freemarker plugin dependency. +* Upgrade Janino +* Removed hardcoded foodmart schema information +* [<a href="https://issues.apache.org/jira/browse/CALCITE-387">CALCITE-387</a>] + CompileException when cast TRUE to nullable boolean +* Temporary fix for + [<a href="https://issues.apache.org/jira/browse/CALCITE-390">CALCITE-390</a>] + Transitive inference (`RelMdPredicates`) doesn't handle semi-join +* [<a href="https://issues.apache.org/jira/browse/CALCITE-385">CALCITE-385</a>] + Change comment style for Java headers +* Disable test that is inconistent between JDK 1.7 and 1.8. +* Fix `git-commit-id-plugin` error when running in Travis-CI. +* [<a href="https://issues.apache.org/jira/browse/CALCITE-381">CALCITE-381</a>] + Remove plugin versions from the `<plugins>` tag in root pom +* [<a href="https://issues.apache.org/jira/browse/CALCITE-383">CALCITE-383</a>] + Each jar should have a `git.properties` file describing its exact version +* Fix `mvn site` on JDK 1.8 and enable in Travis-CI. +* Status icon based on master branch, not whichever branch happened to build + most recently. +* HOWTO: + * Document how to build from git, and how to get jars from maven repo. + * Optiq web site + * Template emails for Apache votes + * Update JIRA cases following release + * Instructions for making and verifying a release + +## <a href="https://github.com/apache/calcite/releases/tag/optiq-0.9.0-incubating">0.9.0-incubating</a> / 2014-08-19 +{: #v0-9-0} + +This is the first release under the Apache incubator process. + +New features + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-371">CALCITE-371</a>] + Implement `JOIN` whose `ON` clause contains mixed equi and theta +* [<a href="https://issues.apache.org/jira/browse/CALCITE-369">CALCITE-369</a>] + Add `EnumerableSemiJoinRel`, implementation of semi-join in enumerable + convention +* Add class `Strong`, for detecting null-rejecting predicates. +* [<a href="https://issues.apache.org/jira/browse/CALCITE-368">CALCITE-368</a>] + Add SemiJoinRule, planner rule to convert project-join-aggregate into semi-join +* [<a href="https://issues.apache.org/jira/browse/CALCITE-367">CALCITE-367</a>] + `PushFilterPastJoinRule` should strengthen join type +* Add `EquiJoinRel`, base class for joins known to be equi-joins. +* Implement `CAST(<string> AS <datetime>)` and + `<datetime> + <interval>`. +* [<a href="https://issues.apache.org/jira/browse/CALCITE-360">CALCITE-360</a>] + Introduce a rule to infer predicates from equi-join conditions +* [<a href="https://issues.apache.org/jira/browse/CALCITE-349">CALCITE-349</a>] + Add heuristic join-optimizer that can generate bushy joins +* [<a href="https://issues.apache.org/jira/browse/CALCITE-346">CALCITE-346</a>] + Add commutative join rule +* [<a href="https://issues.apache.org/jira/browse/CALCITE-347">CALCITE-347</a>] + In `SqlRun`, add `!plan` command +* [<a href="https://issues.apache.org/jira/browse/CALCITE-314">CALCITE-314</a>] + Allow simple UDFs based on methods +* [<a href="https://issues.apache.org/jira/browse/CALCITE-327">CALCITE-327</a>] + Rules should use base class to find rule match & use factory for object + creation +* [<a href="https://issues.apache.org/jira/browse/CALCITE-316">CALCITE-316</a>] + In `SqlRun`, match output regardless of order if `ORDER BY` not present +* [<a href="https://issues.apache.org/jira/browse/CALCITE-300">CALCITE-300</a>] + Support multiple parameters in `COUNT(DISTINCT x, y, ...)` + +API changes + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-343">CALCITE-343</a>] + RelDecorrelator should build its own mappings, not inherit from SqlToRelConverter +* Remove deprecated methods. +* Convert `Hook` to use Guava `Function` (was linq4j `Function1`). +* Add fluent method `withHook`, to more easily add hooks in tests. +* [<a href="https://issues.apache.org/jira/browse/CALCITE-321">CALCITE-321</a>] + Add support for overriding implementation of `CompoundIdentifier` in + `SqlParser`. +* [<a href="https://issues.apache.org/jira/browse/CALCITE-322">CALCITE-322</a>] + Add support for `SqlExplain`, `SqlOrderBy` and `SqlWith` to support + `SqlShuttle` use. +* [<a href="https://issues.apache.org/jira/browse/CALCITE-323">CALCITE-323</a>] + Override `SqlUnresolvedFunction.inferReturnType()` to return `ANY` type + so framework implementors can support late bound function implementations. +* [<a href="https://issues.apache.org/jira/browse/CALCITE-324">CALCITE-324</a>] + Add `ViewExpander` for `Planner` in `Frameworks`. Expose additional + properties of `ViewTable` to allow subclassing. +* [<a href="
<TRUNCATED>
