Repository: calcite Updated Branches: refs/heads/branch-1.18 fcc1d2a06 -> b7725a712 (forced update)
[CALCITE-2575] Release Calcite 1.18.0 Release notes; change version numbers. Update release instructions in HOWTO. Project: http://git-wip-us.apache.org/repos/asf/calcite/repo Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/b7725a71 Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/b7725a71 Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/b7725a71 Branch: refs/heads/branch-1.18 Commit: b7725a71276e51263928f96710f451170d9f94b1 Parents: efec74d Author: Julian Hyde <jh...@apache.org> Authored: Sun Dec 2 19:58:56 2018 -0800 Committer: Julian Hyde <jh...@apache.org> Committed: Tue Dec 4 00:18:51 2018 -0800 ---------------------------------------------------------------------- README | 2 +- pom.xml | 7 +- site/_docs/history.md | 459 ++++++++++++++++++++++++++++++++++++++++++++- site/_docs/howto.md | 36 ++-- 4 files changed, 480 insertions(+), 24 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/calcite/blob/b7725a71/README ---------------------------------------------------------------------- diff --git a/README b/README index 3c34a49..71181c0 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -Apache Calcite release 1.17.0 +Apache Calcite release 1.18.0 This is a source or binary distribution of Apache Calcite. http://git-wip-us.apache.org/repos/asf/calcite/blob/b7725a71/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 727ed35..36b55ae 100644 --- a/pom.xml +++ b/pom.xml @@ -58,7 +58,7 @@ limitations under the License. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <top.dir>${project.basedir}</top.dir> <version.major>1</version.major> - <version.minor>17</version.minor> + <version.minor>18</version.minor> <!-- Don't fail the build for vulnerabilities below this threshold. --> <failBuildOnCVSS>8</failBuildOnCVSS> @@ -795,6 +795,11 @@ limitations under the License. <dependencies> <dependency> <groupId>org.apache.maven.scm</groupId> + <artifactId>maven-scm-api</artifactId> + <version>${maven-scm-provider.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.scm</groupId> <artifactId>maven-scm-provider-gitexe</artifactId> <version>${maven-scm-provider.version}</version> </dependency> http://git-wip-us.apache.org/repos/asf/calcite/blob/b7725a71/site/_docs/history.md ---------------------------------------------------------------------- diff --git a/site/_docs/history.md b/site/_docs/history.md index 1f63f78..0b4d236 100644 --- a/site/_docs/history.md +++ b/site/_docs/history.md @@ -28,16 +28,466 @@ For a full list of releases, see Downloads are available on the [downloads page]({{ site.baseurl }}/downloads/). -## <a href="https://github.com/apache/calcite/releases/tag/calcite-1.18.0">1.18.0</a> / under development +## <a href="https://github.com/apache/calcite/releases/tag/calcite-1.18.0">1.18.0</a> / 2018-12-07 {: #v1-18-0} +With over 200 commits from 36 contributors, this is the largest +Calcite release ever. To the SQL dialect, we added +<a href="https://issues.apache.org/jira/browse/CALCITE-2266">JSON +functions</a> and +<a href="https://issues.apache.org/jira/browse/CALCITE-2402">linear +regression functions</a>, the +<a href="https://issues.apache.org/jira/browse/CALCITE-2224">WITHIN +GROUP</a> clause for aggregate functions; there is a new +<a href="https://issues.apache.org/jira/browse/CALCITE-1870">utility +to recommend lattices based on past queries</a>, +and improvements to expression simplification ({{RexSimplify}}), +the SQL advisor, and the Elasticsearch and Apache Geode adapters. + Compatibility: This release is tested on Linux, macOS, Microsoft Windows; -using Oracle JDK 8, 9, 10; -Guava versions 19.0 to 23.0; +using Oracle JDK 8, 9, 10, 11 and OpenJDK 10, 11; +Guava versions 19.0 to 27.0.1-jre; Druid version 0.11.0; other software versions as specified in `pom.xml`. +#### New features + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2662">CALCITE-2662</a>] + In `Planner`, allow parsing a stream (`Reader`) instead of a `String` + (Enrico Olivelli) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2699">CALCITE-2699</a>] + `TIMESTAMPADD` function now applies to `DATE` and `TIME` as well as `TIMESTAMP` + (xuqianjin) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-563">CALCITE-563</a>] + In JDBC adapter, push bindable parameters down to the underlying JDBC data + source (Vladimir Sitnikov, Piotr Bojko) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2663">CALCITE-2663</a>] + In DDL parser, add `CREATE` and `DROP FUNCTION` (ambition119) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2266">CALCITE-2266</a>] + Implement SQL:2016 JSON functions: `JSON_EXISTS`, `JSON_VALUE`, `JSON_QUERY`, + `JSON_OBJECT`, `JSON_OBJECTAGG`, `JSON_ARRAY`, `JSON_ARRAYAGG`, `x IS JSON` + predicate (Hongze Zhang) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2224">CALCITE-2224</a>] + Support `WITHIN GROUP` clause for aggregate functions (Hongze Zhang) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2405">CALCITE-2405</a>] + In Babel parser, make 400 reserved keywords including `YEAR`, `SECOND`, `DESC` + non-reserved +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1870">CALCITE-1870</a>] + Lattice suggester +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2571">CALCITE-2571</a>] + `TRIM` function now trims more than one character (Andrew Pilloud) +* Elasticsearch adapter: + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2679">CALCITE-2679</a>] + Implement `DISTINCT` and `GROUP BY` without aggregate functions (Siyuan Liu) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2689">CALCITE-2689</a>] + Allow grouping on non-textual fields like `DATE` and `NUMBER` + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2651">CALCITE-2651</a>] + Enable scrolling for basic search queries + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2585">CALCITE-2585</a>] + Support `NOT` operator + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2578">CALCITE-2578</a>] + Support `ANY_VALUE` aggregate function + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2528">CALCITE-2528</a>] + Support `Aggregate` (Andrei Sereda) +* Apache Geode adapter: + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2709">CALCITE-2709</a>] + Allow filtering on `DATE`, `TIME`, `TIMESTAMP` fields (Sandeep Chada) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2671">CALCITE-2671</a>] + `GeodeFilter` now converts multiple `OR` predicates (on same attribute) into + a single `IN SET` (Sandeep Chada) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2498">CALCITE-2498</a>] + Geode adapter wrongly quotes `BOOLEAN` values as strings (Andrei Sereda) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2112">CALCITE-2112</a>] + Add Maven wrapper for Calcite (Ratandeep S. Ratti) +* `SqlAdvisor`: + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2479">CALCITE-2479</a>] + Automatically quote identifiers that look like SQL keywords + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2478">CALCITE-2478</a>] + Purge `from_clause` when `_suggest_` token is located in one of the + `FROM` sub-queries + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2477">CALCITE-2477</a>] + Scalar sub-queries + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2476">CALCITE-2476</a>] + Produce hints when sub-query with `*` is present in query + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2475">CALCITE-2475</a>] + Support `MINUS` + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2473">CALCITE-2473</a>] + Support `--` comments + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2434">CALCITE-2434</a>] + Hints for nested tables and schemas + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2433">CALCITE-2433</a>] + Configurable quoting characters +* `RelBuilder`: + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2661">CALCITE-2661</a>] + Add methods for creating `Exchange` and `SortExchange` + relational expressions (Chunwei Lei) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2654">CALCITE-2654</a>] + Add a fluent API for building complex aggregate calls + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2441">CALCITE-2441</a>] + `RelBuilder.scan` should expand `TranslatableTable` and views + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2647">CALCITE-2647</a>] + Add a `groupKey` method that assumes only one grouping set + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2470">CALCITE-2470</a>] + `project` method should combine expressions if the underlying + node is a `Project` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1026">CALCITE-1026</a>] + Allow models in YAML format +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2402">CALCITE-2402</a>] + Implement regression functions: `COVAR_POP`, `COVAR_SAMP`, `REGR_COUNT`, + `REGR_SXX`, `REGR_SYY` + +#### Bug-fixes, API changes and minor enhancements + +* Upgrades: + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2716">CALCITE-2716</a>] + Upgrade to Avatica 1.13.0 + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2711">CALCITE-2711</a>] + Upgrade SQLLine to 1.6.0 + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2570">CALCITE-2570</a>] + Upgrade `forbiddenapis` to 2.6 for JDK 11 support + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2486">CALCITE-2486</a>] + Upgrade Apache parent POM to version 21 + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2467">CALCITE-2467</a>] + Upgrade `owasp-dependency-check` maven plugin to 3.3.1 + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2559">CALCITE-2559</a>] + Update Checkstyle to 7.8.2 + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2497">CALCITE-2497</a>] + Update Janino version to 3.0.9 +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2596">CALCITE-2596</a>] + When translating correlated variables in enumerable convention, convert + not-null boxed primitive values to primitive (Stamatis Zampetakis) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2684">CALCITE-2684</a>] + `RexBuilder` gives `AssertionError` when creating integer literal larger than + 2<sup>63</sup> (Ruben Quesada Lopez) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2719">CALCITE-2719</a>] + In JDBC adapter for MySQL, fix cast to `INTEGER` and `BIGINT` (Piotr Bojko) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2713">CALCITE-2713</a>] + JDBC adapter may generate casts on PostgreSQL for `VARCHAR` type exceeding max + length +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2529">CALCITE-2529</a>] + All numbers are in the same type family (Andrew Pilloud) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2701">CALCITE-2701</a>] + Make generated `Baz` classes immutable (Stamatis Zampetakis) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2619">CALCITE-2619</a>] + Reduce string literal creation cost by deferring and caching charset + conversion (Ted Xu) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2720">CALCITE-2720</a>] + `RelMetadataQuery.getTableOrigin` throws `IndexOutOfBoundsException` if + `RelNode` has no columns (Zoltan Haindrich) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2717">CALCITE-2717</a>] + Use `Interner` instead of `LoadingCache` to cache traits, and so allow traits + to be garbage-collected (Haisheng Yuan) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2542">CALCITE-2542</a>] + In SQL parser, allow `.field` to follow any expression, not just tables and + columns (Rong Rong) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2637">CALCITE-2637</a>] + In SQL parser, allow prefix '-' between `BETWEEN` and `AND` (Qi Yu) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2632">CALCITE-2632</a>] + Ensure that `RexNode` and its sub-classes implement `hashCode` and `equals` + methods (Zoltan Haindrich) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2494">CALCITE-2494</a>] + `RexFieldAccess` should implement `equals` and `hashCode` methods +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2715">CALCITE-2715</a>] + In JDBC adapter, do not generate character set in data types for MS SQL Server + (Piotr Bojko) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2714">CALCITE-2714</a>] + Make `BasicSqlType` immutable, and now `SqlTypeFactory.createWithNullability` + can reuse existing type if possible (Ruben Quesada Lopez) +* `RexSimplify`: + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2695">CALCITE-2695</a>] + Simplify casts that are only widening nullability (Zoltan Haindrich) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2631">CALCITE-2631</a>] + General improvements in simplifying `CASE` + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2620">CALCITE-2620</a>] + Simplify `COALESCE(NULL, x)` → `x` (pengzhiwei) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-1413">CALCITE-1413</a>] + Enhance boolean case statement simplifications (Zoltan Haindrich) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2615">CALCITE-2615</a>] + When simplifying `NOT-AND-OR`, `RexSimplify` incorrectly applies predicates + deduced for operands to the same operands (Zoltan Haindrich) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2604">CALCITE-2604</a>] + When simplifying an expression, say whether an `UNKNOWN` value will be + interpreted as is, or as `TRUE` or `FALSE` + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2438">CALCITE-2438</a>] + Fix wrong results for `IS NOT FALSE(FALSE)` (zhiwei.pzw) (Zoltan Haindrich) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2506">CALCITE-2506</a>] + Simplifying `COALESCE(+ nullInt, +vInt())` results in + `AssertionError: result mismatch` (pengzhiwei) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2580">CALCITE-2580</a>] + Simplifying `COALESCE(NULL > NULL, TRUE)` produces wrong result filter + expressions (pengzhiwei) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2586">CALCITE-2586</a>] + `CASE` with repeated branches gives `AssertionError` + (pengzhiwei) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2590">CALCITE-2590</a>] + Remove redundant `CAST` when operand has exactly the same type as it is casted to + * Implement fuzzy generator for `CASE` expressions + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2556">CALCITE-2556</a>] + Simplify `NOT TRUE` → `FALSE`, and `NOT FALSE` → `TRUE` (pengzhiwei) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2581">CALCITE-2581</a>] + Avoid errors in simplifying `UNKNOWN AND NOT (UNKNOWN OR ...)` (pengzhiwei) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2527">CALCITE-2527</a>] + Simplify `(c IS NULL) OR (c IS ...)` might result in AssertionError: result + mismatch (pengzhiwei) + * Display random failure of Rex fuzzer in build logs to inspire further fixes + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2567">CALCITE-2567</a>] + Simplify `IS NULL(NULL)` to `TRUE` (pengzhiwei) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2555">CALCITE-2555</a>] + RexSimplify: Simplify `x >= NULL` to `UNKNOWN` (pengzhiwei) + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2504">CALCITE-2504</a>] + Add randomized test for better code coverage of rex node create and + simplification + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2469">CALCITE-2469</a>] + Simplify `(NOT x) IS NULL` → `x IS NULL` (pengzhiwei); + also, simplify `f(x, y) IS NULL` → `x IS NULL OR y IS NULL` if `f` is a + strong operator + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2327">CALCITE-2327</a>] + Simplify `AND(x, y, NOT(y))` → `AND(x, null, IS NULL(y))` + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2327">CALCITE-2327</a>] + Avoid simplification of `x AND NOT(x)` to `FALSE` for nullable `x` + * [<a href="https://issues.apache.org/jira/browse/CALCITE-2505">CALCITE-2505</a>] + `AssertionError` when simplifying `IS [NOT] DISTINCT` expressions + (Haisheng Yuan) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2687">CALCITE-2687</a>] + `IS DISTINCT FROM` could lead to exceptions in `ReduceExpressionsRule` + (Zoltan Haindrich) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2673">CALCITE-2673</a>] + `SqlDialect` supports pushing of all functions by default +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2675">CALCITE-2675</a>] + Type validation error as `ReduceExpressionsRule` fails to preserve type + nullability (Zoltan Haindrich) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2669">CALCITE-2669</a>] + `RelMdTableReferences` should check whether references inferred from input are + null for `Union`/`Join` operators +* Following + [<a href="https://issues.apache.org/jira/browse/CALCITE-2031">CALCITE-2031</a>] + remove incorrect "Not implemented" message +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2668">CALCITE-2668</a>] + Support for left/right outer join in `RelMdExpressionLineage` +* Fix invocation of deprecated constructor of `SqlAggFunction` (Hongze Zhang) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2652">CALCITE-2652</a>] + `SqlNode` to SQL conversion fails if the join condition references a `BOOLEAN` + column (Zoltan Haindrich) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2657">CALCITE-2657</a>] + In `RexShuttle`, use `RexCall.clone` instead of `new RexCall` (Chunwei Lei) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2605">CALCITE-2605</a>] + Support semi-join via `EnumerableCorrelate` (Ruben Quesada Lopez) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2605">CALCITE-2605</a>] + Support left outer join via `EnumerableCorrelate` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1174">CALCITE-1174</a>] + When generating SQL, translate `SUM0(x)` to `COALESCE(SUM(x), 0)` +* `RelBuilder.toString()` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2617">CALCITE-2617</a>] + Add a variant of `FilterProjectTransposeRule` that can push down a `Filter` + that contains correlated variables (Stamatis Zampetakis) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2638">CALCITE-2638</a>] + Constant reducer should not treat as constant an `RexInputRef` that points to a + call to a dynamic or non-deterministic function (Danny Chan) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2639">CALCITE-2639</a>] + `FilterReduceExpressionsRule` causes `ArithmeticException` at execution time +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2628">CALCITE-2628</a>] + JDBC adapter throws `NullPointerException` while generating `GROUP BY` query + for MySQL +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2404">CALCITE-2404</a>] + Implement access to structured-types in enumerable runtime + (Stamatis Zampetakis) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2622">CALCITE-2622</a>] + `RexFieldCollation.toString()` method is not deterministic +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2611">CALCITE-2611</a>] + Linq4j code generation failure if one side of an `OR` contains `UNKNOWN` + (Zoltan Haindrich) +* Canonize simple cases for composite traits in trait factory +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2591">CALCITE-2591</a>] + `EnumerableDefaults#mergeJoin` should throw error and not return incorrect + results when inputs are not ordered (Enrico Olivelli) +* Test case for + [<a href="https://issues.apache.org/jira/browse/CALCITE-2592">CALCITE-2592</a>] + `EnumerableMergeJoin` is never taken +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2526">CALCITE-2526</a>] + Add test for `OR` with nullable comparisons (pengzhiwei) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2413">CALCITE-2413</a>] + Use raw signatures for classes with generics when producing Java code +* In Elasticsearch adapter, remove redundant null check in + `CompoundQueryExpression` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2562">CALCITE-2562</a>] + Remove dead code in `StandardConvertletTable#convertDatetimeMinus` +* Avoid `NullPointerException` when `FlatList` contains null elements +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2561">CALCITE-2561</a>] + Remove dead code in `Lattice` constructor +* Apply small refactorings to Calcite codebase (Java 5, Java 7, Java 8) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2572">CALCITE-2572</a>] + SQL standard semantics for `SUBSTRING` function (Andrew Pilloud) +* Remove dead code: `Compatible`, `CompatibleGuava11` +* Remove "Now, do something with table" from standard output when implementing + sequences +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2444">CALCITE-2444</a>] + Handle `IN` expressions when converting `SqlNode` to SQL (Zoltan Haindrich) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2537">CALCITE-2537</a>] + Use litmus for `VolcanoPlanner#validate` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2546">CALCITE-2546</a>] + Reduce precision of `Profiler`'s `surprise` and `cardinality` attributes to + avoid floating point discrepancies (Alisha Prabhu) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2563">CALCITE-2563</a>] + Materialized view rewriting may swap columns in equivalent classes incorrectly +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2551">CALCITE-2551</a>] + `SqlToRelConverter` gives `ClassCastException` while handling `IN` inside + `WHERE NOT CASE` (pengzhiwei) +* Remove redundant `new` expression in constant array creation +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2474">CALCITE-2474</a>] + SqlAdvisor: avoid NPE in lookupFromHints where FROM is empty +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2418">CALCITE-2418</a>] + Remove `matchRecognize` field of `SqlSelect` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2514">CALCITE-2514</a>] + Add `SqlIdentifier` conversion to `ITEM` operator for dynamic tables in + `ExtendedExpander` (Arina Ielchiieva) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2491">CALCITE-2491</a>] + Refactor `NameSet`, `NameMap`, and `NameMultimap` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2520">CALCITE-2520</a>] + Make `SparkHandlerImpl#compile` silent by default, print code in + `calcite.debug=true` mode only +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1026">CALCITE-1026</a>] + Remove unused import +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2483">CALCITE-2483</a>] + Druid adapter, when querying Druid segment metadata, throws when row number is + larger than `Integer.MAX_VALUE` (Hongze Zhang) +* Support `AND`, `OR`, `COALESCE`, `IS [NOT] DISTINCT` in `RexUtil#op` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2495">CALCITE-2495</a>] + Support encoded URLs in `org.apache.calcite.util.Source`, and use it for URL + → File conversion in tests +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2271">CALCITE-2271</a>] + Join of two views with window aggregates produces incorrect results or throws + `NullPointerException` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2481">CALCITE-2481</a>] + `NameSet` assumes lower-case characters have greater codes, which does not hold + for certain characters +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2480">CALCITE-2480</a>] + `NameSet.contains` wrongly returns `false` when element in set is upper-case + and `seek` is lower-case +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2465">CALCITE-2465</a>] + Enable use of materialized views for any planner +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2446">CALCITE-2446</a>] + Lateral joins do not work when saved as custom views (Piotr Bojko) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2447">CALCITE-2447</a>] + `POWER`, `ATAN2` functions fail with `NoSuchMethodException` +* Typo in `HepPlanner` trace message (Dylan) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2416">CALCITE-2416</a>] + `AssertionError` when determining monotonicity (Alina Ipatina) +* Java 8: use `Map.computeIfAbsent` when possible +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2431">CALCITE-2431</a>] + `SqlUtil.getAncestry` throws `AssertionError` when providing completion hints + for sub-schema +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2430">CALCITE-2430</a>] + `RelDataTypeImpl.getFieldList` throws `AssertionError` when SQL Advisor inspects + non-struct field +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2429">CALCITE-2429</a>] + `SqlValidatorImpl.lookupFieldNamespace` throws `NullPointerException` when SQL + Advisor observes non-existing field +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2422">CALCITE-2422</a>] + Query with unnest of column from nested sub-query fails when dynamic table is + used +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2417">CALCITE-2417</a>] + `RelToSqlConverter` throws `ClassCastException` with structs (Benoit Hanotte) + +#### Build and test suite + +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2678">CALCITE-2678</a>] + `RelBuilderTest#testRelBuilderToString` fails on Windows (Stamatis Zampetakis) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2660">CALCITE-2660</a>] + `OsAdapterTest` now checks whether required commands are available +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2655">CALCITE-2655</a>] + Enable Travis to test against JDK 12 +* Ensure that tests are not calling `checkSimplify3` with `expected`, + `expectedFalse`, `expectedTrue` all the same +* Geode adapter tests: Removed unnecessary `try/final` block in `RefCountPolicy` +* Add license to `TestKtTest` and add `apache-rat:check` to Travis CI +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2112">CALCITE-2112</a>] + Add Apache license header to `maven-wrapper.properties` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2588">CALCITE-2588</a>] + Run Geode adapter tests with an embedded instance +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2594">CALCITE-2594</a>] + Ensure `forbiddenapis` and `maven-compiler` use the correct JDK version +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2642">CALCITE-2642</a>] + Checkstyle complains that `maven-wrapper.properties` is missing a header +* `commons:commons-pool2` is used in tests only, so use `scope=test` for it +* Make `findbugs:jsr305` dependency optional +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2458">CALCITE-2458</a>] + Add Kotlin as a test dependency +* Make build scripts Maven 3.3 compatible +* Fix JavaDoc warnings for Java 9+, and check JavaDoc in Travis CI +* Unwrap invocation target exception from QuidemTest#test +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2518">CALCITE-2518</a>] + Add `failOnWarnings` to `maven-javadoc-plugin` configuration +* Silence Pig, Spark, and Elasticsearch logs in tests +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1894">CALCITE-1894</a>] + `CsvTest.testCsvStream` failing often: add `@Ignore` since the test is known to + fail +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2535">CALCITE-2535</a>] + Enable `SqlTester.checkFails` (previously it was a no-op) (Hongze Zhang) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2558">CALCITE-2558</a>] + Improve re-compilation times by skipping `parser.java` update on each build +* Increase timeout for Cassandra daemon startup for `CassandraAdapterTest` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2412">CALCITE-2412</a>] + Add Windows CI via AppVeyor (Sergey Nuyanzin) +* Reduce `HepPlannerTest#testRuleApplyCount` complexity +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2523">CALCITE-2523</a>] + Guard `PartiallyOrderedSetTest#testPosetBitsLarge` with + `CalciteAssert.ENABLE_SLOW` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2521">CALCITE-2521</a>] + Guard `RelMetadataTest#testMetadataHandlerCacheLimit` with + `CalciteAssert.ENABLE_SLOW` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2484">CALCITE-2484</a>] + Add `SqlValidatorDynamicTest` to `CalciteSuite` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2484">CALCITE-2484</a>] + Move dynamic tests to a separate class like `SqlValidatorDynamicTest`, and + avoid reuse of `MockCatalogReaderDynamic` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2522">CALCITE-2522</a>] + Remove `e.printStackTrace()` from `CalciteAssert#returns` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2512">CALCITE-2512</a>] + Move `StreamTest#ROW_GENERATOR` to `Table.scan().iterator` to make it not + shared between threads (Sergey Nuyanzin) +* Skip second Checkstyle execution during Travis CI build +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2519">CALCITE-2519</a>] + Silence ERROR logs from `CalciteException`, `SqlValidatorException` during + tests +* [<a href="https://issues.apache.org/jira/browse/CALCITE-1026">CALCITE-1026</a>] + Fix `ModelTest#testYamlFileDetection` when source folder has spaces +* `MockCatalogReader` is used in testing, so cache should be disabled there to + avoid thread conflicts and/or stale results +* [<a href="https://issues.apache.org/jira/browse/CALCITE-311">CALCITE-311</a>] + Add a test-case for Filter after Window aggregate +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2462">CALCITE-2462</a>] + `RexProgramTest`: replace `nullLiteral` → `nullInt`, + `unknownLiteral` → `nullBool` for brevity +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2462">CALCITE-2462</a>] + `RexProgramTest`: move "rex building" methods to base class +* `SqlTestFactory`: use lazy initialization of objects +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2435">CALCITE-2435</a>] + Refactor `SqlTestFactory` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2428">CALCITE-2428</a>] + Cassandra unit test fails to parse JDK version string (Andrei Sereda) +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2419">CALCITE-2419</a>] + Use embedded Cassandra for tests + +#### Web site and documentation + +* Add geospatial category to DOAP file +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2577">CALCITE-2577</a>] + Update links on download page to HTTPS +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2574">CALCITE-2574</a>] + Update download page to include instructions for verifying a downloaded + artifact +* Update build status badges in `README.md` +* [<a href="https://issues.apache.org/jira/browse/CALCITE-2705">CALCITE-2705</a>] + Site: Remove duplicate "selectivity" in list of metadata types (Alan Jin) +* Site: Add Andrei Sereda as committer +* Site: Update Julian Hyde's affiliation +* Update Michael Mior's affiliation +* Site: Add instructions for updating PRs based on the discussion in the dev + list (Stamatis Zampetakis) +* Site: Add committer Sergey Nuyanzin +* Site: News item for release 1.17.0 + ## <a href="https://github.com/apache/calcite/releases/tag/calcite-1.17.0">1.17.0</a> / 2018-07-16 {: #v1-17-0} @@ -255,7 +705,8 @@ Calcite has been upgraded to use <a href='https://issues.apache.org/jira/browse/ * [<a href='https://issues.apache.org/jira/browse/CALCITE-2403'>CALCITE-2403</a>] Upgrade quidem to 0.9 * [<a href='https://issues.apache.org/jira/browse/CALCITE-2409'>CALCITE-2409</a>] - SparkAdapterTest fails on Windows when '/tmp' directory does not exist (Sergey Nuyanzin) + `SparkAdapterTest` fails on Windows when '/tmp' directory does not exist + (Sergey Nuyanzin) ## <a href="https://github.com/apache/calcite/releases/tag/calcite-1.16.0">1.16.0</a> / 2018-03-14 {: #v1-16-0} http://git-wip-us.apache.org/repos/asf/calcite/blob/b7725a71/site/_docs/howto.md ---------------------------------------------------------------------- diff --git a/site/_docs/howto.md b/site/_docs/howto.md index f52abb3..3b47910 100644 --- a/site/_docs/howto.md +++ b/site/_docs/howto.md @@ -31,15 +31,15 @@ adapters. ## Building from a source distribution -Prerequisite is Java (JDK 8, 9 or 10) on your path. +Prerequisite is Java (JDK 8, 9, 10 or 11) on your path. Unpack the source distribution `.tar.gz` file, `cd` to the root directory of the unpacked source, then build using the included maven wrapper: {% highlight bash %} -$ tar xvfz calcite-1.17.0-source.tar.gz -$ cd calcite-1.17.0 +$ tar xvfz calcite-1.18.0-source.tar.gz +$ cd calcite-1.18.0 $ ./mvnw install {% endhighlight %} @@ -49,7 +49,7 @@ tests. ## Building from git Prerequisites are git -and Java (JDK 8, 9 or 10) on your path. +and Java (JDK 8, 9, 10 or 11) on your path. Create a local copy of the github repository, `cd` to its root directory, @@ -486,18 +486,18 @@ Follow the instructions [here](http://www.apache.org/dev/publishing-maven-artifa Before you start: * Set up signing keys as described above. -* Make sure you are using JDK 8 (not 9 or 10). +* Make sure you are using JDK 11. * Make sure build and tests succeed with `-Dcalcite.test.db=hsqldb` (the default) {% highlight bash %} -# Set passphrase variable without putting it into shell history -read -s GPG_PASSPHRASE +# Tell GPG how to read a password from your terminal +export GPG_TTY=$(tty) # Make sure that there are no junk files in the sandbox git clean -xn ./mvnw clean -./mvnw -Papache-release -Dgpg.passphrase=${GPG_PASSPHRASE} install +./mvnw -Papache-release install {% endhighlight %} When the dry-run has succeeded, change `install` to `deploy`. @@ -581,21 +581,21 @@ If any of the steps fail, clean up (see below), fix the problem, and start again from the top. {% highlight bash %} -# Set passphrase variable without putting it into shell history -read -s GPG_PASSPHRASE +# Tell GPG how to read a password from your terminal +export GPG_TTY=$(tty) # Make sure that there are no junk files in the sandbox git clean -xn ./mvnw clean # Do a dry run of the release:prepare step, which sets version numbers -# (accept the default tag name of calcite-X.Y.Z) -# Note X.Y.Z is the current version we're trying to release, and X.Y+1.Z is the next development version. -# For example, if I am currently building a release for 1.16.0, X.Y.Z would be 1.16.0 and X.Y+1.Z would be 1.17.0. -./mvnw -DdryRun=true -DskipTests -DreleaseVersion=X.Y.Z -DdevelopmentVersion=X.Y+1.Z-SNAPSHOT -Papache-release -Darguments="-Dgpg.passphrase=${GPG_PASSPHRASE}" release:prepare 2>&1 | tee /tmp/prepare-dry.log +# (accept the default tag name of calcite-x.y.z). +# Note X.Y.Z is the current version we're trying to release (e.g. 1.8.0), +# and X.(Y+1).Z is the next development version (e.g. 1.9.0). +./mvnw -DdryRun=true -DskipTests -DreleaseVersion=X.Y.Z -DdevelopmentVersion=X.(Y+1).Z-SNAPSHOT -Papache-release release:prepare 2>&1 | tee /tmp/prepare-dry.log # If you have multiple GPG keys, you can select the key used to sign the release by adding `-Dgpg.keyname=${GPG_KEY_ID}` to `-Darguments`: -./mvnw -DdryRun=true -DskipTests -DreleaseVersion=X.Y.Z -DdevelopmentVersion=X.Y+1.Z-SNAPSHOT -Papache-release -Darguments="-Dgpg.passphrase=${GPG_PASSPHRASE} -Dgpg.keyname=${GPG_KEY_ID}" release:prepare 2>&1 | tee /tmp/prepare-dry.log +./mvnw -DdryRun=true -DskipTests -DreleaseVersion=X.Y.Z -DdevelopmentVersion=X.(Y+1).Z-SNAPSHOT -Papache-release -Darguments="-Dgpg.keyname=${GPG_KEY_ID}" release:prepare 2>&1 | tee /tmp/prepare-dry.log {% endhighlight %} Check the artifacts. @@ -632,13 +632,13 @@ For this step you'll have to add the [Apache servers](https://maven.apache.org/d # Prepare sets the version numbers, creates a tag, and pushes it to git # Note X.Y.Z is the current version we're trying to release, and X.Y+1.Z is the next development version. # For example, if I am currently building a release for 1.16.0, X.Y.Z would be 1.16.0 and X.Y+1.Z would be 1.17.0. -./mvnw -DdryRun=false -DskipTests -DreleaseVersion=X.Y.Z -DdevelopmentVersion=X.Y+1.Z-SNAPSHOT -Papache-release -Darguments="-Dgpg.passphrase=${GPG_PASSPHRASE}" release:prepare 2>&1 | tee /tmp/prepare.log +./mvnw -DdryRun=false -DskipTests -DreleaseVersion=X.Y.Z -DdevelopmentVersion=X.Y+1.Z-SNAPSHOT -Papache-release release:prepare 2>&1 | tee /tmp/prepare.log # If you have multiple GPG keys, you can select the key used to sign the release by adding `-Dgpg.keyname=${GPG_KEY_ID}` to `-Darguments`: -./mvnw -DdryRun=false -DskipTests -DreleaseVersion=X.Y.Z -DdevelopmentVersion=X.Y+1.Z-SNAPSHOT -Papache-release -Darguments="-Dgpg.passphrase=${GPG_PASSPHRASE} -Dgpg.keyname=${GPG_KEY_ID}" release:prepare 2>&1 | tee /tmp/prepare-dry.log +./mvnw -DdryRun=false -DskipTests -DreleaseVersion=X.Y.Z -DdevelopmentVersion=X.Y+1.Z-SNAPSHOT -Papache-release -Darguments="-Dgpg.keyname=${GPG_KEY_ID}" release:prepare 2>&1 | tee /tmp/prepare.log # Perform checks out the tagged version, builds, and deploys to the staging repository -./mvnw -DskipTests -Papache-release -Darguments="-Dgpg.passphrase=${GPG_PASSPHRASE}" release:perform 2>&1 | tee /tmp/perform.log +./mvnw -DskipTests -Papache-release release:perform 2>&1 | tee /tmp/perform.log {% endhighlight %} Verify the staged artifacts in the Nexus repository: