From 5ad825c97edc0ee275a9a7257d6d6f62f12c49af Mon Sep 17 00:00:00 2001 From: Jess Balint Date: Thu, 2 Feb 2023 19:32:45 -0600 Subject: [PATCH] [CALCITE-5481] Release Calcite 1.33.0 --- NOTICE | 2 +- README | 2 +- site/_docs/history.md | 305 +++++++++++++++++++++++++++++++++++++++++- site/_docs/howto.md | 4 +- 4 files changed, 302 insertions(+), 11 deletions(-) diff --git a/NOTICE b/NOTICE index fb342f9c909..f4562f0e62a 100644 --- a/NOTICE +++ b/NOTICE @@ -1,5 +1,5 @@ Apache Calcite -Copyright 2012-2022 The Apache Software Foundation +Copyright 2012-2023 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). diff --git a/README b/README index 7c6c274edb5..f561c53fa85 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -Apache Calcite release 1.32.0 +Apache Calcite release 1.33.0 This is a source or binary distribution of Apache Calcite. diff --git a/site/_docs/history.md b/site/_docs/history.md index 586abb1d33e..8ac7f4bacd6 100644 --- a/site/_docs/history.md +++ b/site/_docs/history.md @@ -29,11 +29,10 @@ Downloads are available on the [downloads page]({{ site.baseurl }}/downloads/). + +## 1.33.0 / 2023-02-06 +{: #v1-33-0} + +This release comes five months after [1.32.0](#v1-32-0), +contains contributions from 33 contributors, and resolves 107 issues. + +Among others, it is worth highlighting the following improvements: + +* Many improvements to the BigQuery dialect as part of [CALCITE-5180] + * [CALCITE-5269] + Implement BigQuery `TIME_TRUNC` and `TIMESTAMP_TRUNC` functions + * [CALCITE-5360] + Implement `TIMESTAMP_ADD` function (compatible with BigQuery) + * [CALCITE-5389] + Add `STARTS_WITH` and `ENDS_WITH` functions (for `BIG_QUERY` compatibility) + * [CALCITE-5404] + Implement BigQuery's `POW()` and `TRUNC()` math functions + * [CALCITE-5423] + Implement `TIMESTAMP_DIFF` function (compatible with BigQuery) + * [CALCITE-5430] + Implement `IFNULL()` for BigQuery dialect + * [CALCITE-5432] + Implement BigQuery `TIME_ADD`/`TIME_DIFF` + * [CALCITE-5436] + Implement `DATE_SUB`, `TIME_SUB`, `TIMESTAMP_SUB` (compatible w/ BigQuery) + * [CALCITE-5447] + Add `DATE_TRUNC` for BigQuery +* [CALCITE-5105] + Add `MEASURE` type and `AGGREGATE` aggregate function +* [CALCITE-5155] + Custom time frames +* [CALCITE-5280] + Implement geometry aggregate functions +* [CALCITE-5314] + Prune empty parts of a query by exploiting stats/metadata + + +Contributors to this release: +Aitozi, +Aleksey Plekhanov, +Alessandro Solimando, +Benchao Li, +Bertil Chapuis, +Christophe Le Saec, +Dmitry Sysolyatin, +Francis Chuang, +Gian Merlino, +Greg Hart, +Hanumath Maduri, +Istvan Toth, +Jake Xie, +James Turton, +Jasmin Trada, +Jess Balint (release manager), +Julian Hyde, +Kevin Risden, +Krisztian Kasa, +Liya Fan, +Mou Wu, +Oliver Lee, +Scott Reynolds, +Sergey Nuyanzin, +Stamatis Zampetakis, +TJ Banghart, +Tanner Clary, +Thomas Rebele, +Tim Nieradzik, +Volodymyr Vysotskyi, +Xurenhe, +Zhengqiang Duan, +Zou Dan. + #### Breaking Changes {: #breaking-1-33-0} * [CALCITE-5293] - Support general set operators in PruneEmptyRules. The default configuration of PruneEmptyRules for Set operators has changed: the rules matching scope has increased. + Support general set operators in `PruneEmptyRules`. The default configuration of `PruneEmptyRules` for Set operators has changed: the rules matching scope has increased. Compatibility: This release is tested on Linux, macOS, Microsoft Windows; @@ -56,20 +152,215 @@ other software versions as specified in gradle.properties. #### New features {: #new-features-1-33-0} +* [CALCITE-2884] + Implement `JSON_INSERT`, `JSON_REPLACE`, `JSON_SET` +* [CALCITE-4186] + Add `ST_CoveredBy` spatial function +* [CALCITE-5105] + Add `MEASURE` type and `AGGREGATE` aggregate function +* [CALCITE-5127] + Support correlation variables in Project +* [CALCITE-5155] + Custom time frames +* [CALCITE-5159] + `ARRAY` string constructor, and implicit cast from string literal (enabled in PostgreSQL conformance) +* [CALCITE-5269] + Implement BigQuery `TIME_TRUNC` and `TIMESTAMP_TRUNC` functions +* [CALCITE-5280] + Implement geometry aggregate functions +* [CALCITE-5281] + Implement geometry set returning functions (SRF) +* [CALCITE-5283] + Add `ARG_MIN`, `ARG_MAX` (aka `MIN_BY`, `MAX_BY`) aggregate functions +* [CALCITE-5360] + Implement `TIMESTAMP_ADD` function (compatible with BigQuery) +* [CALCITE-5362] + Implement geometry measurement functions +* [CALCITE-5389] + Add `STARTS_WITH` and `ENDS_WITH` functions (for `BIG_QUERY` compatibility) +* [CALCITE-5393] + `VALUE` as an synonym for `VALUES` keyword (enabled in MySQL conformance) +* [CALCITE-5404] + Implement BigQuery's `POW()` and `TRUNC()` math functions +* [CALCITE-5423] + Implement `TIMESTAMP_DIFF` function (compatible with BigQuery) +* [CALCITE-5430] + Implement `IFNULL()` for BigQuery dialect +* [CALCITE-5432] + Implement BigQuery `TIME_ADD`/`TIME_DIFF` +* [CALCITE-5436] + Implement `DATE_SUB`, `TIME_SUB`, `TIMESTAMP_SUB` (compatible w/ BigQuery) +* [CALCITE-5447] + Add `DATE_TRUNC` for BigQuery +* [CALCITE-5451] + Implement `LPAD()` and `RPAD()` functions +* [CALCITE-5495] + Allow `WEEK` and `QUARTER` in `INTERVAL` literals + #### Dependency version upgrade {: #dependency-1-33-0} +* [CALCITE-5341] + Upgrade Calcite to Avatica 1.23.0 +* [CALCITE-5351] + Bump jackson to 2.13.4 and jackson databind to 2.13.4.2 to avoid CVEs +* [CALCITE-5356] + Update junit4 to 4.13.2 and junit5 to 5.9.1 +* [CALCITE-5374] + Upgrade jackson version to 2.14.0 + #### Bug-fixes, API changes and minor enhancements {: #fixes-1-33-0} +* [CALCITE-4351] + `RelMdUtil#numDistinctVals` always returns 0 for large inputs +* [CALCITE-4632] + Exception in `RelToSqlConverter`: "Cannot convert x to DECIMAL(n, m) due to overflow" +* [CALCITE-4804] + Support `Snapshot` operator serialization and deserialization +* [CALCITE-4972] + Subfields of array columns containing structs are not qualified in `getFieldOrigins` +* [CALCITE-4982] + Do not push 'cast to not null' through `Join` in `ProjectJoinTransposeRule` +* [CALCITE-5141] + Incomplete implicit type conversion for insert values +* [CALCITE-5209] + Proper sub-query handling if it is used inside select list and group by +* [CALCITE-5217] + Implement `unparseSqlIntervalLiteral` in the Firebolt dialect +* [CALCITE-5230] + Return type of `PERCENTILE_DISC` should be the same as sort expression +* [CALCITE-5252] + JDBC adapter sometimes miss parentheses around `SELECT` in `WITH_ITEM` body +* [CALCITE-5253] + `NATURAL` join and `USING` should fail if join columns are not unique - expression validation partially broken +* [CALCITE-5259] + Add `getParameterRowType` method to `Planner` interface +* [CALCITE-5264] + `HintStrategy` rule exclusion does not match innermost rels +* [CALCITE-5265] + JDBC adapter sometimes adds unnecessary parentheses around `SELECT` in `INSERT` +* [CALCITE-5267] + Remove unused variable 'newCasts' in `AggregateCaseToFilterRule` +* [CALCITE-5276] + Implicitly convert strings to geometries +* [CALCITE-5286] + Join with parameterized `LIMIT` throws `AssertionError` "not a literal" +* [CALCITE-5288] + Expression `(a > 5 and a < 15) or (a > 10 and a < 20)` should be simplified to `SEARCH(a, Sarg[(5..20)])` +* [CALCITE-5291] + Make BigQuery lexical policy case insensitive +* [CALCITE-5293] + Support general set operators in `PruneEmptyRules` +* [CALCITE-5294] + Prune the null-generating side of an outer join if it is empty +* [CALCITE-5296] + In a query with `ROLLUP`, validator wrongly infers that a column is `NOT NULL` +* [CALCITE-5297] + Casting dynamic variable twice throws exception +* [CALCITE-5298] + CalciteSystemProperty `calcite.test.dataset` path check fails under Java Security Manager +* [CALCITE-5299] + JDBC adapter sometimes adds unnecessary parentheses around `SELECT` in `WITH` body +* [CALCITE-5305] + Character literals with C-style escapes +* [CALCITE-5310] + `JSON_OBJECT` in scalar sub-query throws `AssertionError` +* [CALCITE-5314] + Prune empty parts of a query by exploiting stats/metadata +* [CALCITE-5326] + `SqlMerge` generate extra bracket on `toSqlString` +* [CALCITE-5332] + Configuring `PruneEmptyRules` is cumbersome +* [CALCITE-5336] + Support inferring constants from predicates with `IS NOT DISTINCT FROM` operator +* [CALCITE-5337] + `UnionPullUpConstantsRule` produces an invalid plan when pulling up constants for nullable fields +* [CALCITE-5339] + Use `Method#getParameterCount` rather than `Method#getParameters` to get length +* [CALCITE-5342] + Refactor SqlFunctions `lastDay`, `addMonths`, `subtractMonths` to use `DateTimeUtils` from Avatica +* [CALCITE-5348] + When translating `ORDER BY` in `OVER`, use the session's default null collation (e.g. `NULLS LAST`) +* [CALCITE-5349] + `RelJson` deserialization should support `SqlLibraryOperators` +* [CALCITE-5355] + Use the Presto SQL dialect for AWS Athena +* [CALCITE-5377] + `RelFieldTrimmer` support Sort with dynamic param +* [CALCITE-5383] + Update `CONCAT` function to allow `BIG_QUERY` +* [CALCITE-5385] + Add BigQuery as supported library for implemented functions +* [CALCITE-5388] + `tempList` expression inside `EnumerableWindow.getPartitionIterator` should be unoptimized +* [CALCITE-5391] + `JoinOnUniqueToSemiJoinRule` should preserve field names, if possible +* [CALCITE-5392] + Support `Snapshot` in `RelMdExpressionLineage` +* [CALCITE-5394] + `RelToSqlConverter` fails when semi-join is under a join node +* [CALCITE-5395] + `RelToSqlConverter` fails when `SELECT *` is under a semi-join node +* [CALCITE-5405] + MongoDB: Invalid `TIMESTAMP` conversion +* [CALCITE-5407] + MongoDB: Invalid `ARRAY` conversion +* [CALCITE-5408] + Return type of `PERCENTILE_CONT` should be the same as sort expression +* [CALCITE-5410] + Assertion error on `PERCENT_REMAINDER` operator with `DECIMAL` type +* [CALCITE-5414] + Use `DateTimeUtils` to correctly convert between `java.sql` types and Unix timestamps +* [CALCITE-5424] + Customize handling of literals based on type system +* [CALCITE-5439] + Validation of Pivot fails after creating a deep copy of `SqlNode` +* [CALCITE-5450] + Add support for `WEEK(WEEKDAY)` for custom time frames to relevant functions +* [CALCITE-5452] + Add BigQuery `LENGTH()` as synonym for `CHAR_LENGTH()` +* [CALCITE-5454] + Update BigQuery Conformance for `!=` and `%` operators +* [CALCITE-5466] + Constant condition can't be reduced after correlate +* [CALCITE-5471] + `RelSupplier.SqlRelSupplier#apply` should use `.project()`, not `.rel` +* [CALCITE-5489] + When creating a `RexCall` to `TIMESTAMP_DIFF` function, cannot convert a `TIMESTAMP` literal to a `org.apache.calcite.avatica.util.TimeUnit` +* [CALCITE-5491] + Allow `TIME` and `DATE` to be args for `TIMESTAMPDIFF` +* [CALCITE-5493] + Time zone tests in `SqlFunctions` should pass in `Europe/London` + #### Build and test suite {: #build-1-33-0} +* [CALCITE-5197] + Bump gradle to 7.4.2 and add checksum autoupdate +* [CALCITE-5306] + Remove JDK15/16 EOL non-LTS JDKs in CI +* [CALCITE-5340] + Tests should fail when actual and expected XML reference files are not identical +* [CALCITE-5417] + Include Proj4J as an api dependency once the license allows it +* [CALCITE-5427] + Provide code quality/coverage metrics with SonarCloud and JaCoCo +* [CALCITE-5428] + Reduce minimum Guava version to 16.0.1 +* [CALCITE-5433] + Druid tests hang/fail intermittently in CI +* [CALCITE-5474] + Disable Sonar quality gates to avoid checks appearing as failures +* [CALCITE-5475] + Improve test coverage accuracy by aggregating modules #### Web site and documentation {: #site-1-33-0} -{% endcomment %} ---> +* [CALCITE-5239] + Site: JDBC Adapter's current limitations is incorrect +* [CALCITE-5287] + SQL reference page is missing from website ## 1.32.0 / 2022-09-10 {: #v1-32-0} diff --git a/site/_docs/howto.md b/site/_docs/howto.md index 921a962ce9e..0a8782509ab 100644 --- a/site/_docs/howto.md +++ b/site/_docs/howto.md @@ -39,8 +39,8 @@ Unpack the source distribution `.tar.gz` file, then build using Gradle: {% highlight bash %} -$ tar xvfz apache-calcite-1.32.0-src.tar.gz -$ cd apache-calcite-1.32.0-src +$ tar xvfz apache-calcite-1.33.0-src.tar.gz +$ cd apache-calcite-1.33.0-src $ gradle build {% endhighlight %}