This is an automated email from the ASF dual-hosted git repository.
asf-ci-deploy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/calcite-site.git
The following commit(s) were added to refs/heads/main by this push:
new 630647ff9 Website deployed from
calcite@e2e77aaf172ce997b92a9e574b5fcf77a6dc297a
630647ff9 is described below
commit 630647ff9a4a4f79c2940e43628c25d92ee80169
Author: asolimando <[email protected]>
AuthorDate: Wed May 28 12:37:28 2025 +0000
Website deployed from calcite@e2e77aaf172ce997b92a9e574b5fcf77a6dc297a
---
docs/history.html | 266 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
docs/howto.html | 5 +-
2 files changed, 259 insertions(+), 12 deletions(-)
diff --git a/docs/history.html b/docs/history.html
index 6a16746b5..6fa5a0dc1 100644
--- a/docs/history.html
+++ b/docs/history.html
@@ -101,10 +101,10 @@ Downloads are available on the
<!--
-## <a
href="https://github.com/apache/calcite/releases/tag/calcite-1.40.0">1.40.0</a>
/ YYYY-MM-DD
-{: #v1-40-0}
+## <a
href="https://github.com/apache/calcite/releases/tag/calcite-1.41.0">1.41.0</a>
/ YYYY-MM-DD
+{: #v1-41-0}
-This release comes x months after [1.39.0](#v1-39-0),
+This release comes x months after [1.40.0](#v1-40-0),
contains contributions from x contributors, and resolves x issues.
Contributors to this release:
@@ -118,23 +118,271 @@ Guava versions 21.0 to 33.3.0-jre;
other software versions as specified in gradle.properties.
#### Breaking Changes
-{: #breaking-1-40-0}
+{: #breaking-1-41-0}
#### New features
-{: #new-features-1-40-0}
+{: #new-features-1-41-0}
#### Dependency version upgrade
-{: #dependency-1-40-0}
+{: #dependency-1-41-0}
#### Bug-fixes, API changes and minor enhancements
-{: #fixes-1-40-0}
+{: #fixes-1-41-0}
#### Build and test suite
-{: #build-1-40-0}
+{: #build-1-41-0}
#### Web site and documentation
-{: #site-1-40-0}
+{: #site-1-41-0}
-->
+
+<h2 id="v1-40-0">
+<a
href="https://github.com/apache/calcite/releases/tag/calcite-1.40.0">1.40.0</a>
/ 2025-05-28</h2>
+
+<p>This release comes 2 months after <a href="#v1-39-0">1.39.0</a>,
+contains contributions from 20 contributors, and resolves 102 issues.</p>
+
+<p>Highlights include
+the addition of several improvements and additional optimization rules,
notably advanced set operation handling with new rules for converting INTERSECT
to semi-joins and EXISTS subqueries, MINUS to anti-joins and filters, and
optimizing UNIONs with common sources,
+join optimization is improved through predicate expansion from disjunctions
and specialized handling of complex join conditions,
+additional optimizations include new rules for MIN/MAX aggregates and smarter
filter-sort interactions,
+addition of Doris, DuckDB, SQLite, and Trino dialects, as well as improved
support for ClickHouse,
+support for aliases referencing lateral columns,
+support for defining which rule sets to apply for individual Quidem tests.</p>
+
+<p>Contributors to this release:
+Alessandro Solimando (release manager),
+Chuxin Chen,
+Evgeniy Stanilovsky,
+Julian Hyde,
+Juntao Zhang,
+Kurt Alfred Kluever,
+Mihai Budiu,
+Niels Pardon,
+Ruben Quesada Lopez,
+Sergey Nuyanzin,
+Silun Dong,
+Stamatis Zampetakis,
+suibianwanwan,
+sulees,
+Ulrich Kramer,
+wangdiao,
+Wei Zhou,
+Xiong Duan,
+Yu Xu,
+Zhen Chen,
+zhuyufeng,</p>
+
+<p>Compatibility: This release is tested on Linux, macOS, Microsoft Windows;
+using JDK/OpenJDK versions 8 to 23;
+Guava versions 21.0 to 33.3.0-jre;
+other software versions as specified in gradle.properties.</p>
+
+<h4 id="breaking-1-40-0">Breaking Changes</h4>
+
+<ul>
+ <li>
+ <p>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6920">CALCITE-6920</a>]
+The fix introduces a new property of the type system called <code
class="language-plaintext highlighter-rouge">mapKeysCanBeNullable()</code>
which indicates if keys in a map can be nullable.</p>
+ </li>
+ <li>
+ <p>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6901">CALCITE-6901</a>]
+changes the way <code class="language-plaintext
highlighter-rouge">SINGLE_VALUE</code> is rewritten <code
class="language-plaintext highlighter-rouge">MySQL</code> dialect leading to a
different exception thrown in case of multiple values.
+Before: <code class="language-plaintext highlighter-rouge">SQL error [1140]
[42000]: In aggregated query without GROUP BY, expression #1 of SELECT list
contains nonaggregated column '*****'; this is incompatible with
sql_mode=only_full_group_by</code>
+After: <code class="language-plaintext highlighter-rouge">SQL error [1242]
[21000]: Subquery returns more than 1 row</code></p>
+ </li>
+ <li>
+ <p>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6944">CALCITE-6944</a>]
+<code class="language-plaintext highlighter-rouge">toSqlString</code> now
doesn’t add an extra pair of parentheses for table functions.
+Before: <code class="language-plaintext highlighter-rouge">F(A => (TABLE T
PARTITION BY F1 ORDER BY F2), B => 1)</code>
+After: <code class="language-plaintext highlighter-rouge">F(A => TABLE T
PARTITION BY F1 ORDER BY F2, B => 1)</code></p>
+ </li>
+ <li>
+ <p>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6964">CALCITE-6964</a>]
+<code class="language-plaintext
highlighter-rouge">SqlDelete#getOperandList</code> now returns the elements
from the source <code class="language-plaintext
highlighter-rouge">SELECT</code> component.</p>
+ </li>
+ <li>
+ <p>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6989">CALCITE-6989</a>]
+<code class="language-plaintext highlighter-rouge">RexBuilder#makeIn</code>
now creates a <code class="language-plaintext highlighter-rouge">SEARCH</code>
expression for <code class="language-plaintext highlighter-rouge">ARRAY</code>
literals, similarly to what it does for <code class="language-plaintext
highlighter-rouge">ROW</code> literals.
+Taking <code class="language-plaintext
highlighter-rouge">RexBuilder#makeIn($0, ARRAY [100, 200], ARRAY [300,
400])</code> as an example you have:
+Before: <code class="language-plaintext highlighter-rouge">OR(=($0, ARRAY(100,
200)), =($0, ARRAY(300, 400)))</code>
+After: <code class="language-plaintext highlighter-rouge">SEARCH($0,
Sarg[[100:INTEGER, 200:INTEGER]:INTEGER NOT NULL ARRAY, [300:INTEGER,
400:INTEGER]:INTEGER NOT NULL ARRAY]:INTEGER NOT NULL ARRAY)</code></p>
+ </li>
+</ul>
+
+<h4 id="new-features-1-40-0">New features</h4>
+
+<ul>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6878">CALCITE-6878</a>]
Implement <code class="language-plaintext
highlighter-rouge">FilterSortTransposeRule</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6836">CALCITE-6836</a>] Add
Rule to convert <code class="language-plaintext
highlighter-rouge">INTERSECT</code> to <code class="language-plaintext
highlighter-rouge">EXISTS</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6900">CALCITE-6900</a>]
Support <code class="language-plaintext highlighter-rouge">Char</code> type
cast in ClickHouse Dialect</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6825">CALCITE-6825</a>] Add
support for <code class="language-plaintext highlighter-rouge">ALL</code>,
<code class="language-plaintext highlighter-rouge">SOME</code>, <code
class="language-plaintext highlighter-rouge">ANY</code> in <code
class="language-plaintext highlighter-rouge">RelToSqlConverter</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6888">CALCITE-6888</a>]
Doris dialect implementation</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6820">CALCITE-6820</a>]
Trino dialect implementation</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6891">CALCITE-6891</a>]
Implement <code class="language-plaintext
highlighter-rouge">IntersectReorderRule</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6880">CALCITE-6880</a>]
Implement <code class="language-plaintext
highlighter-rouge">IntersectToSemiJoinRule</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6893">CALCITE-6893</a>]
Remove agg from Union children in <code class="language-plaintext
highlighter-rouge">IntersectToDistinctRule</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6948">CALCITE-6948</a>]
Implement <code class="language-plaintext
highlighter-rouge">MinusToAntiJoinRule</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6927">CALCITE-6927</a>] Add
rule for join condition remove <code class="language-plaintext
highlighter-rouge">IS NOT DISTINCT FROM</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6930">CALCITE-6930</a>]
Implementing <code class="language-plaintext
highlighter-rouge">JoinConditionOrExpansionRule</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6914">CALCITE-6914</a>]
Expand join-dependent predicates from disjunction</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6953">CALCITE-6953</a>]
Extend <code class="language-plaintext
highlighter-rouge">UnionEliminatorRule</code> to support <code
class="language-plaintext highlighter-rouge">Intersect</code> and <code
class="language-plaintext highlighter-rouge">Minus</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6966">CALCITE-6966</a>]
Change <code class="language-plaintext
highlighter-rouge">JoinConditionOrExpansionRule</code> name and accept more
predicates that will allow the expansion to be performed</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6969">CALCITE-6969</a>]
Support ClickHouse in <code class="language-plaintext
highlighter-rouge">SqlLibrary</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6973">CALCITE-6973</a>] Add
rule to convert <code class="language-plaintext highlighter-rouge">Minus</code>
to <code class="language-plaintext highlighter-rouge">Filter</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6988">CALCITE-6988</a>]
DuckDB dialect implementation</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6946">CALCITE-6946</a>]
Expand predicates from disjunction for inputs of Join</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6939">CALCITE-6939</a>] Add
support for Lateral Column Alias</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6985">CALCITE-6985</a>] Add
rule to transform <code class="language-plaintext
highlighter-rouge">MIN</code>/<code class="language-plaintext
highlighter-rouge">MAX</code> with <code class="language-plaintext
highlighter-rouge">ORDER BY</code> and <code class="language-plaintext
highlighter-rouge">LIMIT 1</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-7000">CALCITE-7000</a>]
Extend <code class="language-plaintext
highlighter-rouge">IntersectToSemiJoinRule</code> to support n-way inputs</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6997">CALCITE-6997</a>]
SQLite dialect implementation</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-7002">CALCITE-7002</a>]
Create an optimization rule to eliminate <code class="language-plaintext
highlighter-rouge">UNION</code> from the same source with different filters</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-7019">CALCITE-7019</a>]
Simplify <code class="language-plaintext highlighter-rouge">NULL IN (20,
10)</code> to <code class="language-plaintext highlighter-rouge">NULL</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-7008">CALCITE-7008</a>]
Extend <code class="language-plaintext
highlighter-rouge">MinusToAntiJoinRule</code> to support n-way inputs</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6951">CALCITE-6951</a>] Add
<code class="language-plaintext highlighter-rouge">STRING_TO_ARRAY</code>
function(enabled in PostgreSQL Library)</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-7014">CALCITE-7014</a>]
Support <code class="language-plaintext highlighter-rouge">EQUAL</code>/<code
class="language-plaintext highlighter-rouge">GreaterThanOrEqual</code>/<code
class="language-plaintext highlighter-rouge">LessThanOrEqual</code> expressions
to <code class="language-plaintext highlighter-rouge">RexNode</code> In <code
class="language-plaintext highlighter-rouge">CalcitePrepare</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-7030">CALCITE-7030</a>]
Enhance <code class="language-plaintext
highlighter-rouge">TopologicalOrderIterator</code> to support <code
class="language-plaintext highlighter-rouge">BOTTOM_UP</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6887">CALCITE-6887</a>]
<code class="language-plaintext highlighter-rouge">ReduceExpressionsRule</code>
applied to ‘<code class="language-plaintext highlighter-rouge">IN</code>
subquery’ should make the values distinct if the subquery is a <code
class="language-plaintext highlighter-rouge">Values</code> composed of
literals</li>
+</ul>
+
+<h4 id="dependency-1-40-0">Dependency version upgrade</h4>
+
+<ul>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6975">CALCITE-6975</a>]
Upgrade <code class="language-plaintext highlighter-rouge">Quidem</code>
version to 0.12</li>
+ <li>Bump <code class="language-plaintext highlighter-rouge">nokogiri</code>
from 1.18.2 to 1.18.8 in <code class="language-plaintext
highlighter-rouge">/site</code>
+</li>
+ <li>Bump <code class="language-plaintext highlighter-rouge">json</code> from
2.10.1 to 2.10.2 in <code class="language-plaintext
highlighter-rouge">/site</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-7018">CALCITE-7018</a>]
Upgrade <code class="language-plaintext highlighter-rouge">Janino</code> from
3.1.11 to 3.1.12</li>
+</ul>
+
+<h4 id="fixes-1-40-0">Bug-fixes, API changes and minor enhancements</h4>
+
+<ul>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6875">CALCITE-6875</a>]
<code class="language-plaintext
highlighter-rouge">EnumerableFilterRule</code>/<code class="language-plaintext
highlighter-rouge">EnumerableProjectRule</code> should not convert a <code
class="language-plaintext highlighter-rouge">Logical Filter</code>/<code
class="language-plaintext highlighter-rouge">Project</code> to <code
class="language-plaintext highlighter-rouge">Enumerable Filter</code>/<code cl
[...]
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6892">CALCITE-6892</a>]
<code class="language-plaintext highlighter-rouge">CHAR_LENGTH</code> Function
is not recognized in DerbySQL</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6901">CALCITE-6901</a>]
<code class="language-plaintext highlighter-rouge">SINGLE_VALUE</code> rewrite
to wrong sql in MySQL dialect</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6903">CALCITE-6903</a>]
<code class="language-plaintext
highlighter-rouge">CalciteSchema#getSubSchemaMap</code> must consider implicit
sub-schemas</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6897">CALCITE-6897</a>]
<code class="language-plaintext highlighter-rouge">AbstractConverter</code> of
root node is not needed in topdown mode</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6431">CALCITE-6431</a>]
Implement the <code class="language-plaintext
highlighter-rouge">SINGLE_VALUE</code> aggregation in <code
class="language-plaintext highlighter-rouge">HiveSqlDialect</code> And <code
class="language-plaintext highlighter-rouge">SparkSQLDialect</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6910">CALCITE-6910</a>]
<code class="language-plaintext highlighter-rouge">RelToSql</code> does not
handle <code class="language-plaintext highlighter-rouge">ASOF</code> joins</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6913">CALCITE-6913</a>]
Some casts inserted by type coercion do not have source position
information</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6834">CALCITE-6834</a>] In
query that applies <code class="language-plaintext
highlighter-rouge">COALESCE</code> to nullable <code class="language-plaintext
highlighter-rouge">SUM</code>,<code class="language-plaintext
highlighter-rouge">EnumerableProjectToCalcRule</code> throws <code
class="language-plaintext highlighter-rouge">AssertionError</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6920">CALCITE-6920</a>] The
type derived for a cast to <code class="language-plaintext
highlighter-rouge">INT ARRAY</code> always has non-nullable elements</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-2109">CALCITE-2109</a>]
MongoAdapter: Support <code class="language-plaintext
highlighter-rouge">in</code> condition with <code class="language-plaintext
highlighter-rouge">and</code> condition</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6911">CALCITE-6911</a>]
<code class="language-plaintext
highlighter-rouge">SqlItemOperator.inferReturnType</code> throws <code
class="language-plaintext highlighter-rouge">AssertionError</code> for out of
bounds accesses</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6909">CALCITE-6909</a>]
ClickHouse dialect should limit the Precision and Scale of the <code
class="language-plaintext highlighter-rouge">Decimal</code> type to be within
76</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6931">CALCITE-6931</a>]
<code class="language-plaintext highlighter-rouge">STARTSWITH</code>/<code
class="language-plaintext highlighter-rouge">ENDSWITH</code> in SPARK should
not convert to <code class="language-plaintext
highlighter-rouge">STARTS_WITH</code>/<code class="language-plaintext
highlighter-rouge">ENDS_WITH</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6835">CALCITE-6835</a>]
Invalid unparse for <code class="language-plaintext highlighter-rouge">IS
TRUE</code>,<code class="language-plaintext highlighter-rouge">IS
FALSE</code>,<code class="language-plaintext highlighter-rouge">IS NOT
TRUE</code> and <code class="language-plaintext highlighter-rouge">IS NOT
FALSE</code> in <code class="language-plaintext
highlighter-rouge">StarRocksDialect</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6904">CALCITE-6904</a>]
<code class="language-plaintext highlighter-rouge">IS_NOT_DISTINCT_FROM</code>
is incorrectly handled by <code class="language-plaintext
highlighter-rouge">EnumerableJoinRule</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6936">CALCITE-6936</a>]
Table function parameter matching should always be case-insensitive</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6923">CALCITE-6923</a>]
<code class="language-plaintext
highlighter-rouge">REGEXP_REPLACE_PG_...</code>: backward references behave
differently than in postgres</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6921">CALCITE-6921</a>]
<code class="language-plaintext highlighter-rouge">REGEXP_REPLACE</code> with
empty string causes <code class="language-plaintext
highlighter-rouge">Exception</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6943">CALCITE-6943</a>]
Calcite JDBC adapter for Hive should translate <code class="language-plaintext
highlighter-rouge">APPROX_COUNT_DISTINCT</code> to <code
class="language-plaintext highlighter-rouge">COUNT DISTINCT</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6938">CALCITE-6938</a>]
Support zero value creation of nested data types</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6941">CALCITE-6941</a>]
<code class="language-plaintext highlighter-rouge">Array</code>/<code
class="language-plaintext highlighter-rouge">Map</code> value constructor is
unparsed incorrectly in ClickHouse</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6945">CALCITE-6945</a>] Use
<code class="language-plaintext highlighter-rouge">LITERAL_AGG</code> to
simplify <code class="language-plaintext
highlighter-rouge">SubQueryRemoveRule</code> by avoiding the extra Project</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6949">CALCITE-6949</a>]
ClickHouse not support <code class="language-plaintext
highlighter-rouge">floor</code> <code class="language-plaintext
highlighter-rouge">date</code> to <code class="language-plaintext
highlighter-rouge">SECOND</code>/<code class="language-plaintext
highlighter-rouge">MILLISECOND</code>/<code class="language-plaintext
highlighter-rouge">MICROSECOND</code>/<code class="language-plaintext
highlighter-roug [...]
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6840">CALCITE-6840</a>]
Hive/Phoenix Dialect should not cast to <code class="language-plaintext
highlighter-rouge">REAL</code> type directly</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6959">CALCITE-6959</a>]
Support <code class="language-plaintext
highlighter-rouge">LogicalAsofJoin</code> in <code class="language-plaintext
highlighter-rouge">RelShuttle</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6958">CALCITE-6958</a>]
JDBC adapter for MySQL not support <code class="language-plaintext
highlighter-rouge">floor</code> <code class="language-plaintext
highlighter-rouge">date</code> to <code class="language-plaintext
highlighter-rouge">MILLISECOND</code>/<code class="language-plaintext
highlighter-rouge">MICROSECOND</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6954">CALCITE-6954</a>]
<code class="language-plaintext
highlighter-rouge">SqlTypeFactoryImpl#leastRestrictive</code> returns
non-canonical collection types</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6961">CALCITE-6961</a>]
Support <code class="language-plaintext
highlighter-rouge">LogicalRepeatUnion</code> in <code class="language-plaintext
highlighter-rouge">RelShuttle</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6955">CALCITE-6955</a>]
<code class="language-plaintext highlighter-rouge">PruneEmptyRules</code> does
not handle the all attribute of <code class="language-plaintext
highlighter-rouge">SetOp</code> correctly</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-2636">CALCITE-2636</a>] SQL
parser has quadratic running time when SQL string is very large</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6944">CALCITE-6944</a>]
Align <code class="language-plaintext highlighter-rouge">toSqlString</code>
with SQL std for Table Args in PTF</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6964">CALCITE-6964</a>]
<code class="language-plaintext
highlighter-rouge">SqlDelete#getOperandList</code> return operands’ both order
and size not match with <code class="language-plaintext
highlighter-rouge">SqlDelete#setOperand</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6967">CALCITE-6967</a>]
Unparsing <code class="language-plaintext
highlighter-rouge">STARTS_WITH</code>/<code class="language-plaintext
highlighter-rouge">ENDS_WITH</code>/<code class="language-plaintext
highlighter-rouge">BIT</code> functions is incorrect for the Clickhouse
dialect</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-5985">CALCITE-5985</a>]
<code class="language-plaintext
highlighter-rouge">FilterTableFunctionTransposeRule</code> should not use
“Logical” <code class="language-plaintext highlighter-rouge">RelNodes</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6980">CALCITE-6980</a>]
<code class="language-plaintext highlighter-rouge">RelJson</code> cannot
serialize binary literals</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6974">CALCITE-6974</a>]
Default typesystem has incorrect limits for <code class="language-plaintext
highlighter-rouge">DECIMAL</code> for Presto/MySQL/Phoenix</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6979">CALCITE-6979</a>]
Invalid unparse for <code class="language-plaintext highlighter-rouge">IS
TRUE</code>,<code class="language-plaintext highlighter-rouge">IS
FALSE</code>,<code class="language-plaintext highlighter-rouge">IS NOT
TRUE</code> and <code class="language-plaintext highlighter-rouge">IS NOT
FALSE</code> in <code class="language-plaintext
highlighter-rouge">ClickHouseDialect</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6594">CALCITE-6594</a>]
<code class="language-plaintext highlighter-rouge">RelMdSize</code> does not
handle <code class="language-plaintext highlighter-rouge">ARRAY</code>
constructor calls</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6984">CALCITE-6984</a>]
<code class="language-plaintext
highlighter-rouge">FamilyOperandTypeChecker</code> with a Predicate describing
optional arguments does not reject mistyped expressions</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6986">CALCITE-6986</a>]
Parser rejects SQL sources that produce an empty statement list</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6983">CALCITE-6983</a>]
<code class="language-plaintext highlighter-rouge">SortJoinTransposeRule</code>
should not push <code class="language-plaintext highlighter-rouge">SORT</code>
past a <code class="language-plaintext highlighter-rouge">JOIN</code> when
<code class="language-plaintext highlighter-rouge">SORT</code>’s fetch is <code
class="language-plaintext highlighter-rouge">DynamicParam</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6432">CALCITE-6432</a>]
Infinite loop for <code class="language-plaintext
highlighter-rouge">JoinPushTransitivePredicatesRule</code> when there are
multiple project expressions reference the same input field</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6992">CALCITE-6992</a>]
<code class="language-plaintext highlighter-rouge">RelJson</code> cannot
serialize <code class="language-plaintext highlighter-rouge">UUID</code>
literals</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6989">CALCITE-6989</a>]
Enhance <code class="language-plaintext
highlighter-rouge">RexBuilder#makeIn</code> to create <code
class="language-plaintext highlighter-rouge">SEARCH</code> for <code
class="language-plaintext highlighter-rouge">ARRAY</code> literals</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6977">CALCITE-6977</a>]
Unparse <code class="language-plaintext highlighter-rouge">DELETE</code> SQL
throws unsupported exception</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6981">CALCITE-6981</a>]
Runtime conversion of <code class="language-plaintext
highlighter-rouge">DECIMAL ARRAY</code> to <code class="language-plaintext
highlighter-rouge">INT ARRAY</code> fails with a <code
class="language-plaintext highlighter-rouge">ClassCastException</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6995">CALCITE-6995</a>]
Support <code class="language-plaintext highlighter-rouge">FULL JOIN</code> in
StarRocks/Doris Dialect</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-5387">CALCITE-5387</a>]
Type-mismatch on nullability in <code class="language-plaintext
highlighter-rouge">JoinPushTransitivePredicatesRule</code> <code
class="language-plaintext highlighter-rouge">RelRule</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6999">CALCITE-6999</a>]
Invalid unparse for <code class="language-plaintext
highlighter-rouge">TRIM</code> in <code class="language-plaintext
highlighter-rouge">PrestoDialect</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-7006">CALCITE-7006</a>]
Incorrect <code class="language-plaintext highlighter-rouge">left join</code>
results with <code class="language-plaintext highlighter-rouge">IS NOT DISTINCT
FROM</code> under specific plan</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6962">CALCITE-6962</a>]
<code class="language-plaintext highlighter-rouge">Exists</code> subquery
returns incorrect result when <code class="language-plaintext
highlighter-rouge">or</code> condition involves null column</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-7005">CALCITE-7005</a>]
Invalid unparse for <code class="language-plaintext highlighter-rouge">IS
TRUE</code>,<code class="language-plaintext highlighter-rouge">IS
FALSE</code>,<code class="language-plaintext highlighter-rouge">IS NOT
TRUE</code> and <code class="language-plaintext highlighter-rouge">IS NOT
FALSE</code> in Hive/Presto Dialect</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6991">CALCITE-6991</a>]
Validator cannot infer type for <code class="language-plaintext
highlighter-rouge">COALESCE</code> when call is not expanded</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-7013">CALCITE-7013</a>]
Support building <code class="language-plaintext
highlighter-rouge">RexLiterals</code> from <code class="language-plaintext
highlighter-rouge">Character</code> values</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-7001">CALCITE-7001</a>]
Cast of malformed literal to <code class="language-plaintext
highlighter-rouge">TIMESTAMP WITH LOCAL TIME ZONE</code> need to throw
informative error</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-7025">CALCITE-7025</a>]
Verifying the Quantify operator without compatible types, should throw an
exception about the Quantify Operator</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6866">CALCITE-6866</a>]
<code class="language-plaintext highlighter-rouge">PostgreSQLDialect</code>
support to unparse <code class="language-plaintext
highlighter-rouge">LISTAGG</code> aggregate function</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-7022">CALCITE-7022</a>]
Decouple <code class="language-plaintext highlighter-rouge">ModelHandler</code>
from <code class="language-plaintext highlighter-rouge">CalciteConnection</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-5638">CALCITE-5638</a>]
Columns trimmer need to consider sub queries</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-7027">CALCITE-7027</a>]
Improve error message in case of several <code class="language-plaintext
highlighter-rouge">UNION</code>, <code class="language-plaintext
highlighter-rouge">INTERSECT</code>, <code class="language-plaintext
highlighter-rouge">EXCEPT</code> in a query</li>
+ <li>Documentation Supplement for <code class="language-plaintext
highlighter-rouge">MinusToAntiJoinRule</code>
+</li>
+ <li>Use <code class="language-plaintext
highlighter-rouge">StandardCharsets</code> in <code class="language-plaintext
highlighter-rouge">RuleMatchVisualizer.java</code>
+</li>
+</ul>
+
+<h4 id="build-1-40-0">Build and test suite</h4>
+
+<ul>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6895">CALCITE-6895</a>]
Change <code class="language-plaintext
highlighter-rouge">JdbcTest.testVersion</code> to strictly match minor version
in <code class="language-plaintext highlighter-rouge">gradle.properties</code>
+</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6915">CALCITE-6915</a>]
Generalize terminology Linter to allow pattern based checks in commit
messages</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6960">CALCITE-6960</a>] The
tests for <code class="language-plaintext
highlighter-rouge">SemiJoinRemoveRule</code> should explicitly include a semi
join</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6957">CALCITE-6957</a>] The
<code class="language-plaintext highlighter-rouge">RelOptRulesTest</code> tests
should fail if the xml file contains tests that do not exist in Java</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6335">CALCITE-6335</a>]
Quidem tests should allow specifying optimization passes to apply to
programs</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6883">CALCITE-6883</a>] Add
Javadoc for <code class="language-plaintext
highlighter-rouge">RelRoot#isTrivial</code> variants and refactor related
tests</li>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6998">CALCITE-6998</a>] The
command <code class="language-plaintext highlighter-rouge">!set
planner-rules</code> does not support rules with multiple <code
class="language-plaintext highlighter-rouge">Config</code>
+</li>
+</ul>
+
+<h4 id="site-1-40-0">Web site and documentation</h4>
+
+<ul>
+ <li>[<a
href="https://issues.apache.org/jira/browse/CALCITE-6934">CALCITE-6934</a>] The
examples for DDL extension on the official website cannot run</li>
+ <li>Update documentation for example0 in <code class="language-plaintext
highlighter-rouge">RelBuilderExample</code>
+</li>
+</ul>
+
<h2 id="v1-39-0">
<a
href="https://github.com/apache/calcite/releases/tag/calcite-1.39.0">1.39.0</a>
/ 2025-03-16</h2>
diff --git a/docs/howto.html b/docs/howto.html
index 7dd02a17c..6aad422ef 100644
--- a/docs/howto.html
+++ b/docs/howto.html
@@ -178,8 +178,8 @@ and Gradle (version 8.7) on your path.</p>
<code class="language-plaintext highlighter-rouge">cd</code> to the root
directory of the unpacked source,
then build using Gradle:</p>
-<figure class="highlight"><pre><code class="language-bash"
data-lang="bash"><span class="nv">$ </span><span class="nb">tar </span>xvfz
apache-calcite-1.39.0-src.tar.gz
-<span class="nv">$ </span><span class="nb">cd </span>apache-calcite-1.39.0-src
+<figure class="highlight"><pre><code class="language-bash"
data-lang="bash"><span class="nv">$ </span><span class="nb">tar </span>xvfz
apache-calcite-1.40.0-src.tar.gz
+<span class="nv">$ </span><span class="nb">cd </span>apache-calcite-1.40.0-src
<span class="nv">$ </span>gradle build</code></pre></figure>
<p><a href="#running-tests">Running tests</a> describes how to run more or
fewer
@@ -1042,7 +1042,6 @@ no binary distro), check that all files belong to a
directory called
distros: <code class="language-plaintext highlighter-rouge">KEYS</code>, <code
class="language-plaintext highlighter-rouge">gradlew</code>, <code
class="language-plaintext highlighter-rouge">gradlew.bat</code>, <code
class="language-plaintext highlighter-rouge">gradle-wrapper.jar</code>,
<code class="language-plaintext
highlighter-rouge">gradle-wrapper.properties</code>
</li>
- <li>Make sure that there is no <code class="language-plaintext
highlighter-rouge">KEYS</code> file in the source distros</li>
<li>In each .jar (for example
<code class="language-plaintext
highlighter-rouge">core/build/libs/calcite-core-X.Y.Z.jar</code> and
<code class="language-plaintext
highlighter-rouge">mongodb/build/libs/calcite-mongodb-X.Y.Z-sources.jar</code>),
check