http://git-wip-us.apache.org/repos/asf/calcite/blob/65f2afa7/avatica/site/_docs/history.md ---------------------------------------------------------------------- diff --git a/avatica/site/_docs/history.md b/avatica/site/_docs/history.md index d46bfc8..f5e249e 100644 --- a/avatica/site/_docs/history.md +++ b/avatica/site/_docs/history.md @@ -42,2302 +42,7 @@ 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} +## Past releases -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="https://issues.apache.org/jira/browse/CALCITE-247">CALCITE-247</a>] - Add `Context` and `FrameworkConfig` - -Bug-fixes and internal changes - -* [<a href="https://issues.apache.org/jira/browse/CALCITE-380">CALCITE-380</a>] - Downgrade to Guava 11.0.2 -* Move several .md files into new 'doc' directory, to keep the root directory simple. -* Add DISCLAIMER -* Update history and HOWTO -* [<a href="https://issues.apache.org/jira/browse/CALCITE-377">CALCITE-377</a>] - UnregisteredDriver should catch, log and re-throw NoClassDefFoundError -* Inherit maven-release-plugin from Apache POM. -* Test case for - [<a href="https://issues.apache.org/jira/browse/CALCITE-373">CALCITE-373</a>] - NOT IN and NULL values -* [<a href="https://issues.apache.org/jira/browse/CALCITE-372">CALCITE-372</a>] - Change `LoptOptimizeJoinRule` & `PushFilterPast`* rules to use factory -* Upgrade `maven-checkstyle-plugin`. -* Add class `Holder`, a mutable slot that can contain one object. -* Remove the 2-minute wait at the top of the hour for tests of - `CURRENT_TIME`, etc. -* Tune `ImmutableIntList`'s iterators. -* [<a href="https://issues.apache.org/jira/browse/CALCITE-364">CALCITE-364</a>] - Validator rejects valid `WITH ... ORDER BY` query -* [<a href="https://issues.apache.org/jira/browse/CALCITE-363">CALCITE-363</a>] - Use `dependencyManagement` and `pluginManagement` in POM files -* Add `FilterFactory`. -* Add `README` file, incubation disclaimers, and how-to build and running tests. -* Add `KEYS` and start how-to for making snapshots and releases. -* Capital case component names; inherit license info
<TRUNCATED>
