blob: a0c328183c155397074d05c4886c98fcb87881e4 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>History</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="generator" content="Jekyll v3.7.3">
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic,900">
<link rel="stylesheet" href="/css/screen.css">
<link rel="icon" type="image/x-icon" href="/favicon.ico">
<!--[if lt IE 9]>
<script src="/js/html5shiv.min.js"></script>
<script src="/js/respond.min.js"></script>
<![endif]-->
</head>
<body class="wrap">
<header role="banner">
<div class="grid">
<div class="unit center-on-mobiles">
<h1>
<a href="/">
<span class="sr-only">Apache Calcite</span>
<img src="/img/logo.svg" alt="Calcite Logo">
</a>
</h1>
</div>
<nav class="main-nav">
<ul>
<li class="">
<a href="/">Home</a>
</li>
<li class="">
<a href="/downloads/">Download</a>
</li>
<li class="">
<a href="/community/">Community</a>
</li>
<li class="">
<a href="/develop/">Develop</a>
</li>
<li class="">
<a href="/news/">News</a>
</li>
<li class="current">
<a href="/docs/">Docs</a>
</li>
</ul>
</nav>
</div>
</header>
<section class="docs">
<div class="grid">
<div class="docs-nav-mobile unit whole show-on-mobiles">
<select onchange="if (this.value) window.location.href=this.value">
<option value="">Navigate the docs…</option>
<optgroup label="Overview">
</optgroup>
<optgroup label="Advanced">
</optgroup>
<optgroup label="Avatica">
</optgroup>
<optgroup label="Reference">
</optgroup>
<optgroup label="Meta">
</optgroup>
</select>
</div>
<div class="unit four-fifths">
<article>
<h1>History</h1>
<!--
-->
<p>For a full list of releases, see
<a href="https://github.com/apache/calcite/releases">github</a>.
Downloads are available on the
<a href="/downloads/">downloads page</a>.</p>
<h2 id="v1-21-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.21.0">1.21.0</a> / 2019-09-11</h2>
<p>This release comes two months after 1.20.0. It includes more than 100 resolved
issues, comprising a large number of new features as well as general improvements
and bug-fixes.</p>
<p>It is worth highlighting that Calcite now:</p>
<ul>
<li>supports implicit type coercion in various contexts
(<a href="https://issues.apache.org/jira/browse/CALCITE-2302">CALCITE-2302</a>);</li>
<li>allows transformations of Pig Latin scripts into algebraic plans
(<a href="https://issues.apache.org/jira/browse/CALCITE-3122">CALCITE-3122</a>);</li>
<li>provides an implementation for the main features of <code class="highlighter-rouge">MATCH_RECOGNIZE</code> in the
<code class="highlighter-rouge">Enumerable</code> convention
(<a href="https://issues.apache.org/jira/browse/CALCITE-1935">CALCITE-1935</a>);</li>
<li>supports correlated <code class="highlighter-rouge">ANY</code>/<code class="highlighter-rouge">SOME</code>/<code class="highlighter-rouge">ALL</code> sub-queries
(<a href="https://issues.apache.org/jira/browse/CALCITE-3031">CALCITE-3031</a>);</li>
<li>introduces anonymous types based on <code class="highlighter-rouge">ROW</code>, <code class="highlighter-rouge">ARRAY</code>, and nested collection
(<a href="https://issues.apache.org/jira/browse/CALCITE-3233">CALCITE-3233</a>,
<a href="https://issues.apache.org/jira/browse/CALCITE-3231">CALCITE-3231</a>,
<a href="https://issues.apache.org/jira/browse/CALCITE-3250">CALCITE-3250</a>);</li>
<li>brings new join algorithms for the <code class="highlighter-rouge">Enumerable</code> convention
(<a href="https://issues.apache.org/jira/browse/CALCITE-2979">CALCITE-2979</a>,
<a href="https://issues.apache.org/jira/browse/CALCITE-2973">CALCITE-2973</a>,
<a href="https://issues.apache.org/jira/browse/CALCITE-3284">CALCITE-3284</a>).</li>
</ul>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 8, 9, 10, 11, 12, 13 and OpenJDK 8, 9, 10, 11, 12, 13;
Guava versions 19.0 to 27.1-jre;
Apache Druid version 0.14.0-incubating;
other software versions as specified in <code class="highlighter-rouge">pom.xml</code>.</p>
<h4 id="breaking-changes">Breaking Changes</h4>
<ul>
<li>Core parser config.fmpp#dataTypeParserMethods should return <code class="highlighter-rouge">SqlTypeNameSpec</code>
instead of <code class="highlighter-rouge">SqlIdentifier</code>.</li>
<li>The description of converter rules has slightly changed
(<a href="https://issues.apache.org/jira/browse/CALCITE-3115">CALCITE-3115</a>).
In some rare cases this may lead to a <code class="highlighter-rouge">Rule description ... is not valid</code>
exception. The exception can easily disappear by changing the name of the
<code class="highlighter-rouge">Convention</code> which causes the problem.</li>
</ul>
<h4 id="new-features">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2973">CALCITE-2973</a>]
[<a href="https://issues.apache.org/jira/browse/CALCITE-3284">CALCITE-3284</a>]
Allow joins (hash, semi, anti) that have equi conditions to be executed using a
hash join algorithm (Lai Zhou)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2302">CALCITE-2302</a>]
Implicit type cast support</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3122">CALCITE-3122</a>]
Convert Pig Latin scripts into Calcite relational algebra and Calcite SQL
(Khai Tran)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2979">CALCITE-2979</a>]
Add a block-based nested loop join algorithm (Khawla Mouhoubi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3263">CALCITE-3263</a>]
Add <code class="highlighter-rouge">MD5</code>, <code class="highlighter-rouge">SHA1</code> SQL functions (Shuming Li)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3204">CALCITE-3204</a>]
Implement <code class="highlighter-rouge">jps</code> command for OS adapter (Qianjin Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3260">CALCITE-3260</a>]
Add Expressions.evaluate(Node), a public API for evaluating linq4j expressions
(Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3280">CALCITE-3280</a>]
Add <code class="highlighter-rouge">REGEXP_REPLACE</code> function in Oracle, MySQL libraries (Shuming Li)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3111">CALCITE-3111</a>]
Add <code class="highlighter-rouge">RelBuilder.correlate</code> method, and allow custom implementations of
<code class="highlighter-rouge">Correlate</code> in <code class="highlighter-rouge">RelDecorrelator</code> (Juhwan Kim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3252">CALCITE-3252</a>]
Add <code class="highlighter-rouge">CONVERT_TIMEZONE</code>, <code class="highlighter-rouge">TO_DATE</code> and <code class="highlighter-rouge">TO_TIMESTAMP</code> non-standard SQL functions
(Lindsey Meyer)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3235">CALCITE-3235</a>]
Add <code class="highlighter-rouge">CONCAT</code> function for Redshift (Ryan Fu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3250">CALCITE-3250</a>]
Support nested collection type for <code class="highlighter-rouge">SqlDataTypeSpec</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1935">CALCITE-1935</a>]
Implement <code class="highlighter-rouge">MATCH_RECOGNIZE</code> (Julian Feinauer, Zhiqiang-He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2843">CALCITE-2843</a>]
Support PostgreSQL cast operator (<code class="highlighter-rouge">::</code>) (Muhammad Gelbana)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3233">CALCITE-3233</a>]
Support <code class="highlighter-rouge">ROW</code> type for <code class="highlighter-rouge">SqlDataTypeSpec</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3231">CALCITE-3231</a>]
Support <code class="highlighter-rouge">ARRAY</code> type for <code class="highlighter-rouge">SqlDataTypeSpec</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2624">CALCITE-2624</a>]
Add a rule to copy a sort below a join operator (Khawla Mouhoubi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3031">CALCITE-3031</a>]
Support for correlated <code class="highlighter-rouge">ANY</code>/<code class="highlighter-rouge">SOME</code>/<code class="highlighter-rouge">ALL</code> sub-query (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2510">CALCITE-2510</a>]
Implement <code class="highlighter-rouge">CHR</code> function (Sergey Tsvetkov, Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3176">CALCITE-3176</a>]
File adapter for parsing JSON files</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3144">CALCITE-3144</a>]
Add rule, <code class="highlighter-rouge">AggregateCaseToFilterRule</code>, that converts <code class="highlighter-rouge">SUM(CASE WHEN b THEN x
END)</code> to <code class="highlighter-rouge">SUM(x) FILTER (WHERE b)</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2995">CALCITE-2995</a>]
Implement <code class="highlighter-rouge">DAYNAME</code><code class="highlighter-rouge">MONTHNAME</code> functions; add <code class="highlighter-rouge">locale</code> connection property
(xuqianjin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2460">CALCITE-2460</a>]
[CALCITE-2459] Add <code class="highlighter-rouge">TO_BASE64</code>, <code class="highlighter-rouge">FROM_BASE64</code> SQL functions (Wenhui Tang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3063">CALCITE-3063</a>]
Parse and process PostgreSQL posix regular expressions</li>
</ul>
<h4 id="bug-fixes-api-changes-and-minor-enhancements">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3321">CALCITE-3321</a>]
Set casing rules for BigQuery SQL dialect (Lindsey Meyer)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3115">CALCITE-3115</a>]
Cannot add <code class="highlighter-rouge">JdbcRule</code> instances that have different <code class="highlighter-rouge">JdbcConvention</code> to same
<code class="highlighter-rouge">VolcanoPlanner</code>’s <code class="highlighter-rouge">RuleSet</code> (Wenhui Tang, Igor Guzenko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3309">CALCITE-3309</a>]
Refactor <code class="highlighter-rouge">generatePredicate</code> method from <code class="highlighter-rouge">EnumerableNestedLoopJoin</code>,
<code class="highlighter-rouge">EnumerableHashJoin</code>, and <code class="highlighter-rouge">EnumerableBatchNestedLoopJoin</code> into a single location</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3310">CALCITE-3310</a>]
Approximate and exact aggregate calls are recognized as the same during
SQL-to-RelNode conversion</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3292">CALCITE-3292</a>]
SqlToRelConverter#substituteSubQuery fails with NullPointerException when
converting <code class="highlighter-rouge">SqlUpdate</code> (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3297">CALCITE-3297</a>]
<code class="highlighter-rouge">PigToSqlAggregateRule</code> should be applied on multi-set projection to produce an
optimal plan (Igor Guzenko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3295">CALCITE-3295</a>]
Add aggregate call name in serialized json string for <code class="highlighter-rouge">RelNode</code> (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3296">CALCITE-3296</a>]
Decorrelator shouldn’t give empty value when fetch and offset values are null
in <code class="highlighter-rouge">Sort</code> rel (Juhwan Kim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3283">CALCITE-3283</a>]
<code class="highlighter-rouge">RelSubset</code> does not contain its best <code class="highlighter-rouge">RelNode</code> (Xiening Dai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3210">CALCITE-3210</a>]
JDBC adapter should generate <code class="highlighter-rouge">CAST(NULL AS type)</code> rather than <code class="highlighter-rouge">NULL</code>
conditionally (Wang Weidong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3220">CALCITE-3220</a>]
JDBC adapter now transforms <code class="highlighter-rouge">TRIM</code> to <code class="highlighter-rouge">TRIM</code>, <code class="highlighter-rouge">LTRIM</code> or <code class="highlighter-rouge">RTRIM</code> when target
is Hive (Jacky Woo)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3228">CALCITE-3228</a>]
Error while applying rule <code class="highlighter-rouge">ProjectScanRule</code>: interpreter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3223">CALCITE-3223</a>]
Materialized view fails to match when there is non-<code class="highlighter-rouge">RexInputRef</code> in the
projects (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3257">CALCITE-3257</a>]
<code class="highlighter-rouge">RelMetadataQuery</code> cache is not invalidated when log trace is enabled
(Xiening Dai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3138">CALCITE-3138</a>]
<code class="highlighter-rouge">RelStructuredTypeFlattener</code> doesn’t restructure <code class="highlighter-rouge">ROW</code> type fields (Igor Guzenko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3251">CALCITE-3251</a>]
<code class="highlighter-rouge">BinaryExpression</code> evaluate method support full numeric types in <code class="highlighter-rouge">Primitive</code>
(xy2953396112)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3259">CALCITE-3259</a>]
Align ‘Property’ in the serialized XML string of <code class="highlighter-rouge">RelXmlWriter</code> (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3167">CALCITE-3167</a>]
Make <code class="highlighter-rouge">equals</code> and <code class="highlighter-rouge">hashCode</code> methods final in <code class="highlighter-rouge">AbstractRelNode</code>, and remove
overriding methods in <code class="highlighter-rouge">EnumerableTableScan</code> (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3089">CALCITE-3089</a>]
Deprecate <code class="highlighter-rouge">EquiJoin</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3267">CALCITE-3267</a>]
Remove method <code class="highlighter-rouge">SqlDataTypeSpec#deriveType(RelDataTypefactory)</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3214">CALCITE-3214</a>]
Add <code class="highlighter-rouge">UnionToUnionRule</code> for materialization matching (refine rule name) (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3214">CALCITE-3214</a>]
Add <code class="highlighter-rouge">UnionToUnionRule</code> for materialization matching (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3249">CALCITE-3249</a>]
`Substitution#getRexShuttle does not consider RexLiteral (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3229">CALCITE-3229</a>]
<code class="highlighter-rouge">UnsupportedOperationException</code> for <code class="highlighter-rouge">UPDATE</code> with <code class="highlighter-rouge">IN</code> query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3236">CALCITE-3236</a>]
Handle issues found in static code analysis (DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3238">CALCITE-3238</a>]
Support Time Zone suffix of DateTime types for <code class="highlighter-rouge">SqlDataTypeSpec</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3159">CALCITE-3159</a>]
Remove <code class="highlighter-rouge">DISTINCT</code> flag from calls to <code class="highlighter-rouge">MIN</code>, <code class="highlighter-rouge">MAX</code>, <code class="highlighter-rouge">BIT_OR</code>, <code class="highlighter-rouge">BIT_AND</code>
aggregate functions (xuqianjin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3237">CALCITE-3237</a>]
<code class="highlighter-rouge">IndexOutOfBoundsException</code> when generating deeply nested Java code from linq4j
(Sahith Nallapareddy)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3234">CALCITE-3234</a>]
For boolean properties, empty string should mean “true”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3226">CALCITE-3226</a>]
<code class="highlighter-rouge">RelBuilder</code> doesn’t keep the alias when <code class="highlighter-rouge">scan</code> from an expanded view (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3198">CALCITE-3198</a>]
Enhance <code class="highlighter-rouge">RexSimplify</code> to handle <code class="highlighter-rouge">(x &lt;&gt; a or x &lt;&gt; b)</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3101">CALCITE-3101</a>]
Don’t push non-equi join conditions into <code class="highlighter-rouge">Project</code> below <code class="highlighter-rouge">Join</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3227">CALCITE-3227</a>]
<code class="highlighter-rouge">IndexOutOfBoundsException</code> when checking candidate parent match’s input
ordinal in <code class="highlighter-rouge">VolcanoRuleCall</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3177">CALCITE-3177</a>]
Ensure correct deserialization of relational algebra</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3218">CALCITE-3218</a>]
Syntax error while parsing <code class="highlighter-rouge">DATEADD</code> function (which is valid on Redshift)
(Lindsey Meyer)</li>
<li>Deprecate <code class="highlighter-rouge">RexBuilder.constantNull()</code>, because it produces untyped <code class="highlighter-rouge">NULL</code>
literals that make planning difficult</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3191">CALCITE-3191</a>]
In JDBC adapter for MySQL, implement <code class="highlighter-rouge">Values</code> by generating <code class="highlighter-rouge">SELECT</code> without
<code class="highlighter-rouge">FROM</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3147">CALCITE-3147</a>]
In JDBC adapter, accommodate the idiosyncrasies of how BigQuery (standard SQL)
quotes character literals and identifiers</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3131">CALCITE-3131</a>]
In <code class="highlighter-rouge">LatticeSuggester</code>, record whether columns are used as “dimensions” or
“measures”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3175">CALCITE-3175</a>]
<code class="highlighter-rouge">AssertionError</code> while serializing to JSON a <code class="highlighter-rouge">RexLiteral</code> with <code class="highlighter-rouge">Enum</code> type
(Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3225">CALCITE-3225</a>]
<code class="highlighter-rouge">JoinToMultiJoinRule</code> should not match semi- or anti-LogicalJoin</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3215">CALCITE-3215</a>]
Simplification may have not fully simplified IS <code class="highlighter-rouge">NOT NULL</code> expressions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3192">CALCITE-3192</a>]
Simplification may weaken OR conditions containing inequalities</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3211">CALCITE-3211</a>]
List of <code class="highlighter-rouge">MutableRel</code> may fail to be identified by <code class="highlighter-rouge">SubstitutionVisitor</code> during
matching (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3207">CALCITE-3207</a>]
Fail to convert <code class="highlighter-rouge">Join</code> with <code class="highlighter-rouge">LIKE</code> condition to SQL statement (wojustme)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2496">CALCITE-2496</a>]
Return 0 in case of <code class="highlighter-rouge">EXTRACT(MILLI/MICRO/NANOSECOND FROM date)</code>
(Sergey Nuyanzin, Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3109">CALCITE-3109</a>]
Improvements on algebraic operators to express recursive queries (<code class="highlighter-rouge">RepeatUnion</code>
and <code class="highlighter-rouge">TableSpool</code>)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3209">CALCITE-3209</a>]
When calling <code class="highlighter-rouge">MutableMultiRel.setInput</code>, exception thrown (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3195">CALCITE-3195</a>]
Handle a UDF that throws checked exceptions in the Enumerable code generator
(DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3118">CALCITE-3118</a>]
<code class="highlighter-rouge">VolcanoRuleCall</code> should look at <code class="highlighter-rouge">RelSubset</code> rather than <code class="highlighter-rouge">RelSet</code> when checking
child ordinal of a parent operand (Botong Huang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3201">CALCITE-3201</a>]
<code class="highlighter-rouge">SqlValidator</code> throws exception for SQL insert target table with virtual columns</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3182">CALCITE-3182</a>]
Trim unused fields for plan of materialized-view before matching (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3174">CALCITE-3174</a>]
<code class="highlighter-rouge">IS NOT DISTINCT FROM</code> condition pushed from <code class="highlighter-rouge">Filter</code> to <code class="highlighter-rouge">Join</code> is not
collapsed (Bohdan Kazydub)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3166">CALCITE-3166</a>]
Make <code class="highlighter-rouge">RelBuilder</code> configurable</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3113">CALCITE-3113</a>]
Equivalent <code class="highlighter-rouge">MutableAggregate</code>s with different row types should match with each
other (Jin Xing)</li>
<li><a href="https://issues.apache.org/jira/browse/CALCITE-3187">CALCITE-3187</a>:
Make decimal type inference overridable (Praveen Kumar)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3145">CALCITE-3145</a>]
<code class="highlighter-rouge">RelBuilder.aggregate</code> throws <code class="highlighter-rouge">IndexOutOfBoundsException</code> if <code class="highlighter-rouge">groupKey</code> is
non-empty and there are duplicate aggregate functions</li>
<li>Change type of <code class="highlighter-rouge">SqlStdOperatorTable.GROUPING</code> field to public class</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3196">CALCITE-3196</a>]
In <code class="highlighter-rouge">Frameworks</code>, add <code class="highlighter-rouge">interface BasePrepareAction</code> (a functional interface) and
deprecate <code class="highlighter-rouge">abstract class PrepareAction</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3183">CALCITE-3183</a>]
During field trimming, <code class="highlighter-rouge">Filter</code> is copied with wrong traitSet (Juhwan Kim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3189">CALCITE-3189</a>]
Multiple fixes for Oracle SQL dialect</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3165">CALCITE-3165</a>]
<code class="highlighter-rouge">Project#accept</code>(<code class="highlighter-rouge">RexShuttle</code> shuttle) does not update rowType</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3188">CALCITE-3188</a>]
<code class="highlighter-rouge">IndexOutOfBoundsException</code> in <code class="highlighter-rouge">ProjectFilterTransposeRule</code> when executing
<code class="highlighter-rouge">SELECT COUNT</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3160">CALCITE-3160</a>]
Failed to materialize when the aggregate function uses group key (DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3170">CALCITE-3170</a>]
ANTI join on conditions push down generates wrong plan</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3169">CALCITE-3169</a>]
decorrelateRel method should return when meeting <code class="highlighter-rouge">SEMI</code>/<code class="highlighter-rouge">ANTI</code> join in
<code class="highlighter-rouge">RelDecorrelator</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3171">CALCITE-3171</a>]
<code class="highlighter-rouge">SemiJoin</code> on conditions push down throws <code class="highlighter-rouge">IndexOutOfBoundsException</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3172">CALCITE-3172</a>]
<code class="highlighter-rouge">RelBuilder#empty</code> does not keep aliases</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3121">CALCITE-3121</a>]
<code class="highlighter-rouge">VolcanoPlanner</code> hangs due to sub-query with dynamic star</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3152">CALCITE-3152</a>]
Unify throws in SQL parser</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3125">CALCITE-3125</a>]
Remove completely <code class="highlighter-rouge">class CorrelateJoinType</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3133">CALCITE-3133</a>]
Remove completely <code class="highlighter-rouge">class SemiJoinType</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3126">CALCITE-3126</a>]
Remove deprecated <code class="highlighter-rouge">SemiJoin</code> usage completely</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3146">CALCITE-3146</a>]
Support the detection of nested aggregations for <code class="highlighter-rouge">JdbcAggregate</code> in
<code class="highlighter-rouge">SqlImplementor</code> (Wenhui Tang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3155">CALCITE-3155</a>]
Empty <code class="highlighter-rouge">LogicalValues</code> can not be converted to <code class="highlighter-rouge">UNION ALL</code> without operands which
can not be unparsed (Musbah EL FIL)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3151">CALCITE-3151</a>]
RexCall’s Monotonicity is not considered in determining a Calc’s collation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2801">CALCITE-2801</a>]
Check input type in <code class="highlighter-rouge">AggregateUnionAggregateRule</code> when remove the bottom
<code class="highlighter-rouge">Aggregate</code> (Hequn Cheng)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3149">CALCITE-3149</a>]
<code class="highlighter-rouge">RelDataType</code> CACHE in <code class="highlighter-rouge">RelDataTypeFactoryImpl</code> can’t be garbage collected</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3060">CALCITE-3060</a>]
<code class="highlighter-rouge">MutableProject</code> should be generated based on INVERSE_SURJECTION mapping
(DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3148">CALCITE-3148</a>]
Validator throws <code class="highlighter-rouge">IndexOutOfBoundsException</code> for <code class="highlighter-rouge">SqlInsert</code> when source and
sink have non-equal number of fields</li>
</ul>
<h4 id="build-and-test-suite">Build and test suite</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3322">CALCITE-3322</a>]
Remove duplicate test case in <code class="highlighter-rouge">RelMetadataTest</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3314">CALCITE-3314</a>]
CVSS dependency-check-maven fails for calcite-pig, calcite-piglet,
calcite-spark</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3315">CALCITE-3315</a>]
Multiple failures in Druid IT tests due to implicit casts</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3307">CALCITE-3307</a>]
<code class="highlighter-rouge">PigRelExTest</code>, <code class="highlighter-rouge">PigRelOpTest</code> and <code class="highlighter-rouge">PigScriptTest</code> fail on Windows</li>
<li>In <code class="highlighter-rouge">SqlFunctionsTest</code>, replace <code class="highlighter-rouge">assertEquals</code> and <code class="highlighter-rouge">assertNull</code> with <code class="highlighter-rouge">assertThat</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3258">CALCITE-3258</a>]
Upgrade jackson-databind from 2.9.9 to 2.9.9.3, and kafka-clients from 2.0.0
to 2.1.1</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3222">CALCITE-3222</a>]
Fix code style issues introduced by [CALCITE-3031] (Vineet Garg)</li>
<li>More compiler fixes, and cosmetic changes</li>
<li>Fix compiler warnings</li>
<li>Update stale tests in DruidAdapter</li>
<li>Following
[<a href="https://issues.apache.org/jira/browse/CALCITE-2804">CALCITE-2804</a>],
fix incorrect expected Druid query in test case
<code class="highlighter-rouge">DruidAdapterIT#testCastToTimestamp</code> (Justin Szeluga)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3153">CALCITE-3153</a>]
Improve testing in <code class="highlighter-rouge">TpcdsTest</code> using <code class="highlighter-rouge">assertEqual</code> instead of printing results</li>
<li>Fix javadoc error</li>
<li>Fix compilation warnings after Mongo java driver upgrade</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3179">CALCITE-3179</a>]
Bump Jackson from 2.9.8 to 2.9.9 (Fokko Driesprong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3157">CALCITE-3157</a>]
Mongo java driver upgrade: 3.5.0 -&gt; 3.10.2</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3156">CALCITE-3156</a>]
Mongo adapter. Replace fongo with Mongo Java Server for tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3168">CALCITE-3168</a>]
Add test for invalid literal of SQL parser</li>
</ul>
<h4 id="web-site-and-documentation">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3303">CALCITE-3303</a>]
Release Calcite 1.21.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3311">CALCITE-3311</a>]
Add doc to site for implicit type coercion</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3262">CALCITE-3262</a>]
Refine doc of <code class="highlighter-rouge">SubstitutionVisitor</code> (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2835">CALCITE-2835</a>]
Markdown errors on the Geode adapter page</li>
<li>Site: Update Apache links on homepage to HTTPS</li>
<li>Update favicon for new logo</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3136">CALCITE-3136</a>]
Fix the default rule description of <code class="highlighter-rouge">ConverterRule</code> (TANG Wen-hui)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3184">CALCITE-3184</a>]
Add the new logo to the website</li>
<li>Update example announcement</li>
<li>Add committer names to 1.20.0 release notes</li>
<li>Add 1.20.0 release date</li>
<li>Add 1.20.0 release announcement</li>
</ul>
<h2 id="v1-20-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.20.0">1.20.0</a> / 2019-06-24</h2>
<p>This release comes three months after 1.19.0. It includes a large number of bug fixes,
and additional SQL functions. There is now also explicit support for anti-joins.
Several new operators have been added to the algebra to allow support for recursive queries.
An adapter has also been added for <a href="https://kafka.apache.org/">Apache Kafka</a>.</p>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 8, 9, 10, 11, 12, 13 and OpenJDK 8, 9, 10, 11, 12, 13;
Guava versions 19.0 to 27.1-jre;
Apache Druid version 0.14.0-incubating;
other software versions as specified in <code class="highlighter-rouge">pom.xml</code>.</p>
<h4 id="breaking-changes-1">Breaking Changes</h4>
<ul>
<li>Make <code class="highlighter-rouge">EnumerableMergeJoin</code> extend <code class="highlighter-rouge">Join</code> instead of <code class="highlighter-rouge">EquiJoin</code></li>
<li><code class="highlighter-rouge">Correlate</code> use <code class="highlighter-rouge">JoinRelType</code> instead of <code class="highlighter-rouge">SemiJoinType</code></li>
<li>Rename <code class="highlighter-rouge">EnumerableThetaJoin</code> to <code class="highlighter-rouge">EnumerableNestedLoopJoin</code></li>
<li>Rename <code class="highlighter-rouge">EnumerableJoin</code> to <code class="highlighter-rouge">EnumerableHashJoin</code></li>
<li>Remove <code class="highlighter-rouge">SemiJoinFactory</code> from <code class="highlighter-rouge">RelBuilder</code>, method <code class="highlighter-rouge">semiJoin</code> now returns a <code class="highlighter-rouge">LogicalJoin</code>
with join type <code class="highlighter-rouge">JoinRelType.SEMI</code> instead of a <code class="highlighter-rouge">SemiJoin</code></li>
<li>Rules: <code class="highlighter-rouge">SemiJoinFilterTransposeRule</code>, <code class="highlighter-rouge">SemiJoinJoinTransposeRule</code>, <code class="highlighter-rouge">SemiJoinProjectTransposeRule</code>
and <code class="highlighter-rouge">SemiJoinRemoveRule</code> match <code class="highlighter-rouge">LogicalJoin</code> with join type <code class="highlighter-rouge">SEMI</code> instead of <code class="highlighter-rouge">SemiJoin</code>.</li>
<li><code class="highlighter-rouge">SemiJoin</code>, <code class="highlighter-rouge">EnumerableSemiJoin</code>, <code class="highlighter-rouge">SemiJoinType</code> and <code class="highlighter-rouge">CorrelateJoinType</code>, and methods that use them,
are deprecated for quick removal in 1.21</li>
<li>The Elasticsearch adapter no longer supports <a href="https://www.elastic.co/guide/en/elasticsearch/reference/7.0/removal-of-types.html">Elasticsearch types</a>.
Calcite table names will reflect index names in Elasticsearch (as opposed to types).
We recommend use of Elasticsearch 6.2 (or later) with Calcite.</li>
</ul>
<h4 id="new-features-1">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2822">CALCITE-2822</a>] Allow <code class="highlighter-rouge">MultiJoin</code> rules with any project/filter (Siddharth Teotia)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2968">CALCITE-2968</a>] New <code class="highlighter-rouge">AntiJoin</code> relational expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2721">CALCITE-2721</a>] Support parsing record-type [DOT] member-functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3005">CALCITE-3005</a>] Implement string functions: <code class="highlighter-rouge">LEFT</code>, <code class="highlighter-rouge">RIGHT</code> (xuqianjin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2812">CALCITE-2812</a>] Add algebraic operators to allow expressing recursive queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2913">CALCITE-2913</a>] Adapter for Apache Kafka (Mingmin Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3084">CALCITE-3084</a>] Implement JDBC string functions: <code class="highlighter-rouge">ASCII</code>, <code class="highlighter-rouge">REPEAT</code>, <code class="highlighter-rouge">SPACE</code>, <code class="highlighter-rouge">SOUNDEX</code>, <code class="highlighter-rouge">DIFFERENC</code> (pingle wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2985">CALCITE-2985</a>] Implement <code class="highlighter-rouge">JSON_STORAGE_SIZE</code> function (xuqianjin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2601">CALCITE-2601</a>] Add <code class="highlighter-rouge">REVERSE</code> function (pingle wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2712">CALCITE-2712</a>] Add rule to remove null-generating side of a Join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2965">CALCITE-2965</a>] Implement string functions: <code class="highlighter-rouge">REPEAT</code>, <code class="highlighter-rouge">SPACE</code>, <code class="highlighter-rouge">SOUNDEX</code>, <code class="highlighter-rouge">DIFFERENCE</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2975">CALCITE-2975</a>] Implement <code class="highlighter-rouge">JSON_REMOVE</code> function (xuqianjin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2933">CALCITE-2933</a>] Add timestamp extract for casts from timestamp type to other types</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3011">CALCITE-3011</a>] Support left and right outer joins with <code class="highlighter-rouge">AggregateJoinTransposeRule</code> (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2427">CALCITE-2427</a>] Allow sub-queries in DML statements (Pressenna Sockalingasamy)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2914">CALCITE-2914</a>] Add a new statistic provider, to improve how <code class="highlighter-rouge">LatticeSuggester</code> deduces foreign keys</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2754">CALCITE-2754</a>] Implement <code class="highlighter-rouge">LISTAGG</code> function (Sergey Nuyanzin, Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1172">CALCITE-1172</a>] Add rule to flatten two Aggregate operators into one</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2892">CALCITE-2892</a>] Add the <code class="highlighter-rouge">JSON_KEYS</code> function (xuqianjin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-883">CALCITE-883</a>] Support <code class="highlighter-rouge">RESPECT NULLS</code>, <code class="highlighter-rouge">IGNORE NULLS</code> option for <code class="highlighter-rouge">LEAD</code>, <code class="highlighter-rouge">LAG</code>, <code class="highlighter-rouge">FIRST_VALUE</code>, <code class="highlighter-rouge">LAST_VALUE</code>, <code class="highlighter-rouge">NTH_VALUE</code> functions (Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2920">CALCITE-2920</a>] In <code class="highlighter-rouge">RelBuilder</code>, add <code class="highlighter-rouge">antiJoin</code> method (Ruben Quesada Lopez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1515">CALCITE-1515</a>] In <code class="highlighter-rouge">RelBuilder</code>, add <code class="highlighter-rouge">functionScan</code> method to create <code class="highlighter-rouge">TableFunctionScan</code> (Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2658">CALCITE-2658</a>] Add <code class="highlighter-rouge">ExchangeRemoveConstantKeysRule</code> that removes constant keys from <code class="highlighter-rouge">Exchange</code> or <code class="highlighter-rouge">SortExchange</code> (Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2729">CALCITE-2729</a>] Introducing <code class="highlighter-rouge">WindowReduceExpressionsRule</code> (Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2808">CALCITE-2808</a>] Add the <code class="highlighter-rouge">JSON_LENGTH</code> function (xuqianjin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-589">CALCITE-589</a>] Extend <code class="highlighter-rouge">unifyAggregates</code> method to work with Grouping Sets</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2908">CALCITE-2908</a>] Implement SQL <code class="highlighter-rouge">LAST_DAY</code> function (Chunwei Lei)</li>
</ul>
<h4 id="bug-fixes-api-changes-and-minor-enhancements-1">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3119">CALCITE-3119</a>] Deprecate Linq4j <code class="highlighter-rouge">CorrelateJoinType</code> (in favor of <code class="highlighter-rouge">JoinType</code>)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3087">CALCITE-3087</a>] <code class="highlighter-rouge">AggregateOnProjectToAggregateUnifyRule</code> ignores Project incorrectly when its Mapping breaks ordering (DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2744">CALCITE-2744</a>] Remove usage of deprecated API in <code class="highlighter-rouge">MockSqlOperatorTable</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3123">CALCITE-3123</a>] In <code class="highlighter-rouge">RelBuilder</code>, eliminate duplicate aggregate calls</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3116">CALCITE-3116</a>] Upgrade to Avatica 1.15</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2744">CALCITE-2744</a>] <code class="highlighter-rouge">RelDecorrelator</code> use wrong output map for <code class="highlighter-rouge">LogicalAggregate</code> decorrelate (godfreyhe and Danny Chan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2804">CALCITE-2804</a>] Fix casting to timestamps in Druid</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3107">CALCITE-3107</a>] Upgrade commons-dbcp2 from 2.5.0 to 2.6.0 (Fokko Driesprong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3106">CALCITE-3106</a>] Upgrade commons-pool2 from 2.6.0 to 2.6.2 (Fokko Driesprong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2944">CALCITE-2944</a>] Deprecate Aggregate indicator and remove fields where possible</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3098">CALCITE-3098</a>] Upgrade SQLLine to 1.8.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2742">CALCITE-2742</a>] Read values of <code class="highlighter-rouge">USER</code> and <code class="highlighter-rouge">SYSTEM_USER</code> variables from <code class="highlighter-rouge">DataContext</code> (Siddharth Teotia, Jacques Nadeau)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3082">CALCITE-3082</a>] Fix NPE in <code class="highlighter-rouge">SqlUtil#getSelectListItem</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3093">CALCITE-3093</a>] Remove JDBC connection calls from <code class="highlighter-rouge">PlannerImpl</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3095">CALCITE-3095</a>] Add several system properties to control enabling/disabling of rules and traits</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2696">CALCITE-2696</a>] Improve design of join-like relational expressions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3097">CALCITE-3097</a>] GROUPING SETS breaks on sets of size &gt; 1 due to precedence issues (Steven Talbot)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3022">CALCITE-3022</a>] Babel: Various SQL parsing issues</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3047">CALCITE-3047</a>] In JDBC adapter, expose multiple schemas of the back-end database</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3048">CALCITE-3048</a>] Improve how JDBC adapter deduces current schema on Redshift</li>
<li>Javadoc typos (Wenhui Tang, Muhammad Gelbana)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3096">CALCITE-3096</a>] In <code class="highlighter-rouge">RelBuilder</code>, make alias method idempotent</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3055">CALCITE-3055</a>] Use pair of <code class="highlighter-rouge">relNode</code>’s <code class="highlighter-rouge">rowType</code> and digest as unique key for cache in <code class="highlighter-rouge">RelOptPlanner</code> (KazydubB)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3077">CALCITE-3077</a>] Rewrite <code class="highlighter-rouge">CUBE</code>&amp;<code class="highlighter-rouge">ROLLUP</code> queries in <code class="highlighter-rouge">SparkSqlDialect</code> (DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3090">CALCITE-3090</a>] Remove Central configuration</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2807">CALCITE-2807</a>] Fix <code class="highlighter-rouge">IS NOT DISTINCT FROM</code> expression identification in <code class="highlighter-rouge">RelOptUtil#pushDownJoinConditions</code>()</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3050">CALCITE-3050</a>] Integrate <code class="highlighter-rouge">SqlDialect</code> and <code class="highlighter-rouge">SqlParser.Config</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3023">CALCITE-3023</a>] Upgrade elastic search to 7.x (Takako Shimamoto)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3067">CALCITE-3067</a>] Splunk adapter cannot parse right session keys from Splunk 7.2 (Shawn Chen)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3076">CALCITE-3076</a>] <code class="highlighter-rouge">AggregateJoinTransposeRule</code> throws error for unique under aggregate keys when generating merged calls</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3068">CALCITE-3068</a>] <code class="highlighter-rouge">testSubprogram()</code> does not test whether subprogram gets re-executed</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3072">CALCITE-3072</a>] Generate right SQL for <code class="highlighter-rouge">FLOOR&amp;SUBSTRING</code> functions in <code class="highlighter-rouge">SparkSqlDialect</code> (DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3074">CALCITE-3074</a>] Move MySQL’s JSON operators to <code class="highlighter-rouge">SqlLibraryOperators</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3062">CALCITE-3062</a>] Do not populate <code class="highlighter-rouge">provenanceMap</code> if not debug</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2282">CALCITE-2282</a>] Remove sql operator table from parser</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3052">CALCITE-3052</a>] Error while applying rule <code class="highlighter-rouge">MaterializedViewAggregateRule</code>(Project-Aggregate): <code class="highlighter-rouge">ArrayIndexOutOfBoundsException</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3066">CALCITE-3066</a>] <code class="highlighter-rouge">RelToSqlConverter</code> may incorrectly throw an <code class="highlighter-rouge">AssertionError</code> for some decimal literals</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3028">CALCITE-3028</a>] Support FULL OUTER JOIN with <code class="highlighter-rouge">AggregateJoinTransposeRule</code> (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3017">CALCITE-3017</a>] Improve null handling of <code class="highlighter-rouge">JsonValueExpressionOperator</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2936">CALCITE-2936</a>] Simplify EXISTS or NOT EXISTS sub-query that has “GROUP BY ()”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2803">CALCITE-2803</a>] <code class="highlighter-rouge">ProjectTransposeJoinRule</code> messes INDF expressions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3061">CALCITE-3061</a>] Query with WITH clause fails when alias is the same as the table with rolled up column</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3017">CALCITE-3017</a>] Re-organize how we represent built-in operators that are not in the standard operator table</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3056">CALCITE-3056</a>] Elasticsearch adapter. Invalid result with cast function on raw queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3046">CALCITE-3046</a>] <code class="highlighter-rouge">CompileException</code> when inserting casted value of composited user defined type into table</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3054">CALCITE-3054</a>] Elasticsearch adapter. Avoid scripting for simple projections</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3039">CALCITE-3039</a>] In Interpreter, min() incorrectly returns maximum double value (dijkspicy)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3049">CALCITE-3049</a>] When simplifying “IS NULL” and “IS NOT NULL”, simplify the operand first</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3003">CALCITE-3003</a>] <code class="highlighter-rouge">AssertionError</code> when GROUP BY nested field (Will Yu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3012">CALCITE-3012</a>] Column uniqueness metadata provider may return wrong result for <code class="highlighter-rouge">FULL OUTER JOIN</code> operator (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3045">CALCITE-3045</a>] <code class="highlighter-rouge">NullPointerException</code> when casting null literal to composite user defined type</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3030">CALCITE-3030</a>] <code class="highlighter-rouge">SqlParseException</code> when using component identifier for setting in merge statements (Danny Chan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3029">CALCITE-3029</a>] Java-oriented field type is wrongly forced to be NOT NULL after being converted to SQL-oriented</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2292">CALCITE-2292</a>] Query result is wrong when table is implemented with <code class="highlighter-rouge">FilterableTable</code> and the sql has multiple where conditions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2998">CALCITE-2998</a>] <code class="highlighter-rouge">RexCopier</code> should support all rex types (Chunwei Lei, Alexander Shilov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2982">CALCITE-2982</a>] <code class="highlighter-rouge">SqlItemOperator</code> should throw understandable exception message for incorrect operand type (pengzhiwei)</li>
<li>Revert “[<a href="https://issues.apache.org/jira/browse/CALCITE-3021">CALCITE-3021</a>] <code class="highlighter-rouge">ArrayEqualityComparer</code> should use <code class="highlighter-rouge">Arrays#deepEquals</code>/<code class="highlighter-rouge">deepHashCode</code> instead of <code class="highlighter-rouge">Arrays#equals</code>/<code class="highlighter-rouge">hashCode</code> (Ruben Quesada Lopez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3021">CALCITE-3021</a>] <code class="highlighter-rouge">ArrayEqualityComparer</code> should use <code class="highlighter-rouge">Arrays#deepEquals</code>/<code class="highlighter-rouge">deepHashCode</code> instead of <code class="highlighter-rouge">Arrays#equals</code>/<code class="highlighter-rouge">hashCode</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2453">CALCITE-2453</a>] Parse list of SQL statements separated with a semicolon (Chunwei Lei, charbel yazbeck)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3004">CALCITE-3004</a>] <code class="highlighter-rouge">RexOver</code> is incorrectly pushed down in <code class="highlighter-rouge">ProjectSetOpTransposeRule</code> and <code class="highlighter-rouge">ProjectCorrelateTransposeRule</code> (Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3001">CALCITE-3001</a>] Upgrade to Apache Druid 0.14.0-incubating</li>
<li>Following [<a href="https://issues.apache.org/jira/browse/CALCITE-3010">CALCITE-3010</a>], remove redundant non-reserved keyword definitions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2993">CALCITE-2993</a>] <code class="highlighter-rouge">ParseException</code> may be thrown for legal SQL queries due to incorrect “LOOKAHEAD(1)” hints</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3010">CALCITE-3010</a>] In SQL parser, move <code class="highlighter-rouge">JsonValueExpression</code> into Expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3009">CALCITE-3009</a>] <code class="highlighter-rouge">DiffRepository</code> should ensure that XML resource file does not contain duplicate test names</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2986">CALCITE-2986</a>] Wrong results with <code class="highlighter-rouge">= ANY</code> sub-query (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2962">CALCITE-2962</a>] <code class="highlighter-rouge">RelStructuredTypeFlattener</code> generates wrong types for nested column when <code class="highlighter-rouge">flattenProjection</code> (Will Yu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3007">CALCITE-3007</a>] Type mismatch for <code class="highlighter-rouge">ANY</code> sub-query in project (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2865">CALCITE-2865</a>] <code class="highlighter-rouge">FilterProjectTransposeRule</code> generates wrong <code class="highlighter-rouge">traitSet</code> when <code class="highlighter-rouge">copyFilter</code>/<code class="highlighter-rouge">Project</code> is true (Ruben Quesada Lopez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2343">CALCITE-2343</a>] <code class="highlighter-rouge">PushProjector</code> with OVER expression causes infinite loop (Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2994">CALCITE-2994</a>] Least restrictive type among structs does not consider nullability</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2991">CALCITE-2991</a>] <code class="highlighter-rouge">getMaxRowCount</code> should return 1 for an Aggregate with constant keys (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1338">CALCITE-1338</a>] <code class="highlighter-rouge">JoinProjectTransposeRule</code> should not pull a literal up through the null-generating side of a join (Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2977">CALCITE-2977</a>] Exception is not thrown when there are ambiguous field in select list</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2739">CALCITE-2739</a>] NPE is thrown if the DEFINE statement contains IN in <code class="highlighter-rouge">MATCH_RECOGNIZE</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-896">CALCITE-896</a>] Remove Aggregate if grouping columns are unique and all functions are splittable</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2456">CALCITE-2456</a>] <code class="highlighter-rouge">VolcanoRuleCall</code> doesn’t match unordered child operand when the operand is not the first operand. <code class="highlighter-rouge">PruneEmptyRules</code> <code class="highlighter-rouge">UNION</code> and <code class="highlighter-rouge">MINUS</code> with empty inputs cause infinite cycle. (Zuozhi Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2847">CALCITE-2847</a>] Optimize global LOOKAHEAD for SQL parsers</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2976">CALCITE-2976</a>] Improve materialized view rewriting coverage with disjunctive predicates</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2954">CALCITE-2954</a>] <code class="highlighter-rouge">SubQueryJoinRemoveRule</code> and <code class="highlighter-rouge">SubQueryProjectRemoveRule</code> passing on empty set instead of set of correlation id (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2930">CALCITE-2930</a>] <code class="highlighter-rouge">IllegalStateException</code> when <code class="highlighter-rouge">FilterCorrelateRule</code> matches a SEMI or ANTI Correlate (Ruben Quesada Lopez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2004">CALCITE-2004</a>] Push join predicate down into inner relation for lateral join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2820">CALCITE-2820</a>] Avoid reducing certain aggregate functions when it is not necessary (Siddharth Teotia)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2928">CALCITE-2928</a>] When resolving user-defined functions (UDFs), use the case-sensitivity of the current connection (Danny Chan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2900">CALCITE-2900</a>] <code class="highlighter-rouge">RelStructuredTypeFlattener</code> generates wrong types on nested columns (Will Yu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2941">CALCITE-2941</a>] <code class="highlighter-rouge">EnumerableLimitRule</code> on Sort with no collation creates <code class="highlighter-rouge">EnumerableLimit</code> with wrong <code class="highlighter-rouge">traitSet</code> and <code class="highlighter-rouge">cluster</code> (Ruben Quesada Lopez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2909">CALCITE-2909</a>] Optimize Enumerable <code class="highlighter-rouge">SemiJoin</code> with lazy computation of <code class="highlighter-rouge">innerLookup</code> (Ruben Quesada Lopez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2903">CALCITE-2903</a>] Exception thrown when decorrelating query with <code class="highlighter-rouge">TEMPORAL TABLE</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2958">CALCITE-2958</a>] Upgrade SQLLine to 1.7.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2796">CALCITE-2796</a>] JDBC adapter fix for <code class="highlighter-rouge">ROLLUP</code> on MySQL 5</li>
<li>In <code class="highlighter-rouge">RelFieldCollation</code>, add a <code class="highlighter-rouge">withX</code> copy method</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2953">CALCITE-2953</a>] <code class="highlighter-rouge">LatticeTest.testTileAlgorithm2</code> and <code class="highlighter-rouge">LatticeTest.testTileAlgorithm3</code> fail intermittently</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-574">CALCITE-574</a>] Remove <code class="highlighter-rouge">org.apache.calcite.util.Bug.CALCITE_461_FIXED</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2951">CALCITE-2951</a>] Support decorrelating a sub-query that has aggregate with grouping sets (Haisheng Yuan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2946">CALCITE-2946</a>] <code class="highlighter-rouge">RelBuilder</code> wrongly skips creation of Aggregate that prunes columns if input produces one row at most</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2942">CALCITE-2943</a>] Materialized view rewriting logic calls <code class="highlighter-rouge">getApplicableMaterializations</code> each time the rule is triggered</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2942">CALCITE-2942</a>] Materialized view rewriting logic instantiates <code class="highlighter-rouge">RelMetadataQuery</code> each time the rule is triggered</li>
</ul>
<h4 id="build-and-test-suite-1">Build and test suite</h4>
<ul>
<li>Fix test exception caused by slightly different error message from regex in JDK 13</li>
<li>Following [<a href="https://issues.apache.org/jira/browse/CALCITE-2812">CALCITE-2812</a>] Disable parallel execution of parameterized test to avoid hanging</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-35">CALCITE-35</a>] More test cases to guard against providing a broken fix for parenthesized join (Muhammad Gelbana)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3034">CALCITE-3034</a>] CSV test case description does not match it’s code logic (FaxianZhao)</li>
<li>Mongo adapter. Mongo checker validates only first line of the Bson query in tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3053">CALCITE-3053</a>] Add a test to ensure that all functions are documented in the SQL reference</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2961">CALCITE-2961</a>] Enable Travis to test against JDK 13</li>
</ul>
<h4 id="web-site-and-documentation-1">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2952">CALCITE-2952</a>] Document JDK 12 support</li>
<li>Site: Add Danny Chan as committer</li>
<li>Site: Improve contribution guidelines for JIRA</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2846">CALCITE-2846</a>] Document Oracle-specific functions, such as <code class="highlighter-rouge">NVL</code> and <code class="highlighter-rouge">LTRIM</code>, in the SQL reference</li>
<li>Site: Add new committers and PMC (Chunwei Lei, Ruben Quesada Lopez, Zhiwei Peng and Stamatis Zampetakis)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3006">CALCITE-3006</a>] Example code on site cannot compile (Chunwei Lei)</li>
<li>Site: Add guidelines for JIRA’s fix version field</li>
<li>Site: Update content of “Not implemented” since JSON_LENGH has already been added</li>
<li>Site: Improve documentation for MySQL-specific JSON operators</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2927">CALCITE-2927</a>] The Javadoc and implement of <code class="highlighter-rouge">RuleQueue.computeImportance()</code> is inconsistent (Meng Wang)</li>
<li>Update instructions for publishing site; we previously used subversion, now we use git</li>
<li>Site: Add Alibaba MaxCompute to powered-by page</li>
<li>Site: Add new committers (Haisheng Yuan, Hongze Zhang and Stamatis Zampetakis)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2952">CALCITE-2952</a>] Add JDK 12 as tested to 1.19.0 history</li>
</ul>
<h2 id="v1-19-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.19.0">1.19.0</a> / 2019-03-25</h2>
<p>This release comes three months after 1.18.0. It includes more than 80 resolved
issues, comprising of a few new features as well as general improvements
and bug-fixes. Among others, there have been significant improvements in JSON
query support.</p>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 8, 9, 10, 11, 12 and OpenJDK 8, 9, 10, 11, 12;
Guava versions 19.0 to 27.1-jre;
Druid version 0.11.0;
other software versions as specified in <code class="highlighter-rouge">pom.xml</code>.</p>
<h4 id="new-features-2">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1912">CALCITE-1912</a>]
Support <code class="highlighter-rouge">FOR SYSTEM_TIME AS OF</code> in regular queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2786">CALCITE-2786</a>]
Add order by clause support for <code class="highlighter-rouge">JSON_ARRAYAGG</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2791">CALCITE-2791</a>]
Add the <code class="highlighter-rouge">JSON_TYPE</code> function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2864">CALCITE-2864</a>]
Add the <code class="highlighter-rouge">JSON_DEPTH</code> function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2881">CALCITE-2881</a>]
Add the <code class="highlighter-rouge">JSON_PRETTY</code> function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2770">CALCITE-2770</a>]
Add bitwise aggregate functions <code class="highlighter-rouge">BIT_AND</code>, <code class="highlighter-rouge">BIT_OR</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2799">CALCITE-2799</a>]
Allow alias in <code class="highlighter-rouge">HAVING</code> clause for aggregate functions</li>
</ul>
<h4 id="bug-fixes-api-changes-and-minor-enhancements-2">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1513">CALCITE-1513</a>]
Correlated <code class="highlighter-rouge">NOT IN</code> query throws <code class="highlighter-rouge">AssertionError</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1726">CALCITE-1726</a>]
Sub-query in <code class="highlighter-rouge">FILTER</code> is left untransformed</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2249">CALCITE-2249</a>]
<code class="highlighter-rouge">AggregateJoinTransposeRule</code> generates non-equivalent nodes if <code class="highlighter-rouge">Aggregate</code>
contains a <code class="highlighter-rouge">DISTINCT</code> aggregate function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2288">CALCITE-2288</a>]
Type assertion error when reducing partially-constant expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2290">CALCITE-2290</a>]
Type mismatch during flattening</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2301">CALCITE-2301</a>]
JDBC adapter: use query timeout from the top-level statement</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2338">CALCITE-2338</a>]
Make simplification API more conservative</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2344">CALCITE-2344</a>]
Avoid inferring <code class="highlighter-rouge">$0 = null</code> predicate from <code class="highlighter-rouge">$0 IS NULL</code> when <code class="highlighter-rouge">$0</code> is not
nullable</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2375">CALCITE-2375</a>]
<code class="highlighter-rouge">EnumerableDefaults.join_()</code> leaks connections</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2437">CALCITE-2437</a>]
<code class="highlighter-rouge">FilterMultiJoinMergeRule</code> doesn’t combine postFilterCondition</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2454">CALCITE-2454</a>]
Avoid treating <code class="highlighter-rouge">Project(x=1)</code> and <code class="highlighter-rouge">Project(x=1)</code> equal when the type of <code class="highlighter-rouge">1</code> is
<code class="highlighter-rouge">int</code> in the first rel and <code class="highlighter-rouge">long</code> in the second</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2463">CALCITE-2463</a>]
Silence ERROR logs from <code class="highlighter-rouge">CalciteException</code>, <code class="highlighter-rouge">SqlValidatorException</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2464">CALCITE-2464</a>]
Allow to set nullability for columns of structured types</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2471">CALCITE-2471</a>]
<code class="highlighter-rouge">RelNode</code> description includes all tree when recomputed</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2554">CALCITE-2554</a>]
Enrich enumerable join operators with order-preserving information</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2582">CALCITE-2582</a>]
<code class="highlighter-rouge">FilterProjectTransposeRule</code> does not always simplify the new filter condition</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2599">CALCITE-2599</a>]
Support <code class="highlighter-rouge">ASCII(string)</code> in <code class="highlighter-rouge">SqlFunctions</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2621">CALCITE-2621</a>]
Add rule to execute semi-joins with correlation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2623">CALCITE-2623</a>]
Add specific translation for <code class="highlighter-rouge">POSITION</code>, <code class="highlighter-rouge">MOD</code> and set operators in BigQuery
and Hive SQL dialects</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2625">CALCITE-2625</a>]
<code class="highlighter-rouge">ROW_NUMBER</code>, <code class="highlighter-rouge">RANK</code> generating invalid SQL</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2629">CALCITE-2629</a>]
Unnecessary call to <code class="highlighter-rouge">CatalogReader#getAllSchemaObjects</code> in <code class="highlighter-rouge">CatalogScope</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2635">CALCITE-2635</a>]
<code class="highlighter-rouge">getMonotonocity</code> is slow on wide tables</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2674">CALCITE-2674</a>]
<code class="highlighter-rouge">SqlIdentifier</code> same name with built-in function but with escape character
should be still resolved as an identifier</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2677">CALCITE-2677</a>]
Struct types with one field are not mapped correctly to Java classes</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2703">CALCITE-2703</a>]
Reduce code generation and class loading overhead when executing queries in
<code class="highlighter-rouge">EnumerableConvention</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2722">CALCITE-2722</a>]
<code class="highlighter-rouge">SqlImplementor.createLeftCall</code> method throws <code class="highlighter-rouge">StackOverflowError</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2727">CALCITE-2727</a>]
Materialized view rewriting bails out incorrectly when a view does not contain
any table reference</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2733">CALCITE-2733</a>]
Use <code class="highlighter-rouge">catalog</code> and <code class="highlighter-rouge">schema</code> from JDBC connect string to retrieve tables if specified</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2750">CALCITE-2750</a>]
<code class="highlighter-rouge">PI</code> operator is incorrectly identified as dynamic function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2755">CALCITE-2755</a>]
Expose document <code class="highlighter-rouge">_id</code> field when querying ElasticSearch</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2762">CALCITE-2762</a>]
Quidem env variable is always false if its name is separated by dot(“.”)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2778">CALCITE-2778</a>]
Remove <code class="highlighter-rouge">ClosableAllocation</code>, <code class="highlighter-rouge">ClosableAllocationOwner</code>,
<code class="highlighter-rouge">CompoundClosableAllocation</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2782">CALCITE-2782</a>]
Use server time zone by default if time zone is not specified in the user connection string</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2783">CALCITE-2783</a>]
“COALESCE(s, TRUE) = TRUE” and “(s OR s IS UNKNOWN) = TRUE” causes
<code class="highlighter-rouge">NullPointerException</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2785">CALCITE-2785</a>]
In <code class="highlighter-rouge">EnumerableAggregate</code>, wrong result produced If there are sorted aggregates
and non-sorted aggregates at the same time</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2787">CALCITE-2787</a>]
JSON aggregate calls with different null clause get incorrectly merged while
converting from SQL to relational algebra</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2790">CALCITE-2790</a>]
<code class="highlighter-rouge">AggregateJoinTransposeRule</code> incorrectly pushes down distinct count into join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2797">CALCITE-2797</a>]
Support <code class="highlighter-rouge">APPROX_COUNT_DISTINCT</code> aggregate function in ElasticSearch</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2798">CALCITE-2798</a>]
Optimizer should remove <code class="highlighter-rouge">ORDER BY</code> in sub-query, provided it has no <code class="highlighter-rouge">LIMIT</code> or
<code class="highlighter-rouge">OFFSET</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2802">CALCITE-2802</a>]
In Druid adapter, use of range conditions like <code class="highlighter-rouge">'2010-01-01' &lt; TIMESTAMP</code> leads
to incorrect results</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2805">CALCITE-2805</a>]
Can’t specify port with Cassandra adapter in connection string</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2806">CALCITE-2806</a>]
Cassandra adapter doesn’t allow uppercase characters in table names</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2811">CALCITE-2811</a>]
Update version of Cassandra driver</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2814">CALCITE-2814</a>]
In ElasticSearch adapter, fix <code class="highlighter-rouge">GROUP BY</code> when using raw item access
(e.g. <code class="highlighter-rouge">_MAP*</code> [‘a.b.c’])</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2817">CALCITE-2817</a>]
Make <code class="highlighter-rouge">CannotPlanException</code> more informative</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2827">CALCITE-2827</a>]
Allow <code class="highlighter-rouge">CONVENTION.NONE</code> planning with <code class="highlighter-rouge">VolcanoPlanner</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2838">CALCITE-2838</a>]
Simplification: Remove redundant <code class="highlighter-rouge">IS TRUE</code> checks</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2839">CALCITE-2839</a>]
Simplify comparisons against <code class="highlighter-rouge">BOOLEAN</code> literals</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2840">CALCITE-2840</a>]
<code class="highlighter-rouge">RexNode</code> simplification logic should use more specific <code class="highlighter-rouge">UnknownAs</code> modes</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2841">CALCITE-2841</a>]
Simplification: push negation into Case expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2842">CALCITE-2842</a>]
Computing <code class="highlighter-rouge">RexCall</code> digest containing <code class="highlighter-rouge">IN</code> expressions leads to exceptions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2848">CALCITE-2848</a>]
Simplifying a CASE statement's first branch should ignore its safety</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2850">CALCITE-2850</a>]
Geode adapter: support <code class="highlighter-rouge">BOOLEAN</code> column as filter operand</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2852">CALCITE-2852</a>]
RexNode simplification does not traverse unknown functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2856">CALCITE-2856</a>]
Emulating <code class="highlighter-rouge">COMMA JOIN</code> as <code class="highlighter-rouge">CROSS JOIN</code> for <code class="highlighter-rouge">SparkSqlDialect</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2858">CALCITE-2858</a>]
Improvements in JSON writer and reader for plans</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2859">CALCITE-2859</a>]
Centralize Calcite system properties</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2863">CALCITE-2863</a>]
In ElasticSearch adapter, query fails when filtering directly on <code class="highlighter-rouge">_MAP</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2887">CALCITE-2887</a>]
Improve performance of <code class="highlighter-rouge">RexLiteral.toJavaString()</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2897">CALCITE-2897</a>]
Reduce expensive calls to <code class="highlighter-rouge">Class.getSimpleName()</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2899">CALCITE-2899</a>]
Deprecate <code class="highlighter-rouge">RelTraitPropagationVisitor</code> and remove its usages</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2890">CALCITE-2890</a>]
In ElasticSearch adapter, combine <code class="highlighter-rouge">any_value</code> with other aggregation functions
failed</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2891">CALCITE-2891</a>]
Alias suggester failed to suggest name based on original name incrementally</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2894">CALCITE-2894</a>]
<code class="highlighter-rouge">RelMdPercentageOriginalRows</code> throws <code class="highlighter-rouge">NullPointerException</code> when explaining
plan with all attributes</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2902">CALCITE-2902</a>]
Improve performance of <code class="highlighter-rouge">AbstractRelNode.computeDigest()</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2929">CALCITE-2929</a>]
Simplification of <code class="highlighter-rouge">IS NULL</code> checks are incorrectly assuming that <code class="highlighter-rouge">CAST</code>s are
possible</li>
<li>Improve Graphviz dump in <code class="highlighter-rouge">CannotPlanException</code>: make boxes shorter, print
composite traits if they were simplified</li>
<li>Make <code class="highlighter-rouge">SparkHandlerImpl</code> singleton thread-safe</li>
<li>Remove usage of <code class="highlighter-rouge">userConfig</code> attribute in ElasticSearch adapter</li>
<li>In ElasticSearch adapter, remove dead (or unnecessary) code</li>
</ul>
<h4 id="build-and-test-suite-2">Build and test suite</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2732">CALCITE-2732</a>]
Upgrade PostgreSQL driver version</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2759">CALCITE-2759</a>]
Update <code class="highlighter-rouge">maven-remote-resources-plugin</code> to 1.6.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2765">CALCITE-2765</a>]
Bump Janino compiler dependency to 3.0.11</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2768">CALCITE-2768</a>]
<code class="highlighter-rouge">PlannerTest</code> ignores top-level <code class="highlighter-rouge">ORDER BY</code> clause (<code class="highlighter-rouge">RootRel.collation</code>)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2788">CALCITE-2788</a>]
Building error for sub-project of calcite on <code class="highlighter-rouge">maven-checkstyle-plugin</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2779">CALCITE-2779</a>]
Remove references to <code class="highlighter-rouge">StringBuffer</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2875">CALCITE-2875</a>]
Some misspellings in <code class="highlighter-rouge">RelOptListener</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2895">CALCITE-2895</a>]
Some arguments are undocumented in constructor of <code class="highlighter-rouge">LogicalAggregate</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2836">CALCITE-2836</a>]
Remove <code class="highlighter-rouge">maven-compiler-plugin</code> from <code class="highlighter-rouge">calcite-plus</code> module <code class="highlighter-rouge">pom.xml</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2878">CALCITE-2878</a>]
Avoid <code class="highlighter-rouge">throw new RuntimeException(e)</code> in tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2916">CALCITE-2916</a>]
Upgrade jackson to 2.9.8</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2925">CALCITE-2925</a>]
Exclude <code class="highlighter-rouge">maven-wrapper.jar</code> from source distribution</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2931">CALCITE-2931</a>]
In Mongo adapter, compare Bson (not string) query representation in tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2932">CALCITE-2932</a>]
<code class="highlighter-rouge">DruidAdapterIT</code> regression after 1.17 release</li>
<li>Improve messages for tests based on <code class="highlighter-rouge">CalciteAssert</code></li>
<li>Add JUnit category for extremely slow tests, launch them in a separate Travis job</li>
<li>Fix sqlline by removing redundant slf4j dependency (<code class="highlighter-rouge">log4j-over-slf4j</code>) from
<code class="highlighter-rouge">cassandra-all</code></li>
</ul>
<h4 id="web-site-and-documentation-2">Web site and documentation</h4>
<ul>
<li>Switch from <code class="highlighter-rouge">maven:alpine</code> to <code class="highlighter-rouge">maven</code> image for generating javadoc when
building the site</li>
<li>Update instructions for pushing to the git site repository</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2734">CALCITE-2734</a>]
Site: Update mongo documentation to reflect filename changes</li>
<li>Site: Add commit message guidelines for contributors (Stamatis Zampetakis)</li>
<li>Site: Add Zoltan Haindrich as committer</li>
<li>Site: Elastic query example on <code class="highlighter-rouge">_MAP</code></li>
<li>Site: fix JSON syntax error at file adapter page (Marc Prud’hommeaux)</li>
<li>Site: fix typo at the main page (Marc Prud’hommeaux)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2436">CALCITE-2436</a>]
Steps for building site under Windows; fix misprint in SQL Language page</li>
<li>Site: News item for release 1.18</li>
<li>Site: Rename MapD to OmniSci, and update logos</li>
<li>Update site for new repository</li>
<li>Update git URL</li>
<li>Site: ElasticAdapter mention supported versions (and support schedule)</li>
<li>Site: Improve documentation for ElasticSearch Adapter</li>
<li>Site: Update PMC chair</li>
<li>Update year in NOTICE</li>
</ul>
<h2 id="v1-18-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.18.0">1.18.0</a> / 2018-12-21</h2>
<p>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, the SQL advisor,
and the Elasticsearch and Apache Geode adapters.</p>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
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 <code class="highlighter-rouge">pom.xml</code>.</p>
<h4 id="new-features-3">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2662">CALCITE-2662</a>]
In <code class="highlighter-rouge">Planner</code>, allow parsing a stream (<code class="highlighter-rouge">Reader</code>) instead of a <code class="highlighter-rouge">String</code>
(Enrico Olivelli)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2699">CALCITE-2699</a>]
<code class="highlighter-rouge">TIMESTAMPADD</code> function now applies to <code class="highlighter-rouge">DATE</code> and <code class="highlighter-rouge">TIME</code> as well as <code class="highlighter-rouge">TIMESTAMP</code>
(xuqianjin)</li>
<li>[<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)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2663">CALCITE-2663</a>]
In DDL parser, add <code class="highlighter-rouge">CREATE</code> and <code class="highlighter-rouge">DROP FUNCTION</code> (ambition119)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2266">CALCITE-2266</a>]
Implement SQL:2016 JSON functions: <code class="highlighter-rouge">JSON_EXISTS</code>, <code class="highlighter-rouge">JSON_VALUE</code>, <code class="highlighter-rouge">JSON_QUERY</code>,
<code class="highlighter-rouge">JSON_OBJECT</code>, <code class="highlighter-rouge">JSON_OBJECTAGG</code>, <code class="highlighter-rouge">JSON_ARRAY</code>, <code class="highlighter-rouge">JSON_ARRAYAGG</code>, <code class="highlighter-rouge">x IS JSON</code>
predicate (Hongze Zhang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2224">CALCITE-2224</a>]
Support <code class="highlighter-rouge">WITHIN GROUP</code> clause for aggregate functions (Hongze Zhang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2405">CALCITE-2405</a>]
In Babel parser, make 400 reserved keywords including <code class="highlighter-rouge">YEAR</code>, <code class="highlighter-rouge">SECOND</code>, <code class="highlighter-rouge">DESC</code>
non-reserved</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1870">CALCITE-1870</a>]
Lattice suggester</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2571">CALCITE-2571</a>]
<code class="highlighter-rouge">TRIM</code> function now trims more than one character (Andrew Pilloud)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2112">CALCITE-2112</a>]
Add Maven wrapper for Calcite (Ratandeep S. Ratti)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1026">CALCITE-1026</a>]
Allow models in YAML format</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2402">CALCITE-2402</a>]
Implement regression functions: <code class="highlighter-rouge">COVAR_POP</code>, <code class="highlighter-rouge">COVAR_SAMP</code>, <code class="highlighter-rouge">REGR_COUNT</code>,
<code class="highlighter-rouge">REGR_SXX</code>, <code class="highlighter-rouge">REGR_SYY</code></li>
<li>SQL advisor (<code class="highlighter-rouge">SqlAdvisor</code>):
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2479">CALCITE-2479</a>]
Automatically quote identifiers that look like SQL keywords</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2478">CALCITE-2478</a>]
Purge <code class="highlighter-rouge">from_clause</code> when <code class="highlighter-rouge">_suggest_</code> token is located in one of the
<code class="highlighter-rouge">FROM</code> sub-queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2477">CALCITE-2477</a>]
Scalar sub-queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2476">CALCITE-2476</a>]
Produce hints when sub-query with <code class="highlighter-rouge">*</code> is present in query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2475">CALCITE-2475</a>]
Support <code class="highlighter-rouge">MINUS</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2473">CALCITE-2473</a>]
Support <code class="highlighter-rouge">--</code> comments</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2434">CALCITE-2434</a>]
Hints for nested tables and schemas</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2433">CALCITE-2433</a>]
Configurable quoting characters</li>
</ul>
</li>
<li>Relational algebra builder (<code class="highlighter-rouge">RelBuilder</code>):
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2661">CALCITE-2661</a>]
Add methods for creating <code class="highlighter-rouge">Exchange</code> and <code class="highlighter-rouge">SortExchange</code>
relational expressions (Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2654">CALCITE-2654</a>]
Add a fluent API for building complex aggregate calls</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2441">CALCITE-2441</a>]
<code class="highlighter-rouge">RelBuilder.scan</code> should expand <code class="highlighter-rouge">TranslatableTable</code> and views</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2647">CALCITE-2647</a>]
Add a <code class="highlighter-rouge">groupKey</code> method that assumes only one grouping set</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2470">CALCITE-2470</a>]
<code class="highlighter-rouge">project</code> method should combine expressions if the underlying
node is a <code class="highlighter-rouge">Project</code></li>
</ul>
</li>
<li>Elasticsearch adapter:
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2679">CALCITE-2679</a>]
Implement <code class="highlighter-rouge">DISTINCT</code> and <code class="highlighter-rouge">GROUP BY</code> without aggregate functions (Siyuan Liu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2689">CALCITE-2689</a>]
Allow grouping on non-textual fields like <code class="highlighter-rouge">DATE</code> and <code class="highlighter-rouge">NUMBER</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2651">CALCITE-2651</a>]
Enable scrolling for basic search queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2585">CALCITE-2585</a>]
Support <code class="highlighter-rouge">NOT</code> operator</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2578">CALCITE-2578</a>]
Support <code class="highlighter-rouge">ANY_VALUE</code> aggregate function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2528">CALCITE-2528</a>]
Support <code class="highlighter-rouge">Aggregate</code> (Andrei Sereda)</li>
</ul>
</li>
<li>Apache Geode adapter:
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2709">CALCITE-2709</a>]
Allow filtering on <code class="highlighter-rouge">DATE</code>, <code class="highlighter-rouge">TIME</code>, <code class="highlighter-rouge">TIMESTAMP</code> fields (Sandeep Chada)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2671">CALCITE-2671</a>]
<code class="highlighter-rouge">GeodeFilter</code> now converts multiple <code class="highlighter-rouge">OR</code> predicates (on same attribute) into
a single <code class="highlighter-rouge">IN SET</code> (Sandeep Chada)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2498">CALCITE-2498</a>]
Geode adapter wrongly quotes <code class="highlighter-rouge">BOOLEAN</code> values as strings (Andrei Sereda)</li>
</ul>
</li>
</ul>
<h4 id="bug-fixes-api-changes-and-minor-enhancements-3">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2670">CALCITE-2670</a>]
Combine similar JSON aggregate functions in operator table</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2468">CALCITE-2468</a>]
Validator throws <code class="highlighter-rouge">IndexOutOfBoundsException</code> when trying to infer operand type
from <code class="highlighter-rouge">STRUCT</code> return type (Rong Rong)</li>
<li>[<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)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2684">CALCITE-2684</a>]
<code class="highlighter-rouge">RexBuilder</code> gives <code class="highlighter-rouge">AssertionError</code> when creating integer literal larger than
2<sup>63</sup> (Ruben Quesada Lopez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2719">CALCITE-2719</a>]
In JDBC adapter for MySQL, fix cast to <code class="highlighter-rouge">INTEGER</code> and <code class="highlighter-rouge">BIGINT</code> (Piotr Bojko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2713">CALCITE-2713</a>]
JDBC adapter may generate casts on PostgreSQL for <code class="highlighter-rouge">VARCHAR</code> type exceeding max
length</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2529">CALCITE-2529</a>]
All numbers are in the same type family (Andrew Pilloud)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2701">CALCITE-2701</a>]
Make generated <code class="highlighter-rouge">Baz</code> classes immutable (Stamatis Zampetakis)</li>
<li>[<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)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2720">CALCITE-2720</a>]
<code class="highlighter-rouge">RelMetadataQuery.getTableOrigin</code> throws <code class="highlighter-rouge">IndexOutOfBoundsException</code> if
<code class="highlighter-rouge">RelNode</code> has no columns (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2717">CALCITE-2717</a>]
Use <code class="highlighter-rouge">Interner</code> instead of <code class="highlighter-rouge">LoadingCache</code> to cache traits, and so allow traits
to be garbage-collected (Haisheng Yuan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2542">CALCITE-2542</a>]
In SQL parser, allow <code class="highlighter-rouge">.field</code> to follow any expression, not just tables and
columns (Rong Rong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2637">CALCITE-2637</a>]
In SQL parser, allow prefix ‘-‘ between <code class="highlighter-rouge">BETWEEN</code> and <code class="highlighter-rouge">AND</code> (Qi Yu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2632">CALCITE-2632</a>]
Ensure that <code class="highlighter-rouge">RexNode</code> and its sub-classes implement <code class="highlighter-rouge">hashCode</code> and <code class="highlighter-rouge">equals</code>
methods (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2494">CALCITE-2494</a>]
<code class="highlighter-rouge">RexFieldAccess</code> should implement <code class="highlighter-rouge">equals</code> and <code class="highlighter-rouge">hashCode</code> methods</li>
<li>[<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)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2714">CALCITE-2714</a>]
Make <code class="highlighter-rouge">BasicSqlType</code> immutable, and now <code class="highlighter-rouge">SqlTypeFactory.createWithNullability</code>
can reuse existing type if possible (Ruben Quesada Lopez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2687">CALCITE-2687</a>]
<code class="highlighter-rouge">IS DISTINCT FROM</code> could lead to exceptions in <code class="highlighter-rouge">ReduceExpressionsRule</code>
(Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2673">CALCITE-2673</a>]
<code class="highlighter-rouge">SqlDialect</code> supports pushing of all functions by default</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2675">CALCITE-2675</a>]
Type validation error as <code class="highlighter-rouge">ReduceExpressionsRule</code> fails to preserve type
nullability (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2669">CALCITE-2669</a>]
<code class="highlighter-rouge">RelMdTableReferences</code> should check whether references inferred from input are
null for <code class="highlighter-rouge">Union</code>/<code class="highlighter-rouge">Join</code> operators</li>
<li>Following
[<a href="https://issues.apache.org/jira/browse/CALCITE-2031">CALCITE-2031</a>]
remove incorrect “Not implemented” message</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2668">CALCITE-2668</a>]
Support for left/right outer join in <code class="highlighter-rouge">RelMdExpressionLineage</code></li>
<li>Fix invocation of deprecated constructor of <code class="highlighter-rouge">SqlAggFunction</code> (Hongze Zhang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2652">CALCITE-2652</a>]
<code class="highlighter-rouge">SqlNode</code> to SQL conversion fails if the join condition references a <code class="highlighter-rouge">BOOLEAN</code>
column (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2657">CALCITE-2657</a>]
In <code class="highlighter-rouge">RexShuttle</code>, use <code class="highlighter-rouge">RexCall.clone</code> instead of <code class="highlighter-rouge">new RexCall</code> (Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2605">CALCITE-2605</a>]
Support semi-join via <code class="highlighter-rouge">EnumerableCorrelate</code> (Ruben Quesada Lopez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2605">CALCITE-2605</a>]
Support left outer join via <code class="highlighter-rouge">EnumerableCorrelate</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1174">CALCITE-1174</a>]
When generating SQL, translate <code class="highlighter-rouge">SUM0(x)</code> to <code class="highlighter-rouge">COALESCE(SUM(x), 0)</code></li>
<li><code class="highlighter-rouge">RelBuilder.toString()</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2617">CALCITE-2617</a>]
Add a variant of <code class="highlighter-rouge">FilterProjectTransposeRule</code> that can push down a <code class="highlighter-rouge">Filter</code>
that contains correlated variables (Stamatis Zampetakis)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2638">CALCITE-2638</a>]
Constant reducer should not treat as constant an <code class="highlighter-rouge">RexInputRef</code> that points to a
call to a dynamic or non-deterministic function (Danny Chan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2628">CALCITE-2628</a>]
JDBC adapter throws <code class="highlighter-rouge">NullPointerException</code> while generating <code class="highlighter-rouge">GROUP BY</code> query
for MySQL</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2404">CALCITE-2404</a>]
Implement access to structured-types in enumerable runtime
(Stamatis Zampetakis)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2622">CALCITE-2622</a>]
<code class="highlighter-rouge">RexFieldCollation.toString()</code> method is not deterministic</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2611">CALCITE-2611</a>]
Linq4j code generation failure if one side of an <code class="highlighter-rouge">OR</code> contains <code class="highlighter-rouge">UNKNOWN</code>
(Zoltan Haindrich)</li>
<li>Canonize simple cases for composite traits in trait factory</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2591">CALCITE-2591</a>]
<code class="highlighter-rouge">EnumerableDefaults#mergeJoin</code> should throw error and not return incorrect
results when inputs are not ordered (Enrico Olivelli)</li>
<li>Test case for
[<a href="https://issues.apache.org/jira/browse/CALCITE-2592">CALCITE-2592</a>]
<code class="highlighter-rouge">EnumerableMergeJoin</code> is never taken</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2526">CALCITE-2526</a>]
Add test for <code class="highlighter-rouge">OR</code> with nullable comparisons (pengzhiwei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2413">CALCITE-2413</a>]
Use raw signatures for classes with generics when producing Java code</li>
<li>In Elasticsearch adapter, remove redundant null check in
<code class="highlighter-rouge">CompoundQueryExpression</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2562">CALCITE-2562</a>]
Remove dead code in <code class="highlighter-rouge">StandardConvertletTable#convertDatetimeMinus</code></li>
<li>Avoid <code class="highlighter-rouge">NullPointerException</code> when <code class="highlighter-rouge">FlatList</code> contains null elements</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2561">CALCITE-2561</a>]
Remove dead code in <code class="highlighter-rouge">Lattice</code> constructor</li>
<li>Apply small refactorings to Calcite codebase (Java 5, Java 7, Java 8)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2572">CALCITE-2572</a>]
SQL standard semantics for <code class="highlighter-rouge">SUBSTRING</code> function (Andrew Pilloud)</li>
<li>Remove dead code: <code class="highlighter-rouge">Compatible</code>, <code class="highlighter-rouge">CompatibleGuava11</code></li>
<li>Remove “Now, do something with table” from standard output when implementing
sequences</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2444">CALCITE-2444</a>]
Handle <code class="highlighter-rouge">IN</code> expressions when converting <code class="highlighter-rouge">SqlNode</code> to SQL (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2537">CALCITE-2537</a>]
Use litmus for <code class="highlighter-rouge">VolcanoPlanner#validate</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2546">CALCITE-2546</a>]
Reduce precision of <code class="highlighter-rouge">Profiler</code>’s <code class="highlighter-rouge">surprise</code> and <code class="highlighter-rouge">cardinality</code> attributes to
avoid floating point discrepancies (Alisha Prabhu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2563">CALCITE-2563</a>]
Materialized view rewriting may swap columns in equivalent classes incorrectly</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2551">CALCITE-2551</a>]
<code class="highlighter-rouge">SqlToRelConverter</code> gives <code class="highlighter-rouge">ClassCastException</code> while handling <code class="highlighter-rouge">IN</code> inside
<code class="highlighter-rouge">WHERE NOT CASE</code> (pengzhiwei)</li>
<li>Remove redundant <code class="highlighter-rouge">new</code> expression in constant array creation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2474">CALCITE-2474</a>]
SqlAdvisor: avoid NPE in lookupFromHints where FROM is empty</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2418">CALCITE-2418</a>]
Remove <code class="highlighter-rouge">matchRecognize</code> field of <code class="highlighter-rouge">SqlSelect</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2514">CALCITE-2514</a>]
Add <code class="highlighter-rouge">SqlIdentifier</code> conversion to <code class="highlighter-rouge">ITEM</code> operator for dynamic tables in
<code class="highlighter-rouge">ExtendedExpander</code> (Arina Ielchiieva)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2491">CALCITE-2491</a>]
Refactor <code class="highlighter-rouge">NameSet</code>, <code class="highlighter-rouge">NameMap</code>, and <code class="highlighter-rouge">NameMultimap</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2520">CALCITE-2520</a>]
Make <code class="highlighter-rouge">SparkHandlerImpl#compile</code> silent by default, print code in
<code class="highlighter-rouge">calcite.debug=true</code> mode only</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1026">CALCITE-1026</a>]
Remove unused import</li>
<li>[<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 <code class="highlighter-rouge">Integer.MAX_VALUE</code> (Hongze Zhang)</li>
<li>Support <code class="highlighter-rouge">AND</code>, <code class="highlighter-rouge">OR</code>, <code class="highlighter-rouge">COALESCE</code>, <code class="highlighter-rouge">IS [NOT] DISTINCT</code> in <code class="highlighter-rouge">RexUtil#op</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2495">CALCITE-2495</a>]
Support encoded URLs in <code class="highlighter-rouge">org.apache.calcite.util.Source</code>, and use it for URL
→ File conversion in tests</li>
<li>[<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
<code class="highlighter-rouge">NullPointerException</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2481">CALCITE-2481</a>]
<code class="highlighter-rouge">NameSet</code> assumes lower-case characters have greater codes, which does not hold
for certain characters</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2480">CALCITE-2480</a>]
<code class="highlighter-rouge">NameSet.contains</code> wrongly returns <code class="highlighter-rouge">false</code> when element in set is upper-case
and <code class="highlighter-rouge">seek</code> is lower-case</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2465">CALCITE-2465</a>]
Enable use of materialized views for any planner</li>
<li>[<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)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2447">CALCITE-2447</a>]
<code class="highlighter-rouge">POWER</code>, <code class="highlighter-rouge">ATAN2</code> functions fail with <code class="highlighter-rouge">NoSuchMethodException</code></li>
<li>Typo in <code class="highlighter-rouge">HepPlanner</code> trace message (Dylan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2416">CALCITE-2416</a>]
<code class="highlighter-rouge">AssertionError</code> when determining monotonicity (Alina Ipatina)</li>
<li>Java 8: use <code class="highlighter-rouge">Map.computeIfAbsent</code> when possible</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2431">CALCITE-2431</a>]
<code class="highlighter-rouge">SqlUtil.getAncestry</code> throws <code class="highlighter-rouge">AssertionError</code> when providing completion hints
for sub-schema</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2430">CALCITE-2430</a>]
<code class="highlighter-rouge">RelDataTypeImpl.getFieldList</code> throws <code class="highlighter-rouge">AssertionError</code> when SQL Advisor inspects
non-struct field</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2429">CALCITE-2429</a>]
<code class="highlighter-rouge">SqlValidatorImpl.lookupFieldNamespace</code> throws <code class="highlighter-rouge">NullPointerException</code> when SQL
Advisor observes non-existing field</li>
<li>[<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</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2417">CALCITE-2417</a>]
<code class="highlighter-rouge">RelToSqlConverter</code> throws <code class="highlighter-rouge">ClassCastException</code> with structs (Benoit Hanotte)</li>
<li>Upgrades:
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2716">CALCITE-2716</a>]
Upgrade to Avatica 1.13.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2711">CALCITE-2711</a>]
Upgrade SQLLine to 1.6.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2570">CALCITE-2570</a>]
Upgrade <code class="highlighter-rouge">forbiddenapis</code> to 2.6 for JDK 11 support</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2486">CALCITE-2486</a>]
Upgrade Apache parent POM to version 21</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2467">CALCITE-2467</a>]
Upgrade <code class="highlighter-rouge">owasp-dependency-check</code> maven plugin to 3.3.1</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2559">CALCITE-2559</a>]
Update Checkstyle to 7.8.2</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2497">CALCITE-2497</a>]
Update Janino version to 3.0.9</li>
</ul>
</li>
<li>Expression simplification (<code class="highlighter-rouge">RexSimplify</code>):
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2731">CALCITE-2731</a>]
<code class="highlighter-rouge">RexProgramBuilder</code> makes unsafe simplifications to <code class="highlighter-rouge">CASE</code> expressions (Zoltan
Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2730">CALCITE-2730</a>]
<code class="highlighter-rouge">RelBuilder</code> incorrectly simplifies a <code class="highlighter-rouge">Filter</code> with duplicate conjunction to
empty (Stamatis Zampetakis)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2726">CALCITE-2726</a>]
<code class="highlighter-rouge">ReduceExpressionRule</code> may oversimplify filter conditions containing <code class="highlighter-rouge">NULL</code>
values</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2695">CALCITE-2695</a>]
Simplify casts that are only widening nullability (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2631">CALCITE-2631</a>]
General improvements in simplifying <code class="highlighter-rouge">CASE</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2639">CALCITE-2639</a>]
<code class="highlighter-rouge">FilterReduceExpressionsRule</code> causes <code class="highlighter-rouge">ArithmeticException</code> at execution time</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2620">CALCITE-2620</a>]
Simplify <code class="highlighter-rouge">COALESCE(NULL, x)</code><code class="highlighter-rouge">x</code> (pengzhiwei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1413">CALCITE-1413</a>]
Enhance boolean case statement simplifications (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2615">CALCITE-2615</a>]
When simplifying <code class="highlighter-rouge">NOT-AND-OR</code>, <code class="highlighter-rouge">RexSimplify</code> incorrectly applies predicates
deduced for operands to the same operands (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2604">CALCITE-2604</a>]
When simplifying an expression, say whether an <code class="highlighter-rouge">UNKNOWN</code> value will be
interpreted as is, or as <code class="highlighter-rouge">TRUE</code> or <code class="highlighter-rouge">FALSE</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2438">CALCITE-2438</a>]
Fix wrong results for <code class="highlighter-rouge">IS NOT FALSE(FALSE)</code> (zhiwei.pzw) (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2506">CALCITE-2506</a>]
Simplifying <code class="highlighter-rouge">COALESCE(+ nullInt, +vInt())</code> results in
<code class="highlighter-rouge">AssertionError: result mismatch</code> (pengzhiwei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2580">CALCITE-2580</a>]
Simplifying <code class="highlighter-rouge">COALESCE(NULL &gt; NULL, TRUE)</code> produces wrong result filter
expressions (pengzhiwei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2586">CALCITE-2586</a>]
<code class="highlighter-rouge">CASE</code> with repeated branches gives <code class="highlighter-rouge">AssertionError</code>
(pengzhiwei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2590">CALCITE-2590</a>]
Remove redundant <code class="highlighter-rouge">CAST</code> when operand has exactly the same type as it is casted to</li>
<li>Implement fuzzy generator for <code class="highlighter-rouge">CASE</code> expressions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2556">CALCITE-2556</a>]
Simplify <code class="highlighter-rouge">NOT TRUE</code><code class="highlighter-rouge">FALSE</code>, and <code class="highlighter-rouge">NOT FALSE</code><code class="highlighter-rouge">TRUE</code> (pengzhiwei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2581">CALCITE-2581</a>]
Avoid errors in simplifying <code class="highlighter-rouge">UNKNOWN AND NOT (UNKNOWN OR ...)</code> (pengzhiwei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2527">CALCITE-2527</a>]
Simplify <code class="highlighter-rouge">(c IS NULL) OR (c IS ...)</code> might result in AssertionError: result
mismatch (pengzhiwei)</li>
<li>Display random failure of Rex fuzzer in build logs to inspire further fixes</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2567">CALCITE-2567</a>]
Simplify <code class="highlighter-rouge">IS NULL(NULL)</code> to <code class="highlighter-rouge">TRUE</code> (pengzhiwei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2555">CALCITE-2555</a>]
RexSimplify: Simplify <code class="highlighter-rouge">x &gt;= NULL</code> to <code class="highlighter-rouge">UNKNOWN</code> (pengzhiwei)</li>
<li>[<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</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2469">CALCITE-2469</a>]
Simplify <code class="highlighter-rouge">(NOT x) IS NULL</code><code class="highlighter-rouge">x IS NULL</code> (pengzhiwei);
also, simplify <code class="highlighter-rouge">f(x, y) IS NULL</code><code class="highlighter-rouge">x IS NULL OR y IS NULL</code> if <code class="highlighter-rouge">f</code> is a
strong operator</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2327">CALCITE-2327</a>]
Simplify <code class="highlighter-rouge">AND(x, y, NOT(y))</code><code class="highlighter-rouge">AND(x, null, IS NULL(y))</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2327">CALCITE-2327</a>]
Avoid simplification of <code class="highlighter-rouge">x AND NOT(x)</code> to <code class="highlighter-rouge">FALSE</code> for nullable <code class="highlighter-rouge">x</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2505">CALCITE-2505</a>]
<code class="highlighter-rouge">AssertionError</code> when simplifying <code class="highlighter-rouge">IS [NOT] DISTINCT</code> expressions
(Haisheng Yuan)</li>
</ul>
</li>
</ul>
<h4 id="build-and-test-suite-3">Build and test suite</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2678">CALCITE-2678</a>]
<code class="highlighter-rouge">RelBuilderTest#testRelBuilderToString</code> fails on Windows (Stamatis Zampetakis)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2660">CALCITE-2660</a>]
<code class="highlighter-rouge">OsAdapterTest</code> now checks whether required commands are available</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2655">CALCITE-2655</a>]
Enable Travis to test against JDK 12</li>
<li>Ensure that tests are not calling <code class="highlighter-rouge">checkSimplify3</code> with <code class="highlighter-rouge">expected</code>,
<code class="highlighter-rouge">expectedFalse</code>, <code class="highlighter-rouge">expectedTrue</code> all the same</li>
<li>Geode adapter tests: Removed unnecessary <code class="highlighter-rouge">try/final</code> block in <code class="highlighter-rouge">RefCountPolicy</code></li>
<li>Add license to <code class="highlighter-rouge">TestKtTest</code> and add <code class="highlighter-rouge">apache-rat:check</code> to Travis CI</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2112">CALCITE-2112</a>]
Add Apache license header to <code class="highlighter-rouge">maven-wrapper.properties</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2588">CALCITE-2588</a>]
Run Geode adapter tests with an embedded instance</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2594">CALCITE-2594</a>]
Ensure <code class="highlighter-rouge">forbiddenapis</code> and <code class="highlighter-rouge">maven-compiler</code> use the correct JDK version</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2642">CALCITE-2642</a>]
Checkstyle complains that <code class="highlighter-rouge">maven-wrapper.properties</code> is missing a header</li>
<li><code class="highlighter-rouge">commons:commons-pool2</code> is used in tests only, so use <code class="highlighter-rouge">scope=test</code> for it</li>
<li>Make <code class="highlighter-rouge">findbugs:jsr305</code> dependency optional</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2458">CALCITE-2458</a>]
Add Kotlin as a test dependency</li>
<li>Make build scripts Maven 3.3 compatible</li>
<li>Fix JavaDoc warnings for Java 9+, and check JavaDoc in Travis CI</li>
<li>Unwrap invocation target exception from QuidemTest#test</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2518">CALCITE-2518</a>]
Add <code class="highlighter-rouge">failOnWarnings</code> to <code class="highlighter-rouge">maven-javadoc-plugin</code> configuration</li>
<li>Silence Pig, Spark, and Elasticsearch logs in tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1894">CALCITE-1894</a>]
<code class="highlighter-rouge">CsvTest.testCsvStream</code> failing often: add <code class="highlighter-rouge">@Ignore</code> since the test is known to
fail</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2535">CALCITE-2535</a>]
Enable <code class="highlighter-rouge">SqlTester.checkFails</code> (previously it was a no-op) (Hongze Zhang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2558">CALCITE-2558</a>]
Improve re-compilation times by skipping <code class="highlighter-rouge">parser.java</code> update on each build</li>
<li>Increase timeout for Cassandra daemon startup for <code class="highlighter-rouge">CassandraAdapterTest</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2412">CALCITE-2412</a>]
Add Windows CI via AppVeyor (Sergey Nuyanzin)</li>
<li>Reduce <code class="highlighter-rouge">HepPlannerTest#testRuleApplyCount</code> complexity</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2523">CALCITE-2523</a>]
Guard <code class="highlighter-rouge">PartiallyOrderedSetTest#testPosetBitsLarge</code> with
<code class="highlighter-rouge">CalciteAssert.ENABLE_SLOW</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2521">CALCITE-2521</a>]
Guard <code class="highlighter-rouge">RelMetadataTest#testMetadataHandlerCacheLimit</code> with
<code class="highlighter-rouge">CalciteAssert.ENABLE_SLOW</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2484">CALCITE-2484</a>]
Add <code class="highlighter-rouge">SqlValidatorDynamicTest</code> to <code class="highlighter-rouge">CalciteSuite</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2484">CALCITE-2484</a>]
Move dynamic tests to a separate class like <code class="highlighter-rouge">SqlValidatorDynamicTest</code>, and
avoid reuse of <code class="highlighter-rouge">MockCatalogReaderDynamic</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2522">CALCITE-2522</a>]
Remove <code class="highlighter-rouge">e.printStackTrace()</code> from <code class="highlighter-rouge">CalciteAssert#returns</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2512">CALCITE-2512</a>]
Move <code class="highlighter-rouge">StreamTest#ROW_GENERATOR</code> to <code class="highlighter-rouge">Table.scan().iterator</code> to make it not
shared between threads (Sergey Nuyanzin)</li>
<li>Skip second Checkstyle execution during Travis CI build</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2519">CALCITE-2519</a>]
Silence ERROR logs from <code class="highlighter-rouge">CalciteException</code>, <code class="highlighter-rouge">SqlValidatorException</code> during
tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1026">CALCITE-1026</a>]
Fix <code class="highlighter-rouge">ModelTest#testYamlFileDetection</code> when source folder has spaces</li>
<li><code class="highlighter-rouge">MockCatalogReader</code> is used in testing, so cache should be disabled there to
avoid thread conflicts and/or stale results</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-311">CALCITE-311</a>]
Add a test-case for Filter after Window aggregate</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2462">CALCITE-2462</a>]
<code class="highlighter-rouge">RexProgramTest</code>: replace <code class="highlighter-rouge">nullLiteral</code><code class="highlighter-rouge">nullInt</code>,
<code class="highlighter-rouge">unknownLiteral</code><code class="highlighter-rouge">nullBool</code> for brevity</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2462">CALCITE-2462</a>]
<code class="highlighter-rouge">RexProgramTest</code>: move “rex building” methods to base class</li>
<li><code class="highlighter-rouge">SqlTestFactory</code>: use lazy initialization of objects</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2435">CALCITE-2435</a>]
Refactor <code class="highlighter-rouge">SqlTestFactory</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2428">CALCITE-2428</a>]
Cassandra unit test fails to parse JDK version string (Andrei Sereda)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2419">CALCITE-2419</a>]
Use embedded Cassandra for tests</li>
</ul>
<h4 id="web-site-and-documentation-3">Web site and documentation</h4>
<ul>
<li>Add geospatial category to DOAP file</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2577">CALCITE-2577</a>]
Update links on download page to HTTPS</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2574">CALCITE-2574</a>]
Update download page to include instructions for verifying a downloaded
artifact</li>
<li>Update build status badges in <code class="highlighter-rouge">README.md</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2705">CALCITE-2705</a>]
Site: Remove duplicate “selectivity” in list of metadata types (Alan Jin)</li>
<li>Site: Add Andrei Sereda as committer</li>
<li>Site: Update Julian Hyde’s affiliation</li>
<li>Update Michael Mior’s affiliation</li>
<li>Site: Add instructions for updating PRs based on the discussion in the dev
list (Stamatis Zampetakis)</li>
<li>Site: Add committer Sergey Nuyanzin</li>
<li>Site: News item for release 1.17.0</li>
</ul>
<h2 id="v1-17-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.17.0">1.17.0</a> / 2018-07-16</h2>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 8, 9, 10;
Guava versions 19.0 to 23.0;
Druid version 0.11.0;
other software versions as specified in <code class="highlighter-rouge">pom.xml</code>.</p>
<p>This release comes four months after 1.16.0. It includes more than 90 resolved
issues, comprising a large number of new features as well as general improvements
and bug-fixes. Among others:</p>
<p>Implemented <a href="https://issues.apache.org/jira/browse/CALCITE-2280">Babel SQL parser</a>
that accepts all SQL dialects.
Allowed <a href="https://issues.apache.org/jira/browse/CALCITE-2261">JDK 8 language level</a> for core module.
Calcite has been upgraded to use <a href="https://issues.apache.org/jira/browse/CALCITE-2365">Avatica 1.12.0</a></p>
<h4 id="new-features-4">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-873">CALCITE-873</a>]
Add a planner rule, <code class="highlighter-rouge">SortRemoveConstantKeysRule</code>, that removes constant keys from Sort (Atri Sharma)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2045">CALCITE-2045</a>]
<code class="highlighter-rouge">CREATE TYPE</code> (Shuyi Chen)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2216">CALCITE-2216</a>]
Improve extensibility of <code class="highlighter-rouge">AggregateReduceFunctionsRule</code> (Fabian Hueske)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2227">CALCITE-2227</a>]
Standards-compliant column ordering for <code class="highlighter-rouge">NATURAL JOIN</code> and <code class="highlighter-rouge">JOIN USING</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2280">CALCITE-2280</a>]
Babel SQL parser</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2286">CALCITE-2286</a>]
Support timestamp type for Druid adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2304">CALCITE-2304</a>]
In Babel parser, allow Hive-style syntax <code class="highlighter-rouge">LEFT SEMI JOIN</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2321">CALCITE-2321</a>]
A union of <code class="highlighter-rouge">CHAR</code> columns of different lengths can now (based on a conformance setting) yield a <code class="highlighter-rouge">VARCHAR</code> column (Hequn Cheng)</li>
</ul>
<h4 id="bug-fixes-api-changes-and-minor-enhancements-4">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-531">CALCITE-531</a>]
<code class="highlighter-rouge">LATERAL</code> combined with window function or table function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1167">CALCITE-1167</a>]
<code class="highlighter-rouge">OVERLAPS</code> should match even if operands are in (high, low) order</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1436">CALCITE-1436</a>]
Support <code class="highlighter-rouge">MIN</code>/<code class="highlighter-rouge">MAX</code> functions (Muhammad Gelbana)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1866">CALCITE-1866</a>]
JDBC adapter generates incorrect code when pushing <code class="highlighter-rouge">FLOOR</code> to MySQL (Kang Wang, Sergey Nuyanzin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1916">CALCITE-1916</a>]
Use Teradata’s TPC-DS generator and run tests against TPC-DS at small scale</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1949">CALCITE-1949</a>]
<code class="highlighter-rouge">CalciteStatement</code> should call <code class="highlighter-rouge">AvaticaStatement</code> close_(), to avoid memory leak (Kevin Risden)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2053">CALCITE-2053</a>]
Resolve Java user-defined functions that have <code class="highlighter-rouge">Double</code> and <code class="highlighter-rouge">BigDecimal</code> arguments (余启)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2063">CALCITE-2063</a>]
Add JDK 10 to <code class="highlighter-rouge">.travis.yml</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2159">CALCITE-2159</a>]
Support dynamic row type in <code class="highlighter-rouge">UNNEST</code> (Chunhui Shi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2164">CALCITE-2164</a>]
Fix alerts raised by lgtm.com (Malcolm Taylor)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2188">CALCITE-2188</a>]
JDBC adapter generates invalid SQL for <code class="highlighter-rouge">DATE</code>/<code class="highlighter-rouge">INTERVAL</code> arithmetic (Rahul Raj)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2201">CALCITE-2201</a>]
Pass <code class="highlighter-rouge">RelBuilder</code> into <code class="highlighter-rouge">RelDecorrelator</code> and <code class="highlighter-rouge">RelStructuredTypeFlattener</code> (Volodymyr Vysotskyi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2205">CALCITE-2205</a>]
<code class="highlighter-rouge">JoinPushTransitivePredicatesRule</code> should not create <code class="highlighter-rouge">Filter</code> on top of equivalent <code class="highlighter-rouge">Filter</code> (Vitalii Diravka)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2206">CALCITE-2206</a>]
JDBC adapter incorrectly pushes windowed aggregates down to HSQLDB (Pavel Gubin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2220">CALCITE-2220</a>]
<code class="highlighter-rouge">SqlToRelConverter</code> generates incorrect ordinal while flattening a record-valued field (Shuyi Chen)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2222">CALCITE-2222</a>]
Add Quarter timeunit as a valid unit to pushdown to Druid</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2225">CALCITE-2225</a>]
Upgrade Apache parent POM to version 19, and support OpenJDK 10</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2226">CALCITE-2226</a>]
Druid adapter: Substring operator converter does not handle non-constant literals correctly</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2229">CALCITE-2229</a>]
Allow sqlsh to be run from path, not just current directory</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2232">CALCITE-2232</a>]
Assertion error on <code class="highlighter-rouge">AggregatePullUpConstantsRule</code> while adjusting <code class="highlighter-rouge">Aggregate</code> indices</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2236">CALCITE-2236</a>]
Druid adapter: Avoid duplication of fields names during Druid query planing</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2237">CALCITE-2237</a>]
Upgrade Maven Surefire plugin to 2.21.0 (Kevin Risden)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2238">CALCITE-2238</a>]
Fix Pig and Spark adapter failures with JDK 10</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2240">CALCITE-2240</a>]
Extend rule to push predicates into <code class="highlighter-rouge">CASE</code> statement (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2242">CALCITE-2242</a>]
Using custom <code class="highlighter-rouge">RelBuilder</code> for <code class="highlighter-rouge">FilterRemoveIsNotDistinctFromRule</code> (Vitalii Diravka)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2247">CALCITE-2247</a>]
Simplify <code class="highlighter-rouge">AND</code> and <code class="highlighter-rouge">OR</code> conditions using predicates (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2253">CALCITE-2253</a>]
Fix matching predicate for <code class="highlighter-rouge">JdbcProjectRule</code> rule</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2255">CALCITE-2255</a>]
Add JDK 11 to Travis CI</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2259">CALCITE-2259</a>]
Allow Java 8 syntax</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2261">CALCITE-2261</a>]
Switch core module to JDK 8 (Enrico Olivelli)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2262">CALCITE-2262</a>]
Druid adapter: Allow count(*) to be pushed when other aggregate functions are present</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2264">CALCITE-2264</a>]
In JDBC adapter, do not push down a call to a user-defined function (UDF) (Piotr Bojko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2265">CALCITE-2265</a>]
Allow comparison of ROW values (Dylan Adams)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2267">CALCITE-2267</a>]
Thread-safe generation of <code class="highlighter-rouge">AbstractRelNode.id</code> (Zhong Yu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2275">CALCITE-2275</a>]
Do not push down <code class="highlighter-rouge">NOT</code> condition in <code class="highlighter-rouge">JOIN</code> (Vitalii Diravka)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2276">CALCITE-2276</a>]
Allow explicit <code class="highlighter-rouge">ROW</code> value constructor in <code class="highlighter-rouge">SELECT</code> clause and elsewhere (Danny Chan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2277">CALCITE-2277</a>]
Skip <code class="highlighter-rouge">SemiJoin</code> operator in materialized view-based rewriting algorithm</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2278">CALCITE-2278</a>]
<code class="highlighter-rouge">AggregateJoinTransposeRule</code> fails to split aggregate call if input contains an aggregate call and has distinct rows (Haisheng Yuan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2281">CALCITE-2281</a>]
Return type of the <code class="highlighter-rouge">TIMESTAMPADD</code> function has wrong precision (Sudheesh Katkam)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2287">CALCITE-2287</a>]
<code class="highlighter-rouge">FlatList.equals()</code> throws <code class="highlighter-rouge">StackOverflowError</code> (Zhen Wang, Zhong Yu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2291">CALCITE-2291</a>]
Support Push Project past Correlate (Chunhui Shi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2293">CALCITE-2293</a>]
Upgrade forbidden-apis to 2.5 (for JDK 10)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2299">CALCITE-2299</a>]
<code class="highlighter-rouge">TIMESTAMPADD</code>(<code class="highlighter-rouge">SQL_TSI_FRAC_SECOND</code>) should be nanoseconds (Sergey Nuyanzin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2303">CALCITE-2303</a>]
In <code class="highlighter-rouge">EXTRACT</code> function, support <code class="highlighter-rouge">MICROSECONDS</code>, <code class="highlighter-rouge">MILLISECONDS</code>, <code class="highlighter-rouge">EPOCH</code>, <code class="highlighter-rouge">ISODOW</code>, <code class="highlighter-rouge">ISOYEAR</code> and <code class="highlighter-rouge">DECADE</code> time units (Sergey Nuyanzin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2305">CALCITE-2305</a>]
JDBC adapter generates invalid casts on PostgreSQL, because PostgreSQL does not have <code class="highlighter-rouge">TINYINT</code> and <code class="highlighter-rouge">DOUBLE</code> types</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2306">CALCITE-2306</a>]
AssertionError in <code class="highlighter-rouge">RexLiteral.getValue3</code> with null literal of type <code class="highlighter-rouge">DECIMAL</code> (Godfrey He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2309">CALCITE-2309</a>]
Dialects: Hive dialect does not support charsets in constants</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2314">CALCITE-2314</a>]
Verify RexNode transformations by evaluating before and after expressions against sample values</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2316">CALCITE-2316</a>]
Elasticsearch adapter should not convert queries to lower-case (Andrei Sereda)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2318">CALCITE-2318</a>]
<code class="highlighter-rouge">NumberFormatException</code> while starting SQLLine</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2319">CALCITE-2319</a>]
Set correct dimension type for druid expressions with result type boolean (nsihantmonu51)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2320">CALCITE-2320</a>]
Filtering UDF when converting <code class="highlighter-rouge">Filter</code> to <code class="highlighter-rouge">JDBCFilter</code> (Piotr Bojko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2323">CALCITE-2323</a>]
Apply “<code class="highlighter-rouge">defaultNullCollation</code>” configuration parameter when translating <code class="highlighter-rouge">ORDER BY</code> inside <code class="highlighter-rouge">OVER</code> (John Fang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2324">CALCITE-2324</a>]
<code class="highlighter-rouge">EXTRACT</code> function: <code class="highlighter-rouge">HOUR</code>, <code class="highlighter-rouge">MINUTE</code> and <code class="highlighter-rouge">SECOND</code> parts of a <code class="highlighter-rouge">DATE</code> must be zero (Sergey Nuyanzin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2329">CALCITE-2329</a>]
Improve rewrite for “constant IN (sub-query)”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2331">CALCITE-2331</a>]
Evaluation of predicate <code class="highlighter-rouge">(A or B) and C</code> fails for Elasticsearch adapter (Andrei Sereda)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2332">CALCITE-2332</a>]
Wrong simplification of <code class="highlighter-rouge">FLOOR(CEIL(x))</code> to <code class="highlighter-rouge">FLOOR(x)</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2333">CALCITE-2333</a>]
Stop releasing zips</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2334">CALCITE-2334</a>]
Extend simplification of expressions with <code class="highlighter-rouge">CEIL</code> function over date types</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2341">CALCITE-2341</a>]
Fix <code class="highlighter-rouge">ImmutableBitSetTest</code> for jdk11</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2342">CALCITE-2342</a>]
Fix improper use of assert</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2345">CALCITE-2345</a>]
Running Unit tests with Fongo and integration tests with real mongo instance (Andrei Sereda)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2347">CALCITE-2347</a>]
Running ElasticSearch in embedded mode for unit tests of ES adapter (Andrei Sereda)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2353">CALCITE-2353</a>]
Allow user to override <code class="highlighter-rouge">SqlSetOption</code> (Andrew Pilloud)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2355">CALCITE-2355</a>]
Implement multiset operations (Sergey Nuyanzin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2357">CALCITE-2357</a>]
Freemarker dependency override issue in fmpp maven plugin (yanghua)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2358">CALCITE-2358</a>]
Use null literal instead of empty string (b-slim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2359">CALCITE-2359</a>]
Inconsistent results casting intervals to integers (James Duong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2364">CALCITE-2364</a>]
Fix timezone issue (in test) between Mongo DB and local JVM (Andrei Sereda)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2365">CALCITE-2365</a>]
Upgrade avatica to 1.12</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2366">CALCITE-2366</a>]
Add support for <code class="highlighter-rouge">ANY_VALUE</code> aggregate function (Gautam Parai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2368">CALCITE-2368</a>]
Fix <code class="highlighter-rouge">misc.iq</code> and <code class="highlighter-rouge">scalar.iq</code> quidem unit tests failures on Windows</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2369">CALCITE-2369</a>]
Fix <code class="highlighter-rouge">OsAdapterTest</code> failure on windows (Sergey Nuyanzin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2370">CALCITE-2370</a>]
Fix failing mongo IT tests when explicit order was not specified (Andrei Sereda)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2376">CALCITE-2376</a>]
Unify ES2 and ES5 adapters. Migrate to low-level ES rest client as main transport (Andrei Sereda)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2379">CALCITE-2379</a>]
CVSS dependency-check-maven fails for calcite-spark and calcite-ubenchmark modules</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2380">CALCITE-2380</a>]
Javadoc generation failure in Elasticsearch2 adapter (Andrei Sereda)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2381">CALCITE-2381</a>]
Add information for authenticating against maven repo, GPG keys and version numbers to HOWTO</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2382">CALCITE-2382</a>]
Sub-query join lateral table function (pengzhiwei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2383">CALCITE-2383</a>]
<code class="highlighter-rouge">NTH_VALUE</code> window function (Sergey Nuyanzin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2384">CALCITE-2384</a>]
Performance issue in <code class="highlighter-rouge">getPulledUpPredicates</code> (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2387">CALCITE-2387</a>]
Fix for <code class="highlighter-rouge">date</code>/<code class="highlighter-rouge">timestamp</code> cast expressions in Druid adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2388">CALCITE-2388</a>]
Upgrade from <code class="highlighter-rouge">commons-dbcp</code> to <code class="highlighter-rouge">commons-dbcp2</code> version 2.4.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2391">CALCITE-2391</a>]
Aggregate query with <code class="highlighter-rouge">UNNEST</code> or <code class="highlighter-rouge">LATERAL</code> fails with <code class="highlighter-rouge">ClassCastException</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2392">CALCITE-2392</a>]
Prevent columns permutation for <code class="highlighter-rouge">NATURAL JOIN</code> and <code class="highlighter-rouge">JOIN USING</code> when dynamic table is used</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2396">CALCITE-2396</a>]
Allow <code class="highlighter-rouge">NULL</code> intervals in <code class="highlighter-rouge">TIMESTAMPADD</code> and <code class="highlighter-rouge">DATETIME_PLUS</code> functions (James Duong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2398">CALCITE-2398</a>]
<code class="highlighter-rouge">SqlSelect</code> must call into <code class="highlighter-rouge">SqlDialect</code> for unparse (James Duong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2403">CALCITE-2403</a>]
Upgrade quidem to 0.9</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2409">CALCITE-2409</a>]
<code class="highlighter-rouge">SparkAdapterTest</code> fails on Windows when ‘/tmp’ directory does not exist
(Sergey Nuyanzin)</li>
</ul>
<h2 id="v1-16-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.16.0">1.16.0</a> / 2018-03-14</h2>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 8, 9, 10;
Guava versions 19.0 to 23.0;
Druid version 0.11.0;
other software versions as specified in <code class="highlighter-rouge">pom.xml</code>.</p>
<p>This release comes three months after 1.15.0. It includes more than 80 resolved
issues, comprising a large number of new features as well as general improvements
and bug-fixes to Calcite core. Among others:</p>
<ul>
<li>Calcite has been upgraded to use
<a href="https://issues.apache.org/jira/browse/CALCITE-2182">Avatica 1.11.0</a>,
which was recently released.</li>
<li>Moreover, a new adapter to
<a href="https://issues.apache.org/jira/browse/CALCITE-2059">read data from Apache Geode</a>
was added in this release. In addition, more progress has been made for the existing adapters,
e.g., the Druid adapter can generate
<a href="https://issues.apache.org/jira/browse/CALCITE-2077"><code class="highlighter-rouge">SCAN</code> queries rather than <code class="highlighter-rouge">SELECT</code> queries</a>
for more efficient execution and it can push
<a href="https://issues.apache.org/jira/browse/CALCITE-2170">more work to Druid using its new expressions capabilities</a>,
and the JDBC adapter now <a href="https://issues.apache.org/jira/browse/CALCITE-2128">supports the SQL dialect used by Jethro Data</a>.</li>
<li>Finally, this release
<a href="https://issues.apache.org/jira/browse/CALCITE-2027">drops support for JDK 1.7</a> and
support for <a href="https://issues.apache.org/jira/browse/CALCITE-2191">Guava versions earlier than 19</a>.</li>
</ul>
<h4 id="new-features-5">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1265">CALCITE-1265</a>]
In JDBC adapter, push <code class="highlighter-rouge">OFFSET</code> and <code class="highlighter-rouge">FETCH</code> to data source</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2059">CALCITE-2059</a>]
Apache Geode adapter (Christian Tzolov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2077">CALCITE-2077</a>]
Druid adapter: Use <code class="highlighter-rouge">SCAN</code> query rather than <code class="highlighter-rouge">SELECT</code> query (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2128">CALCITE-2128</a>]
In JDBC adapter, add SQL dialect for Jethro Data (Jonathan Doron)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2170">CALCITE-2170</a>]
Use Druid Expressions capabilities to improve the amount of work that can be pushed to Druid</li>
</ul>
<h4 id="bug-fixes-api-changes-and-minor-enhancements-5">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1054">CALCITE-1054</a>]
NPE caused by wrong code generation for Timestamp fields</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1188">CALCITE-1188</a>]
NullPointerException in <code class="highlighter-rouge">EXTRACT</code> with <code class="highlighter-rouge">WHERE ... IN</code> clause if field has null value</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1427">CALCITE-1427</a>]
Code generation incorrect (does not compile) for DATE, TIME and TIMESTAMP fields</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1658">CALCITE-1658</a>]
DateRangeRules incorrectly rewrites <code class="highlighter-rouge">EXTRACT</code> calls (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1697">CALCITE-1697</a>]
Update Mongo driver version to 3.5.0 (Vladimir Dolzhenko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2002">CALCITE-2002</a>]
<code class="highlighter-rouge">DISTINCT</code> applied to <code class="highlighter-rouge">VALUES</code> returns wrong result</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2009">CALCITE-2009</a>]
Possible bug in interpreting <code class="highlighter-rouge">( IN ) OR ( IN )</code> logic</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2020">CALCITE-2020</a>]
Upgrade org.incava java-diff</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2027">CALCITE-2027</a>]
Drop support for Java 7 (JDK 1.7)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2034">CALCITE-2034</a>]
<code class="highlighter-rouge">FileReaderTest</code> fails with path containing spaces</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2066">CALCITE-2066</a>]
<code class="highlighter-rouge">RelOptUtil.splitJoinCondition()</code> could not split condition with case after applying <code class="highlighter-rouge">FilterReduceExpressionsRule</code> (Volodymyr Vysotskyi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2071">CALCITE-2071</a>]
Query with <code class="highlighter-rouge">IN</code> and <code class="highlighter-rouge">OR</code> in <code class="highlighter-rouge">WHERE</code> clause returns wrong result (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2072">CALCITE-2072</a>]
Enable spatial functions by adding ‘fun=spatial’ to JDBC connect string</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2075">CALCITE-2075</a>]
SparkAdapterTest UT fails</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2076">CALCITE-2076</a>]
Upgrade to Druid 0.11.0 (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2080">CALCITE-2080</a>]
Query with <code class="highlighter-rouge">NOT IN</code> operator and literal throws <code class="highlighter-rouge">AssertionError</code>: ‘Cast for just nullability not allowed’ (Volodymyr Vysotskyi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2081">CALCITE-2081</a>]
Query with windowed aggregates under both sides of a <code class="highlighter-rouge">JOIN</code> throws <code class="highlighter-rouge">NullPointerException</code> (Zhen Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2084">CALCITE-2084</a>]
<code class="highlighter-rouge">SqlValidatorImpl.findTable()</code> method incorrectly handles table schema with few schema levels (Volodymyr Vysotskyi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2088">CALCITE-2088</a>]
Add more complex end-to-end tests in “plus” module, using Chinook data set (Piotr Bojko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2089">CALCITE-2089</a>]
Druid adapter: Push filter on <code class="highlighter-rouge">floor(time)</code> to Druid (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2090">CALCITE-2090</a>]
Extend Druid Range Rules to extract interval from Floor (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2091">CALCITE-2091</a>]
Improve DruidQuery cost function, to ensure that <code class="highlighter-rouge">EXTRACT</code> gets pushed as an interval if possible</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2092">CALCITE-2092</a>]
Allow passing custom <code class="highlighter-rouge">RelBuilder</code> into <code class="highlighter-rouge">SqlToRelConverter</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2093">CALCITE-2093</a>]
<code class="highlighter-rouge">OsAdapterTest</code> in Calcite Plus does not respect locale (Piotr Bojko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2094">CALCITE-2094</a>]
Druid adapter: <code class="highlighter-rouge">Count(*)</code> returns null instead of 0 when condition filters all rows</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2095">CALCITE-2095</a>]
Druid adapter: Push always true and always true expressions as Expression Filters</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2096">CALCITE-2096</a>]
Druid adapter: Remove extra <code class="highlighter-rouge">dummy_aggregator</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2097">CALCITE-2097</a>]
Druid adapter: Push Aggregate and Filter operators containing metric columns to Druid</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2098">CALCITE-2098</a>]
Push filters to Druid Query Scan when we have <code class="highlighter-rouge">OR</code> of <code class="highlighter-rouge">AND</code> clauses</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2099">CALCITE-2099</a>]
Code generated for <code class="highlighter-rouge">GROUP BY</code> inside <code class="highlighter-rouge">UNION</code> does not compile (Zhen Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2101">CALCITE-2101</a>]
Druid adapter: Push count(column) using Druid filtered aggregate</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2102">CALCITE-2102</a>]
Ignore duplicate <code class="highlighter-rouge">ORDER BY</code> keys, and ensure RelCollation contains no duplicates (John Fang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2104">CALCITE-2104</a>]
Add separate rules for <code class="highlighter-rouge">AggregateUnionAggregateRule</code> to reduce potential matching cost in <code class="highlighter-rouge">VolcanoPlanner</code> (lincoln-lil)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2105">CALCITE-2105</a>]
<code class="highlighter-rouge">AggregateJoinTransposeRule</code> fails when process aggregate without group keys (jingzhang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2107">CALCITE-2107</a>]
Timezone not passed as part of granularity when passing <code class="highlighter-rouge">TimeExtractionFunction</code> to Druid (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2108">CALCITE-2108</a>]
<code class="highlighter-rouge">AggregateJoinTransposeRule</code> fails when process aggregateCall above <code class="highlighter-rouge">SqlSumEmptyIsZeroAggFunction</code> without groupKeys (jingzhang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2110">CALCITE-2110</a>]
<code class="highlighter-rouge">ArrayIndexOutOfBoundsException</code> in RexSimplify when using <code class="highlighter-rouge">ReduceExpressionsRule.JOIN_INSTANCE</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2111">CALCITE-2111</a>]
Make HepPlanner more efficient by applying rules depth-first</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2113">CALCITE-2113</a>]
Push column pruning to druid when Aggregate cannot be pushed (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2114">CALCITE-2114</a>]
Re-enable <code class="highlighter-rouge">DruidAggregateFilterTransposeRule</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2116">CALCITE-2116</a>]
The digests are not same for the common sub-expressions in HepPlanner (LeoWangLZ)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2118">CALCITE-2118</a>]
RelToSqlConverter should only generate “*” if field names match (Sam Waggoner)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2122">CALCITE-2122</a>]
In DateRangeRules, make either <code class="highlighter-rouge">TIMESTAMP</code> or <code class="highlighter-rouge">DATE</code> literal, according to target type (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2124">CALCITE-2124</a>]
<code class="highlighter-rouge">AggregateExpandDistinctAggregatesRule</code> should make <code class="highlighter-rouge">SUM</code> nullable if there is no <code class="highlighter-rouge">GROUP BY</code> (Godfrey He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2127">CALCITE-2127</a>]
In Interpreter, allow a node to have more than one consumer</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2133">CALCITE-2133</a>]
Allow SqlGroupedWindowFunction to specify returnTypeInference in its constructor (Shuyi Chen)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2135">CALCITE-2135</a>]
If there is an aggregate function inside an <code class="highlighter-rouge">OVER</code> clause, validator should treat query as an aggregate query (Volodymyr Tkach)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2137">CALCITE-2137</a>]
Materialized view rewriting not being triggered for some join queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2139">CALCITE-2139</a>]
Upgrade checkstyle</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2143">CALCITE-2143</a>]
RelToSqlConverter produces incorrect SQL with aggregation (Sam Waggoner)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2147">CALCITE-2147</a>]
GroupingSets involving rollup resulting into an incorrect plan (Ravindar Munjam)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2154">CALCITE-2154</a>]
Upgrade jackson to 2.9.4</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2156">CALCITE-2156</a>]
In DateRangeRules, compute <code class="highlighter-rouge">FLOOR</code> and <code class="highlighter-rouge">CEIL</code> of <code class="highlighter-rouge">TIMESTAMP WITH LOCAL TIMEZONE</code> in local time zone (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2162">CALCITE-2162</a>]
Exception when accessing sub-field of sub-field of composite Array element (Shuyi Chen)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2178">CALCITE-2178</a>]
Extend expression simplifier to work on datetime <code class="highlighter-rouge">CEIL</code>/<code class="highlighter-rouge">FLOOR</code> functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2179">CALCITE-2179</a>]
General improvements for materialized view rewriting rule</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2180">CALCITE-2180</a>]
Invalid code generated for negative of byte and short values</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2183">CALCITE-2183</a>]
Implement <code class="highlighter-rouge">RelSubset.copy</code> method (Alessandro Solimando)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2185">CALCITE-2185</a>]
Additional unit tests for Spark Adapter (Alessandro Solimando)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2187">CALCITE-2187</a>]
Fix build issue caused by <code class="highlighter-rouge">CALCITE-2170</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2189">CALCITE-2189</a>]
RelMdAllPredicates fast bail out creates mismatch with RelMdTableReferences</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2190">CALCITE-2190</a>]
Extend SubstitutionVisitor.splitFilter to cover different order of operands</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2191">CALCITE-2191</a>]
Drop support for Guava versions earlier than 19</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2192">CALCITE-2192</a>]
RelBuilder wrongly skips creating an Aggregate that prunes columns, if input is unique</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2195">CALCITE-2195</a>]
<code class="highlighter-rouge">AggregateJoinTransposeRule</code> fails to aggregate over unique column (Zhong Yu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2196">CALCITE-2196</a>]
Tweak janino code generation to allow debugging (jingzhang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2197">CALCITE-2197</a>]
Test failures on Windows</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2200">CALCITE-2200</a>]
Infinite loop for JoinPushTransitivePredicatesRule</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2207">CALCITE-2207</a>]
Enforce Java version via maven-enforcer-plugin (Kevin Risden)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2213">CALCITE-2213</a>]
Geode integration tests are failing</li>
</ul>
<h4 id="web-site-and-documentation-4">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2024">CALCITE-2024</a>]
Submit a journal paper on Calcite to VLDB Journal or ACM SIGMOD Record (Edmon Begoli)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2203">CALCITE-2203</a>]
Calcite site redirect links to Avatica broken with jekyll-redirect-from 0.12+ (Kevin Risden)</li>
</ul>
<h2 id="v1-15-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.15.0">1.15.0</a> / 2017-12-11</h2>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 7, 8, 9, 10;
Guava versions 14.0 to 23.0;
Druid version 0.10.0;
other software versions as specified in <code class="highlighter-rouge">pom.xml</code>.</p>
<p>This release comes three months after 1.14.0. It includes than 44 resolved
issues, mostly modest improvements and bug-fixes, but here are some
features of note:</p>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-707">CALCITE-707</a>]
adds <em>DDL commands</em> to Calcite for the first time, including <em>CREATE and DROP
commands for schemas, tables, foreign tables, views, and materialized views</em>.
We know that DDL syntax is a matter of taste, so we added the extensions to a
<em>new “server” module</em>, leaving the “core” parser unchanged;</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2061">CALCITE-2061</a>]
allows <em>dynamic parameters</em> in the <code class="highlighter-rouge">LIMIT</code> and <code class="highlighter-rouge">OFFSET</code> and clauses;</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1913">CALCITE-1913</a>]
refactors the JDBC adapter to make it easier to <em>plug in a new SQL dialect</em>;</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1616">CALCITE-1616</a>]
adds a <em>data profiler</em>, an algorithm that efficiently analyzes large data sets
with many columns, estimating the number of distinct values in columns and
groups of columns, and finding functional dependencies. The improved
statistics are used by the algorithm that designs summary tables for a
lattice.</li>
</ul>
<p>Calcite now supports JDK 10 and Guava 23.0. (It continues to run on
JDK 7, 8 and 9, and on versions of Guava as early as 14.0.1. The default
version of Guava remains 19.0, the latest version compatible with JDK 7
and the Cassandra adapter’s dependencies.)</p>
<p>This is the <a href="https://issues.apache.org/jira/browse/CALCITE-2027">last
release that will support JDK 1.7</a>.</p>
<h4 id="new-features-6">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1616">CALCITE-1616</a>]
Data profiler</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2061">CALCITE-2061</a>]
Dynamic parameters in <code class="highlighter-rouge">OFFSET</code>, <code class="highlighter-rouge">FETCH</code> and <code class="highlighter-rouge">LIMIT</code> clauses (Enrico Olivelli)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-707">CALCITE-707</a>]
Add “server” module, with built-in support for simple DDL statements</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2041">CALCITE-2041</a>]
When <code class="highlighter-rouge">ReduceExpressionRule</code> simplifies a nullable expression, allow the result
to change type to <code class="highlighter-rouge">NOT NULL</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2058">CALCITE-2058</a>]
Support JDK 10</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2016">CALCITE-2016</a>]
Make item + dot operators work for array (e.g. <code class="highlighter-rouge">SELECT orders[5].color FROM t</code>
(Shuyi Chen)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2035">CALCITE-2035</a>]
Allow approximate aggregate functions, and add <code class="highlighter-rouge">APPROX_COUNT_DISTINCT</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1990">CALCITE-1990</a>]
Make <code class="highlighter-rouge">RelDistribution</code> extend <code class="highlighter-rouge">RelMultipleTrait</code> (LeoWangLZ)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1867">CALCITE-1867</a>]
Allow user-defined grouped window functions (Timo Walther)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2031">CALCITE-2031</a>]
<code class="highlighter-rouge">ST_X</code> and <code class="highlighter-rouge">ST_Y</code> GIS functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1913">CALCITE-1913</a>]
Pluggable SQL dialects for JDBC adapter: Replace usages of <code class="highlighter-rouge">DatabaseProduct</code>
with dialect methods, and introduce a configurable <code class="highlighter-rouge">SqlDialectFactory</code>
(Christian Beikov)</li>
</ul>
<h4 id="bug-fixes-api-changes-and-minor-enhancements-6">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2078">CALCITE-2078</a>]
Aggregate functions in <code class="highlighter-rouge">OVER</code> clause (Liao Xintao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2070">CALCITE-2070</a>]
Git test fails when run from source distro</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1808">CALCITE-1808</a>]
<code class="highlighter-rouge">JaninoRelMetadataProvider</code> loading cache might cause <code class="highlighter-rouge">OutOfMemoryError</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2069">CALCITE-2069</a>]
<code class="highlighter-rouge">RexSimplify.removeNullabilityCast()</code> always removes cast for operand with
<code class="highlighter-rouge">ANY</code> type (Volodymyr Vysotskyi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2074">CALCITE-2074</a>]
Simplification of point ranges that are open above or below yields wrong
results</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2005">CALCITE-2005</a>]
Test failures on Windows</li>
<li>Add <code class="highlighter-rouge">ImmutableBitSet.set(int, boolean)</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2054">CALCITE-2054</a>]
Error while validating <code class="highlighter-rouge">UPDATE</code> with dynamic parameter in <code class="highlighter-rouge">SET</code> clause (Enrico
Olivelli)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2055">CALCITE-2055</a>]
Check year, month, day, hour, minute and second ranges for date and time
literals (Volodymyr Vysotskyi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2051">CALCITE-2051</a>]
Rules using <code class="highlighter-rouge">Aggregate</code> might check for simple grouping sets incorrectly</li>
<li>Add parameter to <code class="highlighter-rouge">SqlCallBinding.getOperandLiteralValue(int)</code> to specify
desired value type</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2039">CALCITE-2039</a>]
<code class="highlighter-rouge">AssertionError</code> when pushing project to <code class="highlighter-rouge">ProjectableFilterableTable</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2050">CALCITE-2050</a>]
Exception when pushing post-aggregates into Druid</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2043">CALCITE-2043</a>]
Use custom <code class="highlighter-rouge">RelBuilder</code> implementation in some rules (Volodymyr Vysotskyi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2044">CALCITE-2044</a>]
Tweak cost of <code class="highlighter-rouge">BindableTableScan</code> to make sure <code class="highlighter-rouge">Project</code> is pushed through
<code class="highlighter-rouge">Aggregate</code> (Luis Fernando Kauer)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2012">CALCITE-2012</a>]
Replace <code class="highlighter-rouge">LocalInterval</code> by <code class="highlighter-rouge">Interval</code> in Druid adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1984">CALCITE-1984</a>]
Incorrect rewriting with materialized views using <code class="highlighter-rouge">DISTINCT</code> in aggregate
functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1876">CALCITE-1876</a>]
In CSV example, tweak cost to ensure that <code class="highlighter-rouge">Project</code> is pushed through
<code class="highlighter-rouge">Aggregate</code> (Luis Fernando Kauer)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2037">CALCITE-2037</a>]
Modify parser template to allow sub-projects to override <code class="highlighter-rouge">SqlStmt</code> syntax
(Roman Kulyk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2019">CALCITE-2019</a>]
Druid’s time column is NOT NULL, so push <code class="highlighter-rouge">COUNT(druid_time_column)</code> as if it
were <code class="highlighter-rouge">COUNT(*)</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2034">CALCITE-2034</a>]
<code class="highlighter-rouge">FileReaderTest</code> fails with path containing spaces (Marc Prud’hommeaux)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2028">CALCITE-2028</a>]
<code class="highlighter-rouge">SubQueryRemoveRule</code> should create <code class="highlighter-rouge">Join</code>, not <code class="highlighter-rouge">Correlate</code>, for un-correlated
sub-queries (Liao Xintao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2029">CALCITE-2029</a>]
Query with <code class="highlighter-rouge">IS DISTINCT FROM</code> condition in <code class="highlighter-rouge">WHERE</code> or <code class="highlighter-rouge">JOIN</code> clause fails with
<code class="highlighter-rouge">AssertionError</code>, “Cast for just nullability not allowed” (Volodymyr Vysotskyi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1998">CALCITE-1998</a>]
Hive <code class="highlighter-rouge">ORDER BY</code> null values (Abbas Gadhia)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2014">CALCITE-2014</a>]
Look for <code class="highlighter-rouge">saffron.properties</code> file in classpath rather than in working
directory (Arina Ielchiieva)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1910">CALCITE-1910</a>]
<code class="highlighter-rouge">NullPointerException</code> on filtered aggregators using <code class="highlighter-rouge">IN</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1762">CALCITE-1762</a>]
Upgrade to Spark 2.X</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2008">CALCITE-2008</a>]
Fix braces in <code class="highlighter-rouge">TRIM</code> signature</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2007">CALCITE-2007</a>]
Fix <code class="highlighter-rouge">RexSimplify</code> behavior when literals come first</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2006">CALCITE-2006</a>]
Push <code class="highlighter-rouge">IS NULL</code> and <code class="highlighter-rouge">IS NOT NULL</code> predicates to Druid</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1996">CALCITE-1996</a>]
In JDBC adapter, generate correct <code class="highlighter-rouge">VALUES</code> syntax</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2001">CALCITE-2001</a>]
JDBC driver should return “SYSTEM TABLE” rather than “SYSTEM_TABLE”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1995">CALCITE-1995</a>]
Remove terms from <code class="highlighter-rouge">Filter</code> if predicates indicate they are always true or
false</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1983">CALCITE-1983</a>]
Push <code class="highlighter-rouge">=</code>and <code class="highlighter-rouge">&lt;&gt;</code> operations with numeric cast on dimensions to Druid</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1960">CALCITE-1960</a>]
<code class="highlighter-rouge">RelMdPredicates.getPredicates</code> is slow if there are many equivalent columns
(Rheet Wong)</li>
<li>Make Travis CI builds work (Christian Beikov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1987">CALCITE-1987</a>]
Implement <code class="highlighter-rouge">EXTRACT</code> for JDBC (Pavel Gubin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1988">CALCITE-1988</a>]
Various code quality issues</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1986">CALCITE-1986</a>]
Add <code class="highlighter-rouge">RelBuilder.match</code> and methods for building patterns (Dian Fu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1980">CALCITE-1980</a>]
<code class="highlighter-rouge">RelBuilder.aggregate</code> should rename underlying fields if <code class="highlighter-rouge">groupKey</code> contains
an alias</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1946">CALCITE-1946</a>]
JDBC adapter should generate sub-<code class="highlighter-rouge">SELECT</code> if dialect does not support nested
aggregate functions (Pawel Ruchaj)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1976">CALCITE-1976</a>]
linq4j: support List and Map literals</li>
</ul>
<h4 id="web-site-and-documentation-5">Web site and documentation</h4>
<ul>
<li>Update PMC Chair</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2052">CALCITE-2052</a>]
Remove SQL code style from materialized views documentation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2036">CALCITE-2036</a>]
Fix “next” link in <a href="powered_by.html">powered_by.html</a></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2038">CALCITE-2038</a>]
Fix incomplete sentence in tutorial</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2021">CALCITE-2021</a>]
Document the interfaces that you can use to extend Calcite</li>
<li>Javadoc fixes (Alexey Roytman)</li>
<li>Add two talks, and committer Christian Beikov</li>
<li>Fix URL in <code class="highlighter-rouge">FileSchemaFactory</code> javadoc (Marc Prud’hommeaux)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1989">CALCITE-1989</a>]
Check dependencies for vulnerabilities each release</li>
</ul>
<h2 id="v1-14-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.14.0">1.14.0</a> / 2017-09-06</h2>
<p>This release brings some big new features.
The <code class="highlighter-rouge">GEOMETRY</code> data type was added along with 35 associated functions as the start of support for Simple Feature Access.
There are also two new adapters.
Firstly, the Elasticsearch 5 adapter which now exists in parallel with the previous Elasticsearch 2 adapter.
Additionally there is now an <a href="/docs/os_adapter.html">OS adapter</a> which exposes operating system metrics as relational tables.
<code class="highlighter-rouge">ThetaSketch</code> and <code class="highlighter-rouge">HyperUnique</code> support has also been added to the Druid adapter.</p>
<p>Several minor improvements are added as well including improved <code class="highlighter-rouge">MATCH_RECOGNIZE</code> support, quantified comparison predicates, and <code class="highlighter-rouge">ARRAY</code> and <code class="highlighter-rouge">MULTISET</code> support for UDFs.
A full list of new features is given below.</p>
<p>There are also a few breaking changes.
The return type of <code class="highlighter-rouge">RANK</code> and other aggregate functions has been changed.
There also changes to <code class="highlighter-rouge">Aggregate</code> in order to improve compatibility with Apache Hive.
Finally, the <code class="highlighter-rouge">Schema#snapshot()</code> interface has been upgraded to allow for more flexible versioning.</p>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 1.7, 1.8, 9;
Guava versions 14.0 to 21.0;
Druid version 0.11.0;
other software versions as specified in <code class="highlighter-rouge">pom.xml</code>.</p>
<h4 id="new-features-7">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1968">CALCITE-1968</a>] OpenGIS Simple Feature Access SQL 1.2.1: add <code class="highlighter-rouge">GEOMETRY</code> data type and first 35 functions
Add Spatial page, document GIS functions in SQL reference (indicating
which ones are implemented), and add “countries” data set for testing.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1967">CALCITE-1967</a>] Elasticsearch 5 adapter (Christian Beikov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1911">CALCITE-1911</a>] In <code class="highlighter-rouge">MATCH_RECOGNIZE</code>, support <code class="highlighter-rouge">WITHIN</code> sub-clause (Dian Fu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1897">CALCITE-1897</a>] Add ‘%’ operator as an alternative to ‘MOD’ (sunjincheng)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1787">CALCITE-1787</a>] Add <code class="highlighter-rouge">ThetaSketch</code> and <code class="highlighter-rouge">HyperUnique</code> support to Calcite via rolled up columns (Zain Humayun)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1896">CALCITE-1896</a>] OS adapter and <code class="highlighter-rouge">sqlsh</code>
<ul>
<li>Vmstat table function for sqlsh</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1864">CALCITE-1864</a>] Allow <code class="highlighter-rouge">NULL</code> literal as argument</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1834">CALCITE-1834</a>] Allow user-defined functions to have arguments that are <code class="highlighter-rouge">ARRAY</code> or <code class="highlighter-rouge">MULTISET</code> (Ankit Singhal)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1886">CALCITE-1886</a>] Support <code class="highlighter-rouge">"LIMIT [offset,] row_count"</code>, per MySQL (Kaiwang Chen)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1845">CALCITE-1845</a>] Quantified comparison predicates (SOME, ANY, ALL)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1709">CALCITE-1709</a>] Support mixing table columns with extended columns in DML (Rajeshbabu Chintaguntla)</li>
</ul>
<h4 id="bug-fixes-api-changes-and-minor-enhancements-7">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1931">CALCITE-1931</a>]
Change the return type of <code class="highlighter-rouge">RANK</code> and other aggregate functions.
Various aggregate functions that used to return <code class="highlighter-rouge">INTEGER</code> now return other
types: <code class="highlighter-rouge">RANK</code>, <code class="highlighter-rouge">DENSE_RANK</code>, and <code class="highlighter-rouge">NTILE</code> now return <code class="highlighter-rouge">BIGINT</code>;
<code class="highlighter-rouge">CUME_DIST</code> and <code class="highlighter-rouge">PERCENT_RANK</code> now return <code class="highlighter-rouge">DOUBLE</code>.
(<strong>This is a breaking change</strong>.)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1947">CALCITE-1947</a>] Add <code class="highlighter-rouge">TIME</code>/<code class="highlighter-rouge">TIMESTAMP</code> with local time zone types to optimizer</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1972">CALCITE-1972</a>] Create <code class="highlighter-rouge">.sha512</code> and <code class="highlighter-rouge">.md5</code> digests for release artifacts</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1941">CALCITE-1941</a>] Refine interface <code class="highlighter-rouge">Schema#snapshot()</code>
(<strong>This is a breaking change</strong>.)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1069">CALCITE-1069</a>] In <code class="highlighter-rouge">Aggregate</code>, deprecate indicators, and allow <code class="highlighter-rouge">GROUPING</code> to be used as an aggregate function
(<strong>This is a breaking change</strong>.)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1969">CALCITE-1969</a>] Annotate user-defined functions as strict and semi-strict</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1945">CALCITE-1945</a>] Make return types of <code class="highlighter-rouge">AVG</code>, <code class="highlighter-rouge">VARIANCE</code>, <code class="highlighter-rouge">STDDEV</code> and <code class="highlighter-rouge">COVAR</code> customizable via RelDataTypeSystem</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1966">CALCITE-1966</a>] Allow normal views to act as materialization table (Christian Beikov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1953">CALCITE-1953</a>] Rewrite <code class="highlighter-rouge">"NOT (x IS FALSE)" to "x IS NOT FALSE"; "x IS TRUE"</code> would be wrong</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1943">CALCITE-1943</a>] Add back <code class="highlighter-rouge">NavigationExpander</code> and <code class="highlighter-rouge">NavigationReplacer</code> in <code class="highlighter-rouge">SqlValidatorImpl</code> (Dian Fu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1963">CALCITE-1963</a>] Upgrade checkstyle, and fix code to comply</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1944">CALCITE-1944</a>] Window function applied to sub-query that returns dynamic star gets wrong plan (Volodymyr Vysotskyi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1954">CALCITE-1954</a>] Column from outer join should be null, whether or not it is aliased</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1959">CALCITE-1959</a>] Reduce the amount of metadata and <code class="highlighter-rouge">tableName</code> calls in Druid (Zain Humayun)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1930">CALCITE-1930</a>] Fix <code class="highlighter-rouge">AggregateExpandDistinctAggregatesRule</code> when there are multiple <code class="highlighter-rouge">AggregateCalls</code> referring to the same input</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1936">CALCITE-1936</a>] Allow <code class="highlighter-rouge">ROUND()</code> and <code class="highlighter-rouge">TRUNCATE()</code> to take one operand, defaulting scale to 0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1931">CALCITE-1931</a>] Change the return type of RANK and other aggregate functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1932">CALCITE-1932</a>] <code class="highlighter-rouge">Project.getPermutation()</code> should return null if not a permutation (e.g. repeated <code class="highlighter-rouge">InputRef</code>)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1925">CALCITE-1925</a>] In <code class="highlighter-rouge">JaninoRelMetadataProvider</code>, cache null values (Ted Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1849">CALCITE-1849</a>] Support <code class="highlighter-rouge">RexSubQuery</code> in <code class="highlighter-rouge">RelToSqlConverter</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1909">CALCITE-1909</a>] Output <code class="highlighter-rouge">rowType</code> of Match should include <code class="highlighter-rouge">PARTITION BY</code> and <code class="highlighter-rouge">ORDER BY</code> columns</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1929">CALCITE-1929</a>] Deprecate class <code class="highlighter-rouge">RelDataTypeFactory.FieldInfoBuilder</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1895">CALCITE-1895</a>] MSSQL’s SUBSTRING operator has different syntax (Chris Baynes)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1919">CALCITE-1919</a>] <code class="highlighter-rouge">NullPointerException</code> when target in <code class="highlighter-rouge">ReflectiveSchema</code> belongs to root package (Lim Chee Hau)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1907">CALCITE-1907</a>] Table function with 1 column gives <code class="highlighter-rouge">ClassCastException</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1841">CALCITE-1841</a>] Create handlers for JDBC dialect-specific generated SQL (Chris Baynes)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1898">CALCITE-1898</a>] <code class="highlighter-rouge">LIKE</code> must match ‘.’ (period) literally</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1900">CALCITE-1900</a>] Detect cyclic views and give useful error message</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1893">CALCITE-1893</a>] Add MYSQL_5 conformance</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1883">CALCITE-1883</a>] <code class="highlighter-rouge">HepPlanner</code> should force garbage collect whenever a root registered (Ted Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1889">CALCITE-1889</a>] Accept compound identifiers in <code class="highlighter-rouge">SqlValidatorUtil.checkIdentifierListForDuplicates()</code> (Rajeshbabu Chintaguntla)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1881">CALCITE-1881</a>] Can’t distinguish overloaded user-defined functions that have DATE and TIMESTAMP arguments (余启)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1803">CALCITE-1803</a>] Push Project that follows Aggregate down to Druid (Junxian Wu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1828">CALCITE-1828</a>] Push the FILTER clause into Druid as a Filtered Aggregator (Zain Humayun)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1871">CALCITE-1871</a>] Nesting <code class="highlighter-rouge">LAST</code> within <code class="highlighter-rouge">PREV</code> is not parsed correctly for <code class="highlighter-rouge">MATCH_RECOGNIZE</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1877">CALCITE-1877</a>] Move the Pig test data files into target for the test runtime</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1815">CALCITE-1815</a>] Switch Pig adapter to depend on avatica-core instead of full avatica</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1826">CALCITE-1826</a>] Generate dialect-specific SQL for <code class="highlighter-rouge">FLOOR</code> operator when in a <code class="highlighter-rouge">GROUP BY</code> (Chris Baynes)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1842">CALCITE-1842</a>] <code class="highlighter-rouge">Sort.computeSelfCost()</code><code class="highlighter-rouge"> calls </code>makeCost()`` with arguments in wrong order (Junxian Wu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1874">CALCITE-1874</a>] In Frameworks, make <code class="highlighter-rouge">SqlToRelConverter</code> configurable</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1873">CALCITE-1873</a>] In a “GROUP BY ordinal” query, validator gives invalid “Expression is not being grouped” error if column has alias</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1833">CALCITE-1833</a>] User-defined aggregate functions with more than one parameter (hzyuemeng1)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1860">CALCITE-1860</a>] Duplicate null predicates cause <code class="highlighter-rouge">NullPointerException</code> in <code class="highlighter-rouge">RexUtil</code> (Ruidong Li)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1859">CALCITE-1859</a>] NPE in validate method of <code class="highlighter-rouge">VolcanoPlanner</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1818">CALCITE-1818</a>] Handle <code class="highlighter-rouge">SqlKind.DYNAMIC</code> (parameters) in <code class="highlighter-rouge">SqlImplementor</code> (Dylan Adams)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1856">CALCITE-1856</a>] Add option <code class="highlighter-rouge">StructKind.PEEK_FIELDS_NO_EXPAND</code>, similar to <code class="highlighter-rouge">PEEK_FIELDS</code> but is not expanded in <code class="highlighter-rouge">"SELECT *"</code> (Shuyi Chen)</li>
</ul>
<h4 id="web-site-and-documentation-6">Web site and documentation</h4>
<ul>
<li>Add committer Chris Baynes</li>
<li>Add DataEngConf talk</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1901">CALCITE-1901</a>] SQL reference should say that “ONLY” is required after “FETCH … ROWS”</li>
</ul>
<h2 id="v1-13-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.13.0">1.13.0</a> / 2017-06-20</h2>
<p>This release comes three months after 1.12.0. It includes more than 75 resolved issues, comprising
a large number of new features as well as general improvements and bug-fixes.</p>
<p>First, Calcite has been upgraded to use
<a href="https://issues.apache.org/jira/browse/CALCITE-1807">Avatica 1.10.0</a>,
which was recently released.</p>
<p>Moreover, Calcite core includes improvements which aim at making it more powerful, stable and robust.
In addition to numerous bux-fixes, we have implemented a
<a href="https://issues.apache.org/jira/browse/CALCITE-1731">new materialized view rewriting algorithm</a>
and <a href="https://issues.apache.org/jira/browse/CALCITE-1682">new metadata providers</a> which
should prove useful for data processing systems relying on Calcite.</p>
<p>In this release, we have also completed the work to
<a href="https://issues.apache.org/jira/browse/CALCITE-1570">support the <code class="highlighter-rouge">MATCH_RECOGNIZE</code> clause</a>
used in complex-event processing (CEP).</p>
<p>In addition, more progress has been made for the different adapters.
For instance, the Druid adapter now relies on
<a href="https://issues.apache.org/jira/browse/CALCITE-1771">Druid 0.10.0</a> and
it can generate more efficient plans where most of the computation can be pushed to Druid,
e.g., <a href="https://issues.apache.org/jira/browse/CALCITE-1707">using extraction functions</a>.</p>
<p>There is one minor but potentially breaking API change in
[<a href="https://issues.apache.org/jira/browse/CALCITE-1788">CALCITE-1788</a>]
(Simplify handling of position in the parser), requiring changes in the parameter
lists of parser extension methods.</p>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 1.7, 1.8, 9;
Guava versions 14.0 to 21.0;
Druid version 0.10.0;
other software versions as specified in <code class="highlighter-rouge">pom.xml</code>.</p>
<h4 id="new-features-8">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1570">CALCITE-1570</a>]
Add <code class="highlighter-rouge">MATCH_RECOGNIZE</code> operator, for event pattern-matching
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1647">CALCITE-1647</a>]
Classifier and <code class="highlighter-rouge">match_number</code> syntax support for <code class="highlighter-rouge">MATCH_RECOGNIZE</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1646">CALCITE-1646</a>]
Partition by and order by syntax support for <code class="highlighter-rouge">MATCH_RECOGNIZE</code> (Zhiqiang-He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1645">CALCITE-1645</a>]
Row per match syntax support for <code class="highlighter-rouge">MATCH_RECOGNIZE</code> (Zhiqiang-He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1644">CALCITE-1644</a>]
Subset clause syntax support for <code class="highlighter-rouge">MATCH_RECOGNIZE</code> (Zhiqiang-He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1643">CALCITE-1643</a>]
<code class="highlighter-rouge">AFTER MATCH</code> sub-clause of <code class="highlighter-rouge">MATCH_RECOGNIZE</code> clause (Zhiqiang-He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1642">CALCITE-1642</a>]
Support <code class="highlighter-rouge">MEASURES</code> clause in <code class="highlighter-rouge">MATCH_RECOGNIZE</code> (Zhiqiang-He)</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1853">CALCITE-1853</a>]
Push Count distinct into Druid when approximate results are acceptable (Zain Humayun)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1829">CALCITE-1829</a>]
Add <code class="highlighter-rouge">TIME</code>/<code class="highlighter-rouge">TIMESTAMP</code>/<code class="highlighter-rouge">DATE</code> datatype handling to <code class="highlighter-rouge">RexImplicationChecker</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1613">CALCITE-1613</a>]
Implement <code class="highlighter-rouge">EXTRACT</code> for time unit <code class="highlighter-rouge">DOW</code>, <code class="highlighter-rouge">DOY</code>; and fix <code class="highlighter-rouge">CENTURY</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1807">CALCITE-1807</a>]
Upgrade to Avatica 1.10</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1802">CALCITE-1802</a>]
Add post-aggregation step for Union in materialized view rewriting</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1795">CALCITE-1795</a>]
Extend materialized view rewriting to produce rewritings using <code class="highlighter-rouge">Union</code> operators</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1797">CALCITE-1797</a>]
Support view partial rewriting in aggregate materialized view rewriting</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1791">CALCITE-1791</a>]
Support view partial rewriting in join materialized view rewriting</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1731">CALCITE-1731</a>]
Rewriting of queries using materialized views with joins and aggregates</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1780">CALCITE-1780</a>]
Add <code class="highlighter-rouge">required Order</code> and <code class="highlighter-rouge">requiresOver</code> parameters to the constructor of <code class="highlighter-rouge">SqlUserDefinedAggregate Function</code> (SunJincheng)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1306">CALCITE-1306</a>]
Allow <code class="highlighter-rouge">GROUP BY</code> and <code class="highlighter-rouge">HAVING</code> to reference <code class="highlighter-rouge">SELECT</code> expressions by ordinal and alias (Rajeshbabu Chintaguntla)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1781">CALCITE-1781</a>]
Allow expression in <code class="highlighter-rouge">CUBE</code> and <code class="highlighter-rouge">ROLLUP</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1771">CALCITE-1771</a>]
Upgrade to Druid 0.10.0 (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1772">CALCITE-1772</a>]
Add a hook to allow <code class="highlighter-rouge">RelNode</code> expressions to be executed by JDBC driver</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1766">CALCITE-1766</a>]
Support system functions having no args with parenthesis too (Ankit Singhal)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1760">CALCITE-1760</a>]
Implement utility method to identify lossless casts</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1682">CALCITE-1682</a>]
New metadata providers for expression column origin and all predicates in plan</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1753">CALCITE-1753</a>]
Push expressions into null-generating side of a join if they are “strong” (null-preserving)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1759">CALCITE-1759</a>]
Add SQL:2014 reserved words to parser</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-476">CALCITE-476</a>]
Support distinct aggregates in window functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1738">CALCITE-1738</a>]
Support <code class="highlighter-rouge">CAST</code> of literal values in filters pushed to Druid (Remus Rusanu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1758">CALCITE-1758</a>]
Push to Druid <code class="highlighter-rouge">OrderBy</code>/<code class="highlighter-rouge">Limit</code> operation over time dimension and additional columns (Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1707">CALCITE-1707</a>]
Push <code class="highlighter-rouge">Extraction</code> filter on <code class="highlighter-rouge">Year</code>/<code class="highlighter-rouge">Month</code>/<code class="highlighter-rouge">Day</code> to druid (Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1725">CALCITE-1725</a>]
Push project aggregate of time extract to druid (Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1747">CALCITE-1747</a>]
<code class="highlighter-rouge">RelMdColumnUniqueness</code> for <code class="highlighter-rouge">HepRelVertex</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1749">CALCITE-1749</a>]
Push filter conditions partially into Druid</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1730">CALCITE-1730</a>]
Upgrade Druid to 0.9.2 (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1702">CALCITE-1702</a>]
Support extended columns in DML (Kevin Liew)</li>
</ul>
<h4 id="bug-fixes-api-changes-and-minor-enhancements-8">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1855">CALCITE-1855</a>]
Fix float values in Cassandra adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1848">CALCITE-1848</a>]
Rename MySource to FileSource (Darion Yaphet)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1852">CALCITE-1852</a>]
Fix for <code class="highlighter-rouge">UnionMergeRule</code> to deal correctly with <code class="highlighter-rouge">EXCEPT</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1850">CALCITE-1850</a>]
Extend <code class="highlighter-rouge">UnionMergeRule</code> to deal with more than 2 branches (Pengcheng Xiong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1805">CALCITE-1805</a>]
Druid adapter incorrectly pushes down <code class="highlighter-rouge">COUNT(c)</code>; Druid only supports <code class="highlighter-rouge">COUNT(*)</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1846">CALCITE-1846</a>]
Metadata pulled up predicates should skip non-deterministic calls (Ted Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1819">CALCITE-1819</a>]
Druid Adapter does not push the boolean operator <code class="highlighter-rouge">&lt;&gt;</code> as a filter correctly (Zain Humayun)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1798">CALCITE-1798</a>]
In JDBC adapter, generate dialect-specific SQL for <code class="highlighter-rouge">FLOOR</code> operator (Chris Baynes)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1812">CALCITE-1812</a>]
Provide <code class="highlighter-rouge">RelMetadataQuery</code> from planner to rules and invalidate in <code class="highlighter-rouge">transformTo</code> (Remus Rusanu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1804">CALCITE-1804</a>]
Cannot assign <code class="highlighter-rouge">NOT NULL</code> array to <code class="highlighter-rouge">NULLABLE</code> array (Ankit Singhal)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1810">CALCITE-1810</a>]
Allow <code class="highlighter-rouge">NULL</code> for <code class="highlighter-rouge">ARRAY</code> constructor (Ankit Singhal)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1830">CALCITE-1830</a>]
<code class="highlighter-rouge">ProcessBuilder</code> is security sensitive; move it to test suite to prevent accidents</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1816">CALCITE-1816</a>]
<code class="highlighter-rouge">JaninoRelMetadataProvider</code> generated classes leak ACTIVE nodes on exception (Remus Rusanu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1690">CALCITE-1690</a>]
Calcite timestamp literals cannot express precision above millisecond, <code class="highlighter-rouge">TIMESTAMP(3)</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1664">CALCITE-1664</a>]
<code class="highlighter-rouge">CAST(&lt;string&gt; as TIMESTAMP)</code> adds part of sub-second fraction to the value</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1742">CALCITE-1742</a>]
Create a read-consistent view of CalciteSchema for each statement compilation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1800">CALCITE-1800</a>]
JDBC adapter fails on query with <code class="highlighter-rouge">UNION</code> in <code class="highlighter-rouge">FROM</code> clause (Viktor Batytskyi, Minji Kim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1788">CALCITE-1788</a>]
Simplify handling of position in the parser</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1782">CALCITE-1782</a>]
<code class="highlighter-rouge">AggregateExpandDistinctAggregatesRule</code> should work on <code class="highlighter-rouge">Aggregate</code> instead of <code class="highlighter-rouge">LogicalAggregate</code> (Haohui Mai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1293">CALCITE-1293</a>]
Bad code generated when argument to <code class="highlighter-rouge">COUNT(DISTINCT)</code> is a <code class="highlighter-rouge">GROUP BY</code> column</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1770">CALCITE-1770</a>]
<code class="highlighter-rouge">CAST(NULL AS ...)</code> gives NPE (Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1777">CALCITE-1777</a>]
<code class="highlighter-rouge">WHERE FALSE</code> causes <code class="highlighter-rouge">AssertionError</code> (Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1778">CALCITE-1778</a>]
Query with <code class="highlighter-rouge">WHERE CASE</code> throws <code class="highlighter-rouge">AssertionError</code> “Cast for just nullability not allowed”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1773">CALCITE-1773</a>]
Add Test sql validator test for Pattern skip syntax in <code class="highlighter-rouge">MATCH_RECOGNIZE</code> (Zhiqiang-He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1761">CALCITE-1761</a>]
<code class="highlighter-rouge">TUMBLE</code>/<code class="highlighter-rouge">HOP</code>/<code class="highlighter-rouge">SESSION_START</code>/<code class="highlighter-rouge">END</code> do not resolve time field correctly</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1765">CALCITE-1765</a>]
Druid adapter fail when the extract granularity is not supported (Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1767">CALCITE-1767</a>]
Fix join/aggregate rewriting rule when same table is referenced more than once</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1764">CALCITE-1764</a>]
Adding sort ordering type for druid sort json field (Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-715">CALCITE-715</a>]
Add <code class="highlighter-rouge">PERIOD</code> type constructor and period operators (<code class="highlighter-rouge">CONTAINS</code>, <code class="highlighter-rouge">PRECEDES</code>, etc.)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1456">CALCITE-1456</a>]
Change <code class="highlighter-rouge">SubstitutionVisitor</code> to use generic <code class="highlighter-rouge">RelBuilder</code> instead of Logical instances of the operators when possible</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1763">CALCITE-1763</a>]
Recognize lossless casts in join/aggregate materialized view rewriting rule</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1639">CALCITE-1639</a>]
<code class="highlighter-rouge">TIMESTAMPADD(MONTH, ...)</code> should return last day of month if the day overflows</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1754">CALCITE-1754</a>]
In Csv adapter, convert <code class="highlighter-rouge">DATE</code> and <code class="highlighter-rouge">TIME</code> values to <code class="highlighter-rouge">int</code>, and <code class="highlighter-rouge">TIMESTAMP</code> values to <code class="highlighter-rouge">long</code> (Hongbin Ma)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1751">CALCITE-1751</a>]
<code class="highlighter-rouge">PigRelBuilderStyleTest</code> test cases are flapping</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1750">CALCITE-1750</a>]
Fix unit test failures when the path to the repository contains spaces</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1724">CALCITE-1724</a>]
Wrong comparison for floats/double type in Druid (Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1734">CALCITE-1734</a>]
Select query result not parsed correctly with druid 0.9.2 (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1732">CALCITE-1732</a>]
<code class="highlighter-rouge">IndexOutOfBoundsException</code> when using <code class="highlighter-rouge">LATERAL TABLE</code> with more than one field (Godfrey He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1722">CALCITE-1722</a>]
Druid adapter uses un-scaled value of <code class="highlighter-rouge">DECIMAL</code> literals (Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1723">CALCITE-1723</a>]
Match <code class="highlighter-rouge">DruidProjectFilterTransposeRule</code> against <code class="highlighter-rouge">DruidQuery</code> (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1714">CALCITE-1714</a>]
Do not push group by on druid metrics fields (Slim Bouguerra)</li>
</ul>
<h4 id="web-site-and-documentation-7">Web site and documentation</h4>
<ul>
<li>Michael Mior joins PMC</li>
<li>Add 3 new committers (Zhiqiang-He, Kevin Liew, Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1854">CALCITE-1854</a>]
Fix value range of TINYINT in documentation (James Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1827">CALCITE-1827</a>]
Document <code class="highlighter-rouge">TIMESTAMPADD</code>, <code class="highlighter-rouge">TIMESTAMPDIFF</code> functions (SunJincheng)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1796">CALCITE-1796</a>]
Update materialized views documentation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1566">CALCITE-1566</a>]
Better documentation on the use of materialized views</li>
</ul>
<h2 id="v1-12-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.12.0">1.12.0</a> / 2017-03-24</h2>
<p><a href="../news/2017/03/24/release-1.12.0">Features of note</a> this release are
JDK 9 support,
the new file/web and Apache Pig adapters,
general improvements to the Druid adapter,
more helpful error messages if you get a table or column name wrong,
improved the plans for correlated sub-queries,
support for <code class="highlighter-rouge">TUMBLE</code>, <code class="highlighter-rouge">HOP</code> and <code class="highlighter-rouge">SESSION</code> window functions in streaming and regular queries,
experimental support for <code class="highlighter-rouge">MATCH_RECOGNIZE</code> clause for complex-event processing (CEP),
several new built-in functions to comply with the ODBC/JDBC standard.</p>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 1.7, 1.8, 9;
Guava versions 14.0 to 21.0;
Druid version 0.9.1.1;
other software versions as specified in <code class="highlighter-rouge">pom.xml</code>.</p>
<h3 id="new-features-9">New features</h3>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1666">CALCITE-1666</a>]
Support for modifiable views with extended columns (Kevin Liew)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1655">CALCITE-1655</a>]
Druid adapter: add <code class="highlighter-rouge">IN</code> filter (Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1641">CALCITE-1641</a>]
Add parser and validator support for <code class="highlighter-rouge">MATCH_RECOGNIZE</code>, a new clause for
complex-event processing (CEP) (Zhiqiang-He)
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1686">CALCITE-1686</a>]
Only allow <code class="highlighter-rouge">FINAL</code> and other functions inside <code class="highlighter-rouge">MATCH_RECOGNIZE</code> (Zhiqiang-He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1689">CALCITE-1689</a>]
Remove <code class="highlighter-rouge">PATTERN_DEFINE_AS</code> in SqlStdOperatorTable; <code class="highlighter-rouge">MATCH_RECOGNIZE</code> now uses
<code class="highlighter-rouge">AS</code> (Zhiqiang-He)</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1668">CALCITE-1668</a>]
Simplify <code class="highlighter-rouge">1 = 1</code> to <code class="highlighter-rouge">TRUE</code>, <code class="highlighter-rouge">1 &gt; 2</code> to <code class="highlighter-rouge">FALSE</code> (Kevin Risden)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1598">CALCITE-1598</a>]
Pig adapter (Eli Levine)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1661">CALCITE-1661</a>]
Druid adapter: Support aggregation functions on <code class="highlighter-rouge">DECIMAL</code> columns</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1615">CALCITE-1615</a>]
Support <code class="highlighter-rouge">HOP</code> and <code class="highlighter-rouge">SESSION</code> functions in the <code class="highlighter-rouge">GROUP BY</code> clause
(Julian Hyde and Haohui Mai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1494">CALCITE-1494</a>]
More efficient plan for correlated sub-queries, omitting value-generating
scans where possible</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1638">CALCITE-1638</a>]
Simplify <code class="highlighter-rouge">$x = $x</code> to <code class="highlighter-rouge">$x is not null</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-884">CALCITE-884</a>]
File adapter (Henry Olson)
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1704">CALCITE-1704</a>]
Execute queries on CSV files using simple <code class="highlighter-rouge">sqlline</code> command</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1676">CALCITE-1676</a>]
Scan directory for .csv, .json and .gz files</li>
<li>Allow multiple Calcite columns to be derived from one HTML column,
e.g. Location → Lat, Lon</li>
<li>Improved pattern match: added <code class="highlighter-rouge">matchSeq</code> to allow selection of
<i>n</i>th match</li>
<li>Add replace patterns to cell parsing logic</li>
<li>Add handling for tables without <code class="highlighter-rouge">&lt;TH&gt;</code> elements</li>
<li>Unit tests using local files (URL tests are contingent on network
access)</li>
<li>Ability to parse HTML, CSV and JSON from local files</li>
<li>Combine the <a href="https://github.com/HenryOlson/optiq-web">optiq-web</a>
project with code from the
<a href="/org/apache/calcite/adapter/csv/package-summary.html">CSV adapter</a></li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1652">CALCITE-1652</a>]
Allow <code class="highlighter-rouge">GROUPING</code> function to have multiple arguments, like <code class="highlighter-rouge">GROUPING_ID</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1634">CALCITE-1634</a>]
Make <code class="highlighter-rouge">RelBuilder.distinct</code> no-op if input is already distinct; use it in
<code class="highlighter-rouge">RelDecorrelator</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1635">CALCITE-1635</a>]
Add <code class="highlighter-rouge">MinRowCount</code> metadata</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1628">CALCITE-1628</a>]
Add an alternative match pattern for <code class="highlighter-rouge">SemiJoinRule</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1618">CALCITE-1618</a>]
<code class="highlighter-rouge">SortProjectTransposeRule</code> should check for monotonicity preserving <code class="highlighter-rouge">CAST</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1510">CALCITE-1510</a>]
In <code class="highlighter-rouge">INSERT</code>/<code class="highlighter-rouge">UPSERT</code> without an explicit target column list, allow fewer source
columns than table (Kevin Liew)
<ul>
<li>Check for default value only when target field is null
(Rajeshbabu Chintaguntla)</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1603">CALCITE-1603</a>]
Support <code class="highlighter-rouge">TUMBLE</code> window function in the <code class="highlighter-rouge">GROUP BY</code> clause (Julian Hyde and
Haohui Mai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1606">CALCITE-1606</a>]
Add datetime scalar functions (Laurent Goujon)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1604">CALCITE-1604</a>]
Add JDBC/ODBC scalar functions <code class="highlighter-rouge">DATABASE</code>, <code class="highlighter-rouge">IFNULL</code>, <code class="highlighter-rouge">USER</code> (Laurent Goujon)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1549">CALCITE-1549</a>]
More helpful error message when schema, table or column not found</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-420">CALCITE-420</a>]
Add <code class="highlighter-rouge">REPLACE</code> function, callable with and without JDBC escape syntax (Riccardo
Tommasini)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1557">CALCITE-1557</a>]
Add numeric scalar functions (Laurent Goujon)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1258">CALCITE-1258</a>]
JDK9</li>
</ul>
<h4 id="bug-fixes-api-changes-and-minor-enhancements-9">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1716">CALCITE-1716</a>]
Fix Cassandra integration tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1715">CALCITE-1715</a>]
Downgrade to Guava 19.0 to fix Cassandra incompatibility</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1706">CALCITE-1706</a>]
Disable <code class="highlighter-rouge">DruidAggregateFilterTransposeRule</code>, because it causes fine-grained
aggregations to be pushed to Druid</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1695">CALCITE-1695</a>]
Add class <code class="highlighter-rouge">RexSimplify</code>, providing an explicit <code class="highlighter-rouge">RexExecutor</code> for methods to
simplify <code class="highlighter-rouge">RexNode</code>s</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1694">CALCITE-1694</a>]
Pig adapter: Use the shaded Avatica dependency instead</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1561">CALCITE-1561</a>]
Make <code class="highlighter-rouge">PigTest</code> cluster aware of data files; hopefully this will prevent
intermittent test failures (Eli Levine)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1696">CALCITE-1696</a>]
Support <code class="highlighter-rouge">RexLocalRef</code> for <code class="highlighter-rouge">EXPLAIN PLAN AS JSON</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1683">CALCITE-1683</a>]
Druid-specific rules to transpose <code class="highlighter-rouge">Filter</code> with other relations
(Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1684">CALCITE-1684</a>]
Change default precision of <code class="highlighter-rouge">VARCHAR</code> and <code class="highlighter-rouge">VARBINARY</code> types from 1 to
“unspecified” (Kevin Liew)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1691">CALCITE-1691</a>]
<code class="highlighter-rouge">ClassCastException</code> in <code class="highlighter-rouge">RelOptUtil.containsNullableFields</code>, attempting to
convert executor to <code class="highlighter-rouge">RexExecutorImpl</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1688">CALCITE-1688</a>]
Infinite loop during materialization substitution if query contains <code class="highlighter-rouge">Union</code>,
<code class="highlighter-rouge">Minus</code> or <code class="highlighter-rouge">Intersect</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1665">CALCITE-1665</a>]
<code class="highlighter-rouge">HAVING</code> support in <code class="highlighter-rouge">RelToSqlConverter</code> (Zhiqiang He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1673">CALCITE-1673</a>]
In CSV adapter, query with <code class="highlighter-rouge">ORDER BY</code> or <code class="highlighter-rouge">GROUP BY</code> on <code class="highlighter-rouge">TIMESTAMP</code> column
throws CompileException (Gangadhar Kairi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1674">CALCITE-1674</a>]
<code class="highlighter-rouge">LIKE</code> does not match value that contains newline (Mark Payne)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1675">CALCITE-1675</a>]
Two-level column name cannot be resolved in <code class="highlighter-rouge">ORDER BY</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1667">CALCITE-1667</a>]
Forbid calls to JDK APIs that use the default locale, time zone or character
set</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1656">CALCITE-1656</a>]
Improve cost function in <code class="highlighter-rouge">DruidQuery</code> to encourage early column pruning
(Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1664">CALCITE-1664</a>]
<code class="highlighter-rouge">CAST('&lt;string&gt;' as TIMESTAMP)</code> wrongly adds part of sub-second fraction to the
value</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1659">CALCITE-1659</a>]
Simplifying <code class="highlighter-rouge">CAST('YYYY-MM-DD hh:mm:ss.SSS' as TIMESTAMP)</code> should round the
sub-second fraction (Remus Rusanu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1439">CALCITE-1439</a>]
Handle errors during constant reduction</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1653">CALCITE-1653</a>]
Pass an expression executor to <code class="highlighter-rouge">RexUtil.simplify</code> for constant reduction (Remus
Rusanu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1601">CALCITE-1601</a>]
<code class="highlighter-rouge">DateRangeRules</code> loses OR filters</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1637">CALCITE-1637</a>]
Add mutable equivalents for all relational expressions (e.g. <code class="highlighter-rouge">MutableFilter</code>)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1621">CALCITE-1621</a>]
Add a cast around the NULL literal in aggregate rules (Anton Mushin)
<ul>
<li>Add <code class="highlighter-rouge">RexBuilder.makeNullLiteral(RelDataType)</code></li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1649">CALCITE-1649</a>]
Data type mismatch in <code class="highlighter-rouge">EnumerableMergeJoin</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1636">CALCITE-1636</a>]
JDBC adapter generates wrong SQL for self join with sub-query (Zhiqiang-He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1633">CALCITE-1633</a>]
In plans, output <code class="highlighter-rouge">Correlate.joinType</code> attribute in lower-case, same as
<code class="highlighter-rouge">Join.joinType</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1632">CALCITE-1632</a>]
Return type of “datetime + interval” expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-365">CALCITE-365</a>]
<code class="highlighter-rouge">AssertionError</code> while translating query with <code class="highlighter-rouge">WITH</code> and correlated sub-query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1623">CALCITE-1623</a>]
Make sure <code class="highlighter-rouge">DATE</code>, <code class="highlighter-rouge">TIME</code> and <code class="highlighter-rouge">TIMESTAMP</code> literals have <code class="highlighter-rouge">Calendar</code> with GMT
timezone</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1619">CALCITE-1619</a>]
<code class="highlighter-rouge">CAST</code> is ignored by rules pushing operators into <code class="highlighter-rouge">DruidQuery</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1617">CALCITE-1617</a>]
Druid adapter: Send timestamp literals to Druid as local time, not UTC</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1500">CALCITE-1500</a>]
Decouple materialization and lattice substitution from <code class="highlighter-rouge">VolcanoPlanner</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1589">CALCITE-1589</a>]
Druid adapter: <code class="highlighter-rouge">timeseries</code> query shows all days, even if no data</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1572">CALCITE-1572</a>]
<code class="highlighter-rouge">JdbcSchema</code> throws exception when detecting nullable columns (Wu Xiang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1610">CALCITE-1610</a>]
<code class="highlighter-rouge">RelBuilder</code> sort-combining optimization treats aliases incorrectly (Jess
Balint)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1595">CALCITE-1595</a>]
<code class="highlighter-rouge">RelBuilder.call</code> throws <code class="highlighter-rouge">NullPointerException</code> if argument types are invalid
(Jess Balint)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1602">CALCITE-1602</a>]
Remove uses of deprecated APIs</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1569">CALCITE-1569</a>]
Code generation for fields of type <code class="highlighter-rouge">java.sql.Date</code> (Zhen Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1582">CALCITE-1582</a>]
<code class="highlighter-rouge">RelToSqlConverter</code> doesn’t handle cartesian join (Jess Balint)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1597">CALCITE-1597</a>]
Obsolete <code class="highlighter-rouge">Util.newInternal</code>, <code class="highlighter-rouge">.pre</code>, <code class="highlighter-rouge">.post</code>, <code class="highlighter-rouge">.permAssert</code> and
<code class="highlighter-rouge">Throwables.propagate</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1586">CALCITE-1586</a>]
JDBC adapter generates wrong SQL if <code class="highlighter-rouge">UNION</code> has more than two inputs (Zhiqiang
He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1535">CALCITE-1535</a>]
Give error if column referenced in <code class="highlighter-rouge">ORDER BY</code> is ambiguous (Zhen Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1594">CALCITE-1594</a>]
<code class="highlighter-rouge">ConventionTraitDef.getConversionData()</code> is not thread-safe</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1577">CALCITE-1577</a>]
Druid adapter: Incorrect result - limit on timestamp disappears</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1587">CALCITE-1587</a>]
Druid adapter: <code class="highlighter-rouge">topN</code> query returns approximate results</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1578">CALCITE-1578</a>]
Druid adapter: wrong semantics of <code class="highlighter-rouge">topN</code> query limit with granularity</li>
<li>Druid adapter: Add <code class="highlighter-rouge">enum Granularity</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1592">CALCITE-1592</a>]
<code class="highlighter-rouge">SqlToRelConverter</code> throws <code class="highlighter-rouge">UnsupportedOperationException</code> if query has
<code class="highlighter-rouge">NOT ... NOT IN</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1590">CALCITE-1590</a>]
Support Guava version 21.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1575">CALCITE-1575</a>]
Literals may lose precision during expression reduction</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1546">CALCITE-1546</a>]
Wrong plan for <code class="highlighter-rouge">NOT IN</code> sub-queries with disjunction</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1574">CALCITE-1574</a>]
Memory leak in maven</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1571">CALCITE-1571</a>]
Could not resolve view with <code class="highlighter-rouge">SimpleCalciteSchema</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1558">CALCITE-1558</a>]
<code class="highlighter-rouge">AggregateExpandDistinctAggregatesRule</code> gets field mapping wrong if group key
is used in aggregate function (Zhenghua Gao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1562">CALCITE-1562</a>]
Update jsr305 from 1.3.9 to 3.0.1</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1563">CALCITE-1563</a>]
In case-insensitive connection, non-existent tables use alphabetically
preceding table</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1544">CALCITE-1544</a>]
<code class="highlighter-rouge">AggregateJoinTransposeRule</code> fails to preserve row type (Kurt Young)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1543">CALCITE-1543</a>]
Correlated scalar sub-query with multiple aggregates gives <code class="highlighter-rouge">AssertionError</code>
(Kurt Young)</li>
</ul>
<h4 id="web-site-and-documentation-8">Web site and documentation</h4>
<ul>
<li>Maryann Xue joins PMC</li>
<li>Add 3 new committers (Gian Merlino, Jess Balint, Laurent Goujon)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1657">CALCITE-1657</a>]
Release Calcite 1.12.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1677">CALCITE-1677</a>]
Replace duplicate avatica docs with a redirect</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1685">CALCITE-1685</a>]
Site: <code class="highlighter-rouge">defaultNullCollation</code> key listed as <code class="highlighter-rouge">materializationsEnabled</code>
(Kevin Liew)</li>
<li>Add MapD to <a href="/docs/powered_by.html">Powered by
Calcite</a> page (Todd Mostak)</li>
<li>Diagram of logos of projects and products powered by Calcite</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1622">CALCITE-1622</a>]
Bugs in website example code (Damjan Jovanovic)</li>
</ul>
<h2 id="v1-11-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.11.0">1.11.0</a> / 2017-01-09</h2>
<p>Nearly three months after the previous release, there is a long list
of improvements and bug-fixes, many of them making planner rules
smarter.</p>
<p>Several adapters have improvements:</p>
<ul>
<li>The JDBC adapter can now push down DML (<code class="highlighter-rouge">INSERT</code>, <code class="highlighter-rouge">UPDATE</code>, <code class="highlighter-rouge">DELETE</code>),
windowed aggregates (<code class="highlighter-rouge">OVER</code>), <code class="highlighter-rouge">IS NULL</code> and <code class="highlighter-rouge">IS NOT NULL</code> operators.</li>
<li>The Cassandra adapter now supports authentication.</li>
<li>Several key bug-fixes in the Druid adapter.</li>
</ul>
<p>For correlated and uncorrelated sub-queries, we generate more
efficient plans (for example, in some correlated queries we no longer
require a sub-query to generate the values of the correlating
variable), can now handle multiple correlations, and have also fixed a
few correctness bugs.</p>
<p>New SQL syntax:</p>
<ul>
<li><code class="highlighter-rouge">CROSS APPLY</code> and <code class="highlighter-rouge">OUTER APPLY</code>;</li>
<li><code class="highlighter-rouge">MINUS</code> as a synonym for <code class="highlighter-rouge">EXCEPT</code>;</li>
<li>an <code class="highlighter-rouge">AS JSON</code> option for the <code class="highlighter-rouge">EXPLAIN</code> command;</li>
<li>compound identifiers in the target list of <code class="highlighter-rouge">INSERT</code>, allowing you to
insert into individual fields of record-valued columns (or column
families if you are using the Apache Phoenix adapter).</li>
</ul>
<p>A variety of new and extended built-in functions: <code class="highlighter-rouge">CONVERT</code>, <code class="highlighter-rouge">LTRIM</code>,
<code class="highlighter-rouge">RTRIM</code>, 3-parameter <code class="highlighter-rouge">LOCATE</code> and <code class="highlighter-rouge">POSITION</code>, <code class="highlighter-rouge">RAND</code>, <code class="highlighter-rouge">RAND_INTEGER</code>,
and <code class="highlighter-rouge">SUBSTRING</code> applied to binary types.</p>
<p>There are minor but potentially breaking API changes in
[<a href="https://issues.apache.org/jira/browse/CALCITE-1519">CALCITE-1519</a>]
(interface <code class="highlighter-rouge">SubqueryConverter</code> becomes <code class="highlighter-rouge">SubQueryConverter</code> and some
similar changes in the case of classes and methods) and
[<a href="https://issues.apache.org/jira/browse/CALCITE-1530">CALCITE-1530</a>]
(rename <code class="highlighter-rouge">Shuttle</code> to <code class="highlighter-rouge">Visitor</code>, and create a new class <code class="highlighter-rouge">Visitor&lt;R&gt;</code>).
See the cases for more details.</p>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 1.7, 1.8;
Guava versions 14.0 to 19.0;
Druid version 0.9.1.1;
other software versions as specified in <code class="highlighter-rouge">pom.xml</code>.</p>
<h4 id="new-features-10">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1551">CALCITE-1551</a>]
Preserve alias in <code class="highlighter-rouge">RelBuilder.project</code> (Jess Balint)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1552">CALCITE-1552</a>]
Add <code class="highlighter-rouge">RAND</code> function, returning <code class="highlighter-rouge">DOUBLE</code> values in the range 0..1</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1414">CALCITE-1414</a>]
Add <code class="highlighter-rouge">RAND_INTEGER</code> function, which returns a random integer modulo N (Julian
Feinauer)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1540">CALCITE-1540</a>]
Support multiple columns in <code class="highlighter-rouge">PARTITION BY</code> clause of window function
(Hongbin Ma)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1534">CALCITE-1534</a>]
Allow compound identifiers in <code class="highlighter-rouge">INSERT</code> target column list</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1529">CALCITE-1529</a>]
Support <code class="highlighter-rouge">CREATE TABLE</code> in tests (and only in tests)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1527">CALCITE-1527</a>]
Support DML in the JDBC adapter (Christian Tzolov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1523">CALCITE-1523</a>]
In <code class="highlighter-rouge">RelBuilder</code>, add <code class="highlighter-rouge">field</code> method to reference input to join by alias (Jess
Balint)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1524">CALCITE-1524</a>]
Add a project to the planner root so that rules know which output fields are
used</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1425">CALCITE-1425</a>]
Support two-level column structure in <code class="highlighter-rouge">INSERT</code>/<code class="highlighter-rouge">UPDATE</code>/<code class="highlighter-rouge">MERGE</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1472">CALCITE-1472</a>]
Support <code class="highlighter-rouge">CROSS</code>/<code class="highlighter-rouge">OUTER APPLY</code> syntax (Jark Wu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1506">CALCITE-1506</a>]
Push <code class="highlighter-rouge">OVER</code> clause to underlying SQL via JDBC adapter (Christian Tzolov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1509">CALCITE-1509</a>]
Allow overriding the convertlet table in CalcitePrepareImpl (Gian Merlino)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1483">CALCITE-1483</a>]
Generate simpler logic for <code class="highlighter-rouge">NOT IN</code> if we can deduce that the key is never null</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1497">CALCITE-1497</a>]
Infer <code class="highlighter-rouge">IS NOT NULL</code>, and project predicates</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1489">CALCITE-1489</a>]
Add rule, <code class="highlighter-rouge">AggregateValuesRule</code>, that applies to an <code class="highlighter-rouge">Aggregate</code> on an empty
relation (Gian Merlino)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1447">CALCITE-1447</a>]
Implement <code class="highlighter-rouge">INTERSECT DISTINCT</code> by rewriting to <code class="highlighter-rouge">UNION ALL</code> and counting
(Pengcheng Xiong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1389">CALCITE-1389</a>]
Add a rewrite rule to use materialized views with joins</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1125">CALCITE-1125</a>]
<code class="highlighter-rouge">MINUS</code> as a synonym for <code class="highlighter-rouge">EXCEPT</code> (enabled in Oracle10 conformance)
(Chandni Singh)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1453">CALCITE-1453</a>]
Support <code class="highlighter-rouge">ANY</code> type with binary comparison and arithmetic operators
(Jungtaek Lim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1444">CALCITE-1444</a>]
Add <code class="highlighter-rouge">CONVERT</code> function (Laurent Goujon)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1448">CALCITE-1448</a>]
Add rules to flatten and prune <code class="highlighter-rouge">Intersect</code> and <code class="highlighter-rouge">Minus</code>;
flatten set-operators if the top is <code class="highlighter-rouge">DISTINCT</code> and bottom is <code class="highlighter-rouge">ALL</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1426">CALCITE-1426</a>]
Support customized star expansion in <code class="highlighter-rouge">Table</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1454">CALCITE-1454</a>]
Allow custom implementations of <code class="highlighter-rouge">SqlConformance</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1417">CALCITE-1417</a>]
In <code class="highlighter-rouge">RelBuilder</code>, simplify “CAST(literal TO type)” to a literal when possible</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1443">CALCITE-1443</a>]
Add authentication support in Cassandra adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1404">CALCITE-1404</a>]
Implement <code class="highlighter-rouge">FILTER</code> on aggregate functions in <code class="highlighter-rouge">Interpreter</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1418">CALCITE-1418</a>]
Implement <code class="highlighter-rouge">SUBSTRING</code> function for <code class="highlighter-rouge">BINARY</code> and <code class="highlighter-rouge">VARBINARY</code> (Jungtaek Lim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1422">CALCITE-1422</a>]
In JDBC adapter, allow <code class="highlighter-rouge">IS NULL</code> and <code class="highlighter-rouge">IS NOT NULL</code> operators in generated SQL
join condition (Viktor Batytskyi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1419">CALCITE-1419</a>]
Implement JDBC functions: <code class="highlighter-rouge">LTRIM</code>, <code class="highlighter-rouge">RTRIM</code> and 3-parameter <code class="highlighter-rouge">LOCATE</code> and
<code class="highlighter-rouge">POSITION</code> (Jungtaek Lim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-917">CALCITE-917</a>]
Add <code class="highlighter-rouge">AS JSON</code> as output option for <code class="highlighter-rouge">EXPLAIN</code></li>
</ul>
<h4 id="bug-fixes-api-changes-and-minor-enhancements-10">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1559">CALCITE-1559</a>]
Convert example models to stricter JSON</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1560">CALCITE-1560</a>]
Remove <code class="highlighter-rouge">avatica</code> directory from <code class="highlighter-rouge">sqlline</code>’s class path</li>
<li>Remove non-ASCII characters from Java source files</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1511">CALCITE-1511</a>]
Decorrelation fails if query has more than one <code class="highlighter-rouge">EXISTS</code> in <code class="highlighter-rouge">WHERE</code> clause</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1555">CALCITE-1555</a>]
Improve <code class="highlighter-rouge">RelNode</code> validation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1548">CALCITE-1548</a>]
Instantiate function objects once per query</li>
<li>Add lock to <code class="highlighter-rouge">JdbcAdapterTest</code>, to ensure that tests that modify data run in
series</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1519">CALCITE-1519</a>]
Standardize on “sub-query” rather than “subquery” in class names and comments</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1493">CALCITE-1493</a>]
Wrong plan for <code class="highlighter-rouge">NOT IN</code> correlated queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1526">CALCITE-1526</a>]
Use <code class="highlighter-rouge">Strong</code> to infer whether a predicate’s inputs may be null</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1530">CALCITE-1530</a>]
Create a visitor to traverse linq4j expressions without mutating them, and
rename <code class="highlighter-rouge">Visitor</code> to <code class="highlighter-rouge">Shuttle</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1507">CALCITE-1507</a>]
<code class="highlighter-rouge">OFFSET</code> cannot be pushed through a <code class="highlighter-rouge">JOIN</code> if the non-preserved side of outer
join is not count-preserving</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1522">CALCITE-1522</a>]
Fix error message for <code class="highlighter-rouge">SetOp</code> with incompatible args (Jess Balint)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1532">CALCITE-1532</a>]
In <code class="highlighter-rouge">HttpUtils</code>, don’t log HTTP requests; they may contain user name, password</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1037">CALCITE-1037</a>]
Column uniqueness is calculated incorrectly for <code class="highlighter-rouge">Correlate</code> (Alexey Makhmutov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1495">CALCITE-1495</a>]
<code class="highlighter-rouge">SemiJoinRule</code> should not apply to <code class="highlighter-rouge">RIGHT</code> and <code class="highlighter-rouge">FULL JOIN</code>, and should strip
<code class="highlighter-rouge">LEFT JOIN</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1516">CALCITE-1516</a>]
Upgrade <code class="highlighter-rouge">hydromatic-resource-maven-plugin</code>, and re-work <code class="highlighter-rouge">SaffronProperties</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1498">CALCITE-1498</a>]
Avoid <code class="highlighter-rouge">LIMIT</code> with trivial <code class="highlighter-rouge">ORDER BY</code> being pushed through <code class="highlighter-rouge">JOIN</code> endlessly</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1501">CALCITE-1501</a>]
<code class="highlighter-rouge">EnumerableUnion</code> should use array comparator when row format is <code class="highlighter-rouge">ARRAY</code> (Dayue
Gao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1502">CALCITE-1502</a>]
<code class="highlighter-rouge">AssertionError</code> in <code class="highlighter-rouge">ReduceExpressionsRule</code> when <code class="highlighter-rouge">CASE</code> is used with optional
value and literal (Serhii Harnyk)</li>
<li>Cosmetic changes, and deprecate some methods</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1486">CALCITE-1486</a>]
Invalid “Invalid literal” error for complex expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1488">CALCITE-1488</a>]
<code class="highlighter-rouge">ValuesReduceRule</code> should ignore empty <code class="highlighter-rouge">Values</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1384">CALCITE-1384</a>]
Extension point for <code class="highlighter-rouge">ALTER</code> statements (Gabriel Reid)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1484">CALCITE-1484</a>]
Upgrade Apache parent POM to version 18</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1482">CALCITE-1482</a>]
Fix leak on CassandraSchema creation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1479">CALCITE-1479</a>]
<code class="highlighter-rouge">AssertionError</code> in <code class="highlighter-rouge">ReduceExpressionsRule</code> on multi-column <code class="highlighter-rouge">IN</code> sub-query
(Gian Merlino)</li>
<li>Upgrade <code class="highlighter-rouge">Quidem</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1416">CALCITE-1416</a>]
Make classes implement <code class="highlighter-rouge">AutoCloseable</code> where possible (Chinmay Kolhatkar)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1474">CALCITE-1474</a>]
Upgrade <code class="highlighter-rouge">aggdesigner</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1270">CALCITE-1270</a>]
Upgrade to <code class="highlighter-rouge">avatica-1.9</code>, <code class="highlighter-rouge">sqlline-1.2.0</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1461">CALCITE-1461</a>]
Hard-coded class name in <code class="highlighter-rouge">JaninoRelMetadataProvider</code> breaks shading (Jark Wu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1465">CALCITE-1465</a>]
Store constants as a derived field in <code class="highlighter-rouge">RelOptPredicateList</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1429">CALCITE-1429</a>]
Druid adapter must send <code class="highlighter-rouge">fromNext</code> when requesting rows from Druid (Jiarong
Wei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1430">CALCITE-1430</a>]
In Druid adapter, <code class="highlighter-rouge">pagingIdentifiers</code> might have more than one value (Jiarong
Wei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1442">CALCITE-1442</a>]
Interval fractional second precision returns wrong value (Laurent Goujon)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1434">CALCITE-1434</a>]
User-defined aggregate function that uses a generic interface (Arun Mahadevan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1431">CALCITE-1431</a>]
<code class="highlighter-rouge">RelDataTypeFactoryImpl.copyType()</code> did not copy <code class="highlighter-rouge">StructKind</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1424">CALCITE-1424</a>]
Druid type is called <code class="highlighter-rouge">FLOAT</code>, not <code class="highlighter-rouge">DOUBLE</code> (Jiarong Wei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1415">CALCITE-1415</a>]
Add sub-query support for RelStructuredTypeFlattener</li>
</ul>
<h4 id="web-site-and-documentation-9">Web site and documentation</h4>
<ul>
<li>Change PMC chair</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1459">CALCITE-1459</a>]
Add Apache Apex to “Powered By” page (Chinmay Kolhatkar)</li>
</ul>
<h2 id="v1-10-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.10.0">1.10.0</a> / 2016-10-12</h2>
<p>This release comes shortly after 1.9.0. It includes mainly bug-fixes for the core and
Druid adapter. For the latest, we fixed an
<a href="https://issues.apache.org/jira/browse/CALCITE-1403">important issue</a> that
prevented us from handling consistently time dimensions in different time zones.</p>
<p>Compatibility: This release is tested
on Linux, Mac OS X, Microsoft Windows;
using Oracle JDK 1.7, 1.8;
Guava versions 14.0 to 19.0;
Druid version 0.9.1.1;
other software versions as specified in <code class="highlighter-rouge">pom.xml</code>.</p>
<h4 id="new-feature">New feature</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1374">CALCITE-1374</a>]
Support operator <code class="highlighter-rouge">!=</code> as an alternative to <code class="highlighter-rouge">&lt;&gt;</code></li>
</ul>
<h4 id="bug-fixes-api-changes-and-minor-enhancements-11">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1378">CALCITE-1378</a>]
<code class="highlighter-rouge">ArrayIndexOutOfBoundsException</code> in sql-to-rel conversion for two-level columns</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1379">CALCITE-1379</a>]
When expanding <code class="highlighter-rouge">STAR</code>, expand sub-fields in <code class="highlighter-rouge">RecordType</code> columns of <code class="highlighter-rouge">StructKind.PEEK_FIELDS</code> and <code class="highlighter-rouge">StructKind.PEEK_FIELDS_DEFAULT</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1381">CALCITE-1381</a>]
Function quantifier should be retained in a cloned Sql call (zhengdong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1386">CALCITE-1386</a>]
<code class="highlighter-rouge">ITEM</code> operator ignores the value type of the collection, assigns to Object variable (Jungtaek Lim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1392">CALCITE-1392</a>]
Druid default time column not properly recognized</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1394">CALCITE-1394</a>]
Using <code class="highlighter-rouge">CoreMatchers.containsString</code> causes javadoc errors</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1396">CALCITE-1396</a>]
<code class="highlighter-rouge">isDeterministic</code> only explores top <code class="highlighter-rouge">RexCall</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1397">CALCITE-1397</a>]
<code class="highlighter-rouge">ClassCastException</code> in <code class="highlighter-rouge">FilterReduceExpressionsRule</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1398">CALCITE-1398</a>]
Change visibility of <code class="highlighter-rouge">RelFieldTrimmer</code> utility methods</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1400">CALCITE-1400</a>]
<code class="highlighter-rouge">AggregatePullUpConstantsRule</code> might adjust aggregation function parameters indices wrongly</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1402">CALCITE-1402</a>]
Druid Filter translation incorrect if input reference is in RHS of comparison</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1403">CALCITE-1403</a>]
<code class="highlighter-rouge">DruidAdapterIT</code> broken</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1420">CALCITE-1420</a>]
Allow Calcite JDBC Driver minor version to be greater than 9</li>
</ul>
<h4 id="web-site-and-documentation-10">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1393">CALCITE-1393</a>]
Exclude packages <code class="highlighter-rouge">org.apache.calcite.benchmarks.generated</code>, <code class="highlighter-rouge">org.openjdk.jmh</code> from javadoc</li>
</ul>
<h2 id="v1-9-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.9.0">1.9.0</a> / 2016-09-22</h2>
<p>This release includes extensions and fixes for the Druid adapter. New features were
added, such as the capability to
<a href="https://issues.apache.org/jira/browse/CALCITE-1357">recognize and translate Timeseries and TopN Druid queries</a>.
Moreover, this release contains multiple bug-fixes over the initial implementation of the
adapter. It is worth mentioning that most of these fixes were contributed by Druid developers,
which demonstrates the good reception of the adapter by that community.</p>
<p>We have added new SQL features too, e.g.,
<a href="https://issues.apache.org/jira/browse/CALCITE-1309">support for <code class="highlighter-rouge">LATERAL TABLE</code></a>.
There are multiple interesting extensions to the planner rules that should contribute to
obtain better plans, such as
<a href="https://issues.apache.org/jira/browse/CALCITE-1288">avoiding doing the same join twice</a>
in the presence of <code class="highlighter-rouge">COUNT DISTINCT</code>, or being able to
<a href="https://issues.apache.org/jira/browse/CALCITE-1220">simplify the expressions</a>
in the plan further. In addition, we implemented a rule to
<a href="https://issues.apache.org/jira/browse/CALCITE-1334">convert predicates on <code class="highlighter-rouge">EXTRACT</code> function calls into date ranges</a>.
The rule is not specific to Druid; however, in principle, it will be useful to identify
filter conditions on the time dimension of Druid data sources.</p>
<p>Finally, the release includes more than thirty bug-fixes, minor enhancements and internal
changes to planner rules and APIs.</p>
<p>Compatibility: This release is tested
on Linux, Mac OS X, Microsoft Windows;
using Oracle JDK 1.7, 1.8;
Guava versions 14.0 to 19.0;
other software versions as specified in <code class="highlighter-rouge">pom.xml</code>.</p>
<h4 id="new-features-11">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1208">CALCITE-1208</a>]
Improve two-level column structure handling</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1227">CALCITE-1227</a>]
Add streaming CSV table (Zhen Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1309">CALCITE-1309</a>]
Support <code class="highlighter-rouge">LATERAL TABLE</code> (Jark Wu)</li>
</ul>
<h4 id="druid-adapter">Druid adapter</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1292">CALCITE-1292</a>]
Druid metadata query is very slow (Michael Spector)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1324">CALCITE-1324</a>]
Druid metadata query throws exception if there are non-standard aggregators (Martin Karlsch)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1343">CALCITE-1343</a>]
Broken Druid query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1348">CALCITE-1348</a>]
In Druid adapter, adjust how <code class="highlighter-rouge">SegmentMetadataQuery</code> is used to detect types (Gian Merlino)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1357">CALCITE-1357</a>]
Recognize Druid <code class="highlighter-rouge">Timeseries</code> and <code class="highlighter-rouge">TopN</code> queries in <code class="highlighter-rouge">DruidQuery</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1358">CALCITE-1358</a>]
Push filters on time dimension to Druid</li>
</ul>
<h4 id="planner-rules">Planner rules</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1220">CALCITE-1220</a>]
Further extend simplify for reducing expressions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1288">CALCITE-1288</a>]
Avoid doing the same join twice if count(distinct) exists (Gautam Parai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1289">CALCITE-1289</a>]
<code class="highlighter-rouge">RexUtil.simplifyCase()</code> should account for nullability</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1290">CALCITE-1290</a>]
When converting to CNF, fail if the expression size exceeds a threshold</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1334">CALCITE-1334</a>]
Convert predicates on <code class="highlighter-rouge">EXTRACT</code> function calls into date ranges</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1342">CALCITE-1342</a>]
<code class="highlighter-rouge">ProjectPusher</code> should use rel factories when creating new rels, e.g. project/filter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1365">CALCITE-1365</a>]
Introduce <code class="highlighter-rouge">UnionPullUpConstantsRule</code></li>
</ul>
<h4 id="bug-fixes-api-changes-and-minor-enhancements-12">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-30">CALCITE-30</a>]
Implement <code class="highlighter-rouge">Statement.cancel</code> method</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-308">CALCITE-308</a>]
Wrong result when using <code class="highlighter-rouge">DATE</code>+<code class="highlighter-rouge">INTERVAL</code> arithmetics</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-319">CALCITE-319</a>]
Table aliases should follow case-sensitivity policy</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-528">CALCITE-528</a>]
Creating output row type of a Join does not obey case-sensitivity flags</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-991">CALCITE-991</a>]
Create separate <code class="highlighter-rouge">SqlFunctionCategory</code> values for table functions and macros (Julien Le Dem)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1043">CALCITE-1043</a>]
<code class="highlighter-rouge">RexOptUtil</code> does not support function table other than <code class="highlighter-rouge">SqlStdOperatorTable</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1095">CALCITE-1095</a>]
<code class="highlighter-rouge">NOT</code> precedence</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1148">CALCITE-1148</a>]
Trait conversion broken for <code class="highlighter-rouge">RelTraits</code> other than <code class="highlighter-rouge">Convention</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1278">CALCITE-1278</a>]
CalciteSignature’s ColumnMetaData for <code class="highlighter-rouge">DELETE</code> should be same as <code class="highlighter-rouge">INSERT</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1283">CALCITE-1283</a>]
Nullability incorrectly assigned in <code class="highlighter-rouge">SqlTypeFactory.leastRestrictiveSqlType()</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1284">CALCITE-1284</a>]
Move <code class="highlighter-rouge">Quidem</code> tests from <code class="highlighter-rouge">JdbcTest</code> into their own class</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1297">CALCITE-1297</a>]
<code class="highlighter-rouge">RelBuilder</code> should rename fields without creating an identity Project (Jark Wu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1302">CALCITE-1302</a>]
Create <code class="highlighter-rouge">SqlTypeName</code> values for each interval range, e.g. <code class="highlighter-rouge">YEAR_MONTH</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1305">CALCITE-1305</a>]
Case-insensitive table aliases and <code class="highlighter-rouge">GROUP BY</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1310">CALCITE-1310</a>]
Infer type of arguments to <code class="highlighter-rouge">BETWEEN</code> operator (Yiming Liu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1312">CALCITE-1312</a>]
Return type of <code class="highlighter-rouge">TIMESTAMP_ADD</code> applied to a <code class="highlighter-rouge">DATE</code> should be <code class="highlighter-rouge">TIMESTAMP</code> if unit is smaller than <code class="highlighter-rouge">DAY</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1313">CALCITE-1313</a>]
Validator should derive type of expression in <code class="highlighter-rouge">ORDER BY</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1314">CALCITE-1314</a>]
Intermittent failure in <code class="highlighter-rouge">SqlParserTest.testGenerateKeyWords</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1321">CALCITE-1321</a>]
In-list to join optimization should have configurable in-list size (Gautam Parai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1327">CALCITE-1327</a>]
Nested aggregate windowed query fails (Gautam Parai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1330">CALCITE-1330</a>]
DB2 does not support character sets in data type</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1332">CALCITE-1332</a>]
JDBC adapter for DB2 should always use aliases for tables: <code class="highlighter-rouge">x.y.z AS z</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1333">CALCITE-1333</a>]
<code class="highlighter-rouge">AggFunctions</code> supported by <code class="highlighter-rouge">JdbcAggregate</code> should depend on <code class="highlighter-rouge">SqlKind</code>, instead of operator instance</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1336">CALCITE-1336</a>]
Add view name to the <code class="highlighter-rouge">ViewExpander</code> (Julien Le Dem)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1337">CALCITE-1337</a>]
Lazy evaluate <code class="highlighter-rouge">RexCall</code> digests (Ted Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1340">CALCITE-1340</a>]
Window aggregates invalid error/error messages in some cases (Gautam Parai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1344">CALCITE-1344</a>]
Incorrect inferred precision when <code class="highlighter-rouge">BigDecimal</code> value is less than 1</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1346">CALCITE-1346</a>]
Invalid nested window aggregate query with alias (Gautam Parai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1360">CALCITE-1360</a>]
Custom schema in file in current directory gives <code class="highlighter-rouge">NullPointerException</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1366">CALCITE-1366</a>]
Metadata provider should not pull predicates up through <code class="highlighter-rouge">GROUP BY</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1370">CALCITE-1370</a>]
In <code class="highlighter-rouge">SqlKind</code>, add <code class="highlighter-rouge">OTHER_DDL</code> to <code class="highlighter-rouge">DDL</code> enum set (Rajeshbabu Chintaguntla)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1372">CALCITE-1372</a>]
Calcite generate wrong field names in JDBC adapter</li>
</ul>
<h4 id="web-site-and-documentation-11">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1229">CALCITE-1229</a>]
Restore API and Test API links to site</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1325">CALCITE-1325</a>]
Druid adapter requires Guava 14.0 or higher</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1329">CALCITE-1329</a>]
As part of release, generate a file containing multiple digests</li>
</ul>
<h2 id="v1-8-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.8.0">1.8.0</a> / 2016-06-13</h2>
<p>This release adds adapters for
<a href="https://issues.apache.org/jira/browse/CALCITE-1253">Elasticsearch</a> and
<a href="https://issues.apache.org/jira/browse/CALCITE-1121">Druid</a>.
It is also now easier to
<a href="https://issues.apache.org/jira/browse/CALCITE-1259">make a JDBC connection based upon a single adapter</a>.</p>
<p>There are several new SQL features: <code class="highlighter-rouge">UNNEST</code> with
<a href="https://issues.apache.org/jira/browse/CALCITE-855">multiple arguments</a>,
<a href="https://issues.apache.org/jira/browse/CALCITE-1250">MAP arguments</a>
and <a href="https://issues.apache.org/jira/browse/CALCITE-1225">with a JOIN</a>;
a <a href="https://issues.apache.org/jira/browse/CALCITE-1168">DESCRIBE</a> statement;
and a <a href="https://issues.apache.org/jira/browse/CALCITE-1115">TRANSLATE</a>
function like the one in Oracle and PostgreSQL.
We also added support for
<a href="https://issues.apache.org/jira/browse/CALCITE-1120">SELECT without FROM</a>
(equivalent to the <code class="highlighter-rouge">VALUES</code> clause, and widely used in MySQL and PostgreSQL),
and added a
<a href="/docs/adapter.html#jdbc-connect-string-parameters">conformance</a>
parameter to allow you to selectively enable this and other SQL features.</p>
<p>And a couple of dozen bug-fixes and enhancements to planner rules and APIs.</p>
<p>Compatibility: This release is tested
on Linux, Mac OS X, Microsoft Windows;
using Oracle JDK 1.7, 1.8;
Guava versions 14.0 to 19.0;
other software versions as specified in <code class="highlighter-rouge">pom.xml</code>.</p>
<h4 id="new-features-12">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1177">CALCITE-1177</a>]
Extend list of supported time units in <code class="highlighter-rouge">EXTRACT</code>, <code class="highlighter-rouge">CEIL</code> and <code class="highlighter-rouge">FLOOR</code> functions
(Venki Korukanti)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1259">CALCITE-1259</a>]
Allow connecting to a single schema without writing a model</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-750">CALCITE-750</a>]
Support aggregates within windowed aggregates (Gautam Parai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1250">CALCITE-1250</a>]
<code class="highlighter-rouge">UNNEST</code> applied to <code class="highlighter-rouge">MAP</code> data type (Johannes Schulte)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1253">CALCITE-1253</a>]
Elasticsearch adapter (Subhobrata Dey)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1228">CALCITE-1228</a>]
Bind parameters in <code class="highlighter-rouge">INSERT</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1120">CALCITE-1120</a>]
<code class="highlighter-rouge">SELECT</code> without <code class="highlighter-rouge">FROM</code> (Jimmy Xiang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-855">CALCITE-855</a>]
<code class="highlighter-rouge">UNNEST</code> with multiple arguments</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1225">CALCITE-1225</a>]
<code class="highlighter-rouge">UNNEST</code> with <code class="highlighter-rouge">JOIN</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1115">CALCITE-1115</a>]
Add <code class="highlighter-rouge">TRANSLATE</code> function with 3 parameters, like the one in Oracle (Javanshir
Yelchiyev)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1168">CALCITE-1168</a>]
Add <code class="highlighter-rouge">DESCRIBE</code> statement (Arina Ielchiieva)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1121">CALCITE-1121</a>]
Druid adapter
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1276">CALCITE-1276</a>]
In Druid adapter, deduce tables and columns if not specified</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1207">CALCITE-1207</a>]
Allow numeric connection properties, and ‘K’, ‘M’, ‘G’ suffixes</li>
</ul>
<h4 id="planner-rules-1">Planner rules</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1235">CALCITE-1235</a>]
Fully push down <code class="highlighter-rouge">LIMIT</code> + <code class="highlighter-rouge">OFFSET</code> in Cassandra</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1216">CALCITE-1216</a>]
Rule to convert <code class="highlighter-rouge">Filter</code>-on-<code class="highlighter-rouge">Scan</code> to materialized view (Amogh Margoor)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1200">CALCITE-1200</a>]
Extend <code class="highlighter-rouge">RelOptUtil.splitJoinCondition</code> to handle <code class="highlighter-rouge">IS NOT DISTINCT FROM</code>
(Venki Korukanti)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1211">CALCITE-1211</a>]
Allow free use of <code class="highlighter-rouge">CassandraSort</code> for <code class="highlighter-rouge">LIMIT</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1210">CALCITE-1210</a>]
Allow UUID filtering in Cassandra</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1182">CALCITE-1182</a>]
Add <code class="highlighter-rouge">ProjectRemoveRule</code> to pre-processing program of materialization
substitution</li>
</ul>
<h4 id="bug-fixes-api-changes-and-minor-enhancements-13">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1281">CALCITE-1281</a>]
Druid adapter wrongly returns all numeric values as <code class="highlighter-rouge">int</code> or <code class="highlighter-rouge">float</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1279">CALCITE-1279</a>]
Druid “select” query gives <code class="highlighter-rouge">ClassCastException</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1277">CALCITE-1277</a>]
Rat fails on source distribution due to <code class="highlighter-rouge">git.properties</code></li>
<li>Update KEYS</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1252">CALCITE-1252</a>]
Handle <code class="highlighter-rouge">ANY</code> type in <code class="highlighter-rouge">RexBuilder.ensureType</code> and <code class="highlighter-rouge">TypeFactory.leastRestrictive</code>
(Mehand Baid, Minji Kim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1151">CALCITE-1151</a>]
Fix <code class="highlighter-rouge">SqlSetOption</code> to correctly handle <code class="highlighter-rouge">SqlOperator.createCall</code>
(Sudheesh Katkam, Minji Kim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1106">CALCITE-1106</a>]
Expose constructor for <code class="highlighter-rouge">ProjectJoinTransposeRule</code> (Minji Kim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1107">CALCITE-1107</a>]
Make <code class="highlighter-rouge">SqlSumEmptyIsZeroAggFunction</code> constructor public (Minji Kim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1269">CALCITE-1269</a>]
Replace <code class="highlighter-rouge">IntList</code> with Guava <code class="highlighter-rouge">Ints</code> class</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1239">CALCITE-1239</a>]
Upgrade to avatica-1.8.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1266">CALCITE-1266</a>]
<code class="highlighter-rouge">RelBuilder.field</code> gets offsets wrong</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1264">CALCITE-1264</a>]
<code class="highlighter-rouge">Litmus</code> argument interpolation (Chris Baynes)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1245">CALCITE-1245</a>]
Allow <code class="highlighter-rouge">RelBuilder.scan</code> to take qualified table name (Chris Baynes)</li>
<li>Move code from <code class="highlighter-rouge">Enumerables</code> to <code class="highlighter-rouge">EnumerableDefaults</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1246">CALCITE-1246</a>]
Cleanup duplicate variables in <code class="highlighter-rouge">JoinPushThroughJoinRule</code> (Yi Xinglu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1241">CALCITE-1241</a>]
Add a Freemarker variable for adding non reserved keyword list to <code class="highlighter-rouge">Parser.jj</code>
template (Venki Korukanti)
<ul>
<li>Create a table in <code class="highlighter-rouge">SqlParserTest</code> of reserved keywords from various versions
of the SQL standard</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1150">CALCITE-1150</a>]
Add dynamic record type and dynamic star for schema-on-read table</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1238">CALCITE-1238</a>]
Unparsing a query with <code class="highlighter-rouge">LIMIT</code> but no <code class="highlighter-rouge">ORDER BY</code> gives invalid SQL (Emmanuel
Bastien)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1230">CALCITE-1230</a>]
Add SQLSTATE reference data as <code class="highlighter-rouge">enum SqlState</code> in Avatica, and
deprecate <code class="highlighter-rouge">SqlStateCodes</code> in Calcite</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1199">CALCITE-1199</a>]
Incorrect trimming of <code class="highlighter-rouge">CHAR</code> when performing cast to <code class="highlighter-rouge">VARCHAR</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1219">CALCITE-1219</a>]
Add method <code class="highlighter-rouge">SqlOperatorBinding.isOperandLiteral()</code> (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1222">CALCITE-1222</a>]
<code class="highlighter-rouge">DatabaseMetaData.getColumnLabel</code> returns null when query has <code class="highlighter-rouge">ORDER BY</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1215">CALCITE-1215</a>]
Fix missing override in <code class="highlighter-rouge">CassandraTable</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1212">CALCITE-1212</a>]
Fix NPE on some Cassandra projects</li>
<li>Remove trailing spaces from all source files</li>
<li>Move HTTP utilities from Splunk adapter to core</li>
<li>Test case for
[<a href="https://issues.apache.org/jira/browse/PHOENIX-2767">PHOENIX-2767</a>],
non-constant in <code class="highlighter-rouge">IN</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1166">CALCITE-1166</a>]
Disallow sub-classes of <code class="highlighter-rouge">RelOptRuleOperand</code></li>
<li>Remove all calls to deprecated methods</li>
<li>Add class <code class="highlighter-rouge">ConsList</code></li>
<li>More of [<a href="https://issues.apache.org/jira/browse/CALCITE-999">CALCITE-999</a>]
Clean up maven POM files</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1204">CALCITE-1204</a>]
Fix invalid Javadoc and suppress checkstyle “errors”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1170">CALCITE-1170</a>]
Allow <code class="highlighter-rouge">SqlSetOperator</code> to be overridden, as a regular <code class="highlighter-rouge">SqlOperator</code> can
(Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-746">CALCITE-746</a>]
Allow apache-rat to be run outside of release process</li>
</ul>
<h4 id="web-site-and-documentation-12">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1273">CALCITE-1273</a>]
Following
[<a href="https://issues.apache.org/jira/browse/CALCITE-306">CALCITE-306</a>],
update references to <code class="highlighter-rouge">EnumerableTableAccessRel</code> to <code class="highlighter-rouge">EnumerableTableScan</code></li>
<li>Fix typo in SQL (Yi Xinglu)</li>
<li>Site: add committer, and post slides/video from Polyalgebra talk</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1203">CALCITE-1203</a>]
Update to github-pages-67</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1202">CALCITE-1202</a>]
Lock version of Jekyll for bundler</li>
<li>Site: add upcoming talks, and fix link to Apache phonebook</li>
</ul>
<h2 id="v1-7-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.7.0">1.7.0</a> / 2016-03-22</h2>
<p>This is the first Apache Calcite release since
<a href="/avatica/news/2016/03/03/separate-project/">Avatica became an independent project</a>.
Calcite now depends on <a href="/avatica/">Avatica</a> in the
same way as it does other libraries, via a Maven dependency. To see
Avatica-related changes, see the
<a href="/avatica/docs/history.html#v1-7-1">release notes for Avatica 1.7.1</a>.</p>
<p>We have <a href="https://issues.apache.org/jira/browse/CALCITE-1080">added</a>
an <a href="/docs/adapter.html">adapter</a> for
<a href="https://cassandra.apache.org/">Apache Cassandra</a>.
You can map a Cassandra keyspace into Calcite as a schema, Cassandra
CQL tables as tables, and execute SQL queries on them, which Calcite
converts into <a href="https://cassandra.apache.org/doc/cql/CQL.html">CQL</a>.
Cassandra can define and maintain materialized views but the adapter
goes further: it can transparently rewrite a query to use a
materialized view even if the view is not mentioned in the query.</p>
<p>This release adds an
<a href="https://issues.apache.org/jira/browse/CALCITE-1066">Oracle-compatibility mode</a>.
If you add <code class="highlighter-rouge">fun=oracle</code> to your JDBC connect string, you get all of
the standard operators and functions plus Oracle-specific functions
<code class="highlighter-rouge">DECODE</code>, <code class="highlighter-rouge">NVL</code>, <code class="highlighter-rouge">LTRIM</code>, <code class="highlighter-rouge">RTRIM</code>, <code class="highlighter-rouge">GREATEST</code> and <code class="highlighter-rouge">LEAST</code>. We look
forward to adding more functions, and compatibility modes for other
databases, in future releases.</p>
<p>We’ve replaced our use of JUL (<code class="highlighter-rouge">java.util.logging</code>)
with <a href="https://slf4j.org/">SLF4J</a>. SLF4J provides an API which Calcite can use
independent of the logging implementation. This ultimately provides additional
flexibility to users, allowing them to configure Calcite’s logging within their
own chosen logging framework. This work was done in
[<a href="https://issues.apache.org/jira/browse/CALCITE-669">CALCITE-669</a>].</p>
<p>For users experienced with configuring JUL in Calcite previously, there are some
differences as some the JUL logging levels do not exist in SLF4J: <code class="highlighter-rouge">FINE</code>,
<code class="highlighter-rouge">FINER</code>, and <code class="highlighter-rouge">FINEST</code>, specifically. To deal with this, <code class="highlighter-rouge">FINE</code> was mapped
to SLF4J’s <code class="highlighter-rouge">DEBUG</code> level, while <code class="highlighter-rouge">FINER</code> and <code class="highlighter-rouge">FINEST</code> were mapped to SLF4J’s <code class="highlighter-rouge">TRACE</code>.</p>
<p>Compatibility: This release is tested
on Linux, Mac OS X, Microsoft Windows;
using Oracle JDK 1.7, 1.8;
Guava versions 12.0.1 to 19.0;
other software versions as specified in <code class="highlighter-rouge">pom.xml</code>.</p>
<h4 id="new-features-13">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1124">CALCITE-1124</a>]
Add <code class="highlighter-rouge">TIMESTAMPADD</code>, <code class="highlighter-rouge">TIMESTAMPDIFF</code> functions (Arina Ielchiieva)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1066">CALCITE-1066</a>]
Add Oracle function table, and functions <code class="highlighter-rouge">DECODE</code>, <code class="highlighter-rouge">NVL</code>, <code class="highlighter-rouge">LTRIM</code>, <code class="highlighter-rouge">RTRIM</code>,
<code class="highlighter-rouge">GREATEST</code>, <code class="highlighter-rouge">LEAST</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1080">CALCITE-1080</a>]
Cassandra adapter (Michael Mior)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1062">CALCITE-1062</a>]
In validation, lookup a (possibly overloaded) operator from an operator
table (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-551">CALCITE-551</a>]
Sub-query inside aggregate function</li>
</ul>
<h4 id="planner-rules-2">Planner rules</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1158">CALCITE-1158</a>]
Make <code class="highlighter-rouge">AggregateRemoveRule</code> extensible</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1116">CALCITE-1116</a>]
Extend <code class="highlighter-rouge">simplify</code> for reducing expressions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1104">CALCITE-1104</a>]
Materialized views in Cassandra (Michael Mior)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1130">CALCITE-1130</a>]
Add support for operators <code class="highlighter-rouge">IS NULL</code> and <code class="highlighter-rouge">IS NOT NULL</code> in
<code class="highlighter-rouge">RexImplicationChecker</code> (Amogh Margoor)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1129">CALCITE-1129</a>]
Extend <code class="highlighter-rouge">JoinUnionTransposeRule</code> to match <code class="highlighter-rouge">Union</code> instead of <code class="highlighter-rouge">LogicalUnion</code>
(Vasia Kalavri)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1109">CALCITE-1109</a>]
Fix up condition when pushing <code class="highlighter-rouge">Filter</code> through <code class="highlighter-rouge">Aggregate</code> (Amogh Margoor)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1100">CALCITE-1100</a>]
If constant reduction no-ops, don’t create a new <code class="highlighter-rouge">RelNode</code> (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1076">CALCITE-1076</a>]
Update <code class="highlighter-rouge">RelMdDistribution</code> to match other metadata APIs (Ted Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1056">CALCITE-1056</a>]
In <code class="highlighter-rouge">RelBuilder</code>, simplify predicates, and optimize away <code class="highlighter-rouge">WHERE FALSE</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1059">CALCITE-1059</a>]
Not valid to convert <code class="highlighter-rouge">Aggregate</code> on empty to empty if its <code class="highlighter-rouge">GROUP BY</code> key is empty</li>
</ul>
<h4 id="bug-fixes-api-changes-and-minor-enhancements-14">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1147">CALCITE-1147</a>]
Allow multiple providers for the same kind of metadata</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1153">CALCITE-1153</a>]
Invalid cast created during SQL Join in Oracle (Chris Atkinson)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1146">CALCITE-1146</a>]
Wrong path in CSV example model (wanglan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1156">CALCITE-1156</a>]
Increase Jetty version to 9.2.15.v20160210</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1064">CALCITE-1064</a>]
Address problematic <code class="highlighter-rouge">maven-remote-resources-plugin</code></li>
<li>In <code class="highlighter-rouge">TimeUnit</code> add <code class="highlighter-rouge">WEEK</code>, <code class="highlighter-rouge">QUARTER</code>, <code class="highlighter-rouge">MICROSECOND</code> values, and change type of
<code class="highlighter-rouge">multiplier</code></li>
<li>Deprecate <code class="highlighter-rouge">SqlLiteral.SqlSymbol</code>; <code class="highlighter-rouge">SqlSymbol</code> can now wrap any enum</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1078">CALCITE-1078</a>]
Detach avatica from the core calcite Maven project
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1077">CALCITE-1077</a>]
Switch Calcite to the released Avatica 1.7.1</li>
<li>Update <code class="highlighter-rouge">groupId</code> when Calcite POMs reference Avatica modules</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1137">CALCITE-1137</a>]
Exclude Avatica from Calcite source release</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1111">CALCITE-1111</a>]
Upgrade Guava, and test on a range of Guava versions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1054">CALCITE-1054</a>]
Wrong code generation for <code class="highlighter-rouge">TIMESTAMP</code> values that may be <code class="highlighter-rouge">NULL</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-604">CALCITE-604</a>]
Tune metadata by generating a dispatcher at runtime</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1063">CALCITE-1063</a>]
Flat lists for 4, 5, 6 elements</li>
<li>Add Orinoco schema (streaming retail data), accessible from Quidem scripts</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1097">CALCITE-1097</a>]
Exception when executing query with too many aggregation columns (chenzhifa)</li>
<li>Add tests for leap days</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-553">CALCITE-553</a>]
In maven, enable compiler profiles by default</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1031">CALCITE-1031</a>]
In prepared statement, <code class="highlighter-rouge">CsvScannableTable.scan</code> is called twice</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1046">CALCITE-1046</a>]
Matchers for testing SQL query results</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1083">CALCITE-1083</a>]
<code class="highlighter-rouge">SqlNode.equalsDeep</code> has O(n ^ 2) performance</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-998">CALCITE-998</a>]
Exception when calling <code class="highlighter-rouge">STDDEV_SAMP</code>, <code class="highlighter-rouge">STDDEV_POP</code> (Matthew Shaer)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1071">CALCITE-1071</a>]
Improve hash functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1072">CALCITE-1072</a>]
CSV adapter incorrectly parses <code class="highlighter-rouge">TIMESTAMP</code> values after noon (Chris Albright)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-669">CALCITE-669</a>]
Mass removal of Java Logging for SLF4J</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1068">CALCITE-1068</a>]
Deprecate <code class="highlighter-rouge">Stacks</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1067">CALCITE-1067</a>]
Test failures due to clashing temporary table names</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-864">CALCITE-864</a>]
Correlation variable has incorrect row type if it is populated by right side
of a Join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1021">CALCITE-1021</a>]
Upgrade Jackson</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-999">CALCITE-999</a>]
Clean up maven POM files</li>
</ul>
<h4 id="web-site-and-documentation-13">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1112">CALCITE-1112</a>]
“Powered by Calcite” page</li>
<li>Add SQL-Gremlin to Adapters page</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1090">CALCITE-1090</a>]
Revise Streaming SQL specification</li>
<li>Appoint Josh Elser to PMC</li>
<li>Add “Streaming SQL” talk</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-623">CALCITE-623</a>]
Add a small blurb to the site about Jenkins for CI</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1070">CALCITE-1070</a>]
Upgrade to new Apache logo</li>
<li>Document how to announce a release</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1074">CALCITE-1074</a>]
Delete old releases from mirroring system</li>
</ul>
<h2 id="v1-6-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.6.0">1.6.0</a> / 2016-01-22</h2>
<p>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.</p>
<p>[<a href="https://issues.apache.org/jira/browse/CALCITE-816">CALCITE-816</a>]
allows you to represent sub-queries (<code class="highlighter-rouge">EXISTS</code>, <code class="highlighter-rouge">IN</code> and scalar) as
<code class="highlighter-rouge">RexSubQuery</code>, 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.</p>
<p>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 <code class="highlighter-rouge">GROUP BY</code> keys.</p>
<p>Metadata is often computed recursively, and it is hard to safely and
efficiently calculate metadata on a graph of <code class="highlighter-rouge">RelNode</code>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.</p>
<p>Compatibility: This release is tested
on Linux, Mac OS X, Microsoft Windows;
using Oracle JDK 1.7, 1.8;
other software versions as specified in <code class="highlighter-rouge">pom.xml</code>.</p>
<h4 id="new-features-14">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-816">CALCITE-816</a>]
Represent sub-query as a <code class="highlighter-rouge">RexNode</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-854">CALCITE-854</a>]
Implement <code class="highlighter-rouge">UNNEST ... WITH ORDINALITY</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1003">CALCITE-1003</a>]
Utility to convert <code class="highlighter-rouge">RelNode</code> to SQL (Amogh Margoor)
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1010">CALCITE-1010</a>]
<code class="highlighter-rouge">FETCH/LIMIT</code> and <code class="highlighter-rouge">OFFSET</code> in RelToSqlConverter (Amogh Margoor)</li>
<li>Move code from <code class="highlighter-rouge">JdbcImplementor</code> and <code class="highlighter-rouge">JdbcRules</code> to new class
<code class="highlighter-rouge">SqlImplementor</code></li>
<li>Deduce dialect’s null collation from <code class="highlighter-rouge">DatabaseMetaData</code></li>
<li>Fix <code class="highlighter-rouge">RelToSqlConverterTest</code> on Windows</li>
</ul>
</li>
<li>Following
[<a href="https://issues.apache.org/jira/browse/CALCITE-897">CALCITE-897</a>],
empty string for <code class="highlighter-rouge">boolean</code> properties means true</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-992">CALCITE-992</a>]
Validate and resolve sequence reference as a <code class="highlighter-rouge">Table</code> object</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-968">CALCITE-968</a>]
Stream-to-relation and stream-to-stream joins (Milinda Pathirage)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1041">CALCITE-1041</a>]
User-defined function that returns <code class="highlighter-rouge">DATE</code> or <code class="highlighter-rouge">TIMESTAMP</code> value</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-986">CALCITE-986</a>]
User-defined function with <code class="highlighter-rouge">DATE</code> or <code class="highlighter-rouge">TIMESTAMP</code> parameters</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-958">CALCITE-958</a>]
Overloaded Table Functions with named arguments (Julien Le Dem)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-970">CALCITE-970</a>]
If <code class="highlighter-rouge">NULLS FIRST</code>/<code class="highlighter-rouge">NULLS LAST</code> not specified, sort <code class="highlighter-rouge">NULL</code> values high</li>
</ul>
<h4 id="avatica-features-and-bug-fixes">Avatica features and bug-fixes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1040">CALCITE-1040</a>]
Differentiate better between arrays and scalars in protobuf</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-934">CALCITE-934</a>]
Use an OS-assigned ephemeral port for <code class="highlighter-rouge">CalciteRemoteDriverTest</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-767">CALCITE-767</a>]
Create Avatica RPC endpoints for commit and rollback commands</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-983">CALCITE-983</a>]
Handle nulls in <code class="highlighter-rouge">ErrorResponse</code>’s protobuf representation better</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-989">CALCITE-989</a>]
Add server’s address in each response</li>
<li>Fix some bugs found by static analysis</li>
<li>Make all <code class="highlighter-rouge">equals</code> and <code class="highlighter-rouge">hashCode</code> methods uniform</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-962">CALCITE-962</a>]
Propagate the cause, not just the cause’s message, from <code class="highlighter-rouge">JdbcMeta</code></li>
</ul>
<h4 id="planner-rules-3">Planner rules</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1057">CALCITE-1057</a>]
Add <code class="highlighter-rouge">RelMetadataProvider</code> parameter to standard planner <code class="highlighter-rouge">Program</code>s</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1055">CALCITE-1055</a>]
<code class="highlighter-rouge">SubQueryRemoveRule</code> should create <code class="highlighter-rouge">Correlate</code>, not <code class="highlighter-rouge">Join</code>, for correlated
sub-queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-978">CALCITE-978</a>]
Enable customizing constant folding rule behavior when a <code class="highlighter-rouge">Filter</code> simplifies
to false (Jason Altekruse)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-977">CALCITE-977</a>]
Make the constant expression <code class="highlighter-rouge">Executor</code> configurable in <code class="highlighter-rouge">FrameworkConfig</code>
(Jason Altekruse)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1058">CALCITE-1058</a>]
Add method <code class="highlighter-rouge">RelBuilder.empty</code>, and rewrite LIMIT 0 and WHERE FALSE to it</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-996">CALCITE-996</a>]
Simplify predicate when we create a <code class="highlighter-rouge">Filter</code> operator</li>
<li>Simplify <code class="highlighter-rouge">RexProgram</code>, in particular <code class="highlighter-rouge">(NOT CASE ... END) IS TRUE</code>, which
occurs in when <code class="highlighter-rouge">NOT IN</code> is expanded</li>
<li>Fix variant of
[<a href="https://issues.apache.org/jira/browse/CALCITE-923">CALCITE-923</a>]
that occurs in <code class="highlighter-rouge">RelOptRulesTest.testPushFilterPastProject</code></li>
<li>[<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 <code class="highlighter-rouge">Aggregate</code> keys that are constant</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1018">CALCITE-1018</a>]
<code class="highlighter-rouge">SortJoinTransposeRule</code> not firing due to <code class="highlighter-rouge">getMaxRowCount(RelSubset)</code> returning
null</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1019">CALCITE-1019</a>]
<code class="highlighter-rouge">RelMdUtil.checkInputForCollationAndLimit()</code> was wrong with <code class="highlighter-rouge">alreadySorted</code>
check</li>
<li>Not safe to use ‘=’ for predicates on constant expressions that might be null</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-993">CALCITE-993</a>]
Pull up all constant expressions, not just literals, as predicates</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1005">CALCITE-1005</a>]
Handle null in <code class="highlighter-rouge">getMaxRowCount</code> for <code class="highlighter-rouge">Aggregate</code> (Mike Hinchey)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-995">CALCITE-995</a>]
Sort transpose rules might fall in an infinite loop</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-987">CALCITE-987</a>]
Pushing <code class="highlighter-rouge">LIMIT 0</code> results in an infinite loop (Pengcheng Xiong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-988">CALCITE-988</a>]
<code class="highlighter-rouge">FilterToProjectUnifyRule.invert(MutableRel, MutableRel, MutableProject)</code>
works incorrectly</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-969">CALCITE-969</a>]
Composite <code class="highlighter-rouge">EnumerableSort</code> with <code class="highlighter-rouge">DESC</code> wrongly sorts <code class="highlighter-rouge">NULL</code> values low</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-959">CALCITE-959</a>]
Add description to <code class="highlighter-rouge">SortProjectTransposeRule</code>’s constructor</li>
</ul>
<h4 id="bug-fixes-api-changes-and-minor-enhancements-15">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1060">CALCITE-1060</a>]
Fix test deadlock by initializing <code class="highlighter-rouge">DriverManager</code> before registering <code class="highlighter-rouge">AlternatingDriver</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1047">CALCITE-1047</a>]
<code class="highlighter-rouge">ChunkList.clear</code> throws <code class="highlighter-rouge">AssertionError</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1053">CALCITE-1053</a>]
CPU spin, <code class="highlighter-rouge">ReflectiveRelMetadataProvider.apply</code> waiting for <code class="highlighter-rouge">HashMap.get</code></li>
<li>Upgrade toolbox, to fix line length issue on Windows</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1051">CALCITE-1051</a>]
Underflow exception due to scaling IN clause literals (Frankie Bollaert)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-975">CALCITE-975</a>]
Allow Planner to return validated row type together with SqlNode</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1020">CALCITE-1020</a>]
Add <code class="highlighter-rouge">MILLISECOND</code> in <code class="highlighter-rouge">TimeUnit</code> (Pengcheng Xiong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-794">CALCITE-794</a>]
Detect cycles when computing statistics
(<strong>This is a breaking change</strong>.)</li>
<li>Tune algorithm that deduces the return type of <code class="highlighter-rouge">AND</code> expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-842">CALCITE-842</a>]
Decorrelator gets field offsets confused if fields have been trimmed</li>
<li>Fix <code class="highlighter-rouge">NullPointerException</code> in <code class="highlighter-rouge">SqlJoin.toString()</code></li>
<li>Add <code class="highlighter-rouge">ImmutableBitSet.rebuild()</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-915">CALCITE-915</a>]
Tests now unset <code class="highlighter-rouge">ThreadLocal</code> values on exit</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1036">CALCITE-1036</a>]
<code class="highlighter-rouge">DiffRepository</code> should not insert new resources at the end of the repository</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-955">CALCITE-955</a>]
<code class="highlighter-rouge">Litmus</code> (continuation-passing style for methods that check invariants)</li>
<li><code class="highlighter-rouge">RelBuilder.project</code> now does nothing if asked to project the identity with
the same field names</li>
<li>Deprecate some <code class="highlighter-rouge">Util</code> methods, and upgrade last Maven modules to JDK 1.7</li>
<li>Document <code class="highlighter-rouge">RelOptPredicateList</code></li>
<li>Add <code class="highlighter-rouge">ImmutableNullableList.copyOf(Iterable)</code></li>
<li>Fix “endPosTable already set” error from <code class="highlighter-rouge">javac</code></li>
<li>Add benchmark of <code class="highlighter-rouge">Parser.create(sql).parseQuery()</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1042">CALCITE-1042</a>]
Ensure that <code class="highlighter-rouge">FILTER</code> is <code class="highlighter-rouge">BOOLEAN NOT NULL</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1039">CALCITE-1039</a>]
Assign a <code class="highlighter-rouge">SqlKind</code> value for each built-in aggregate function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1030">CALCITE-1030</a>]
JSON <code class="highlighter-rouge">ModelHandler</code> calling <code class="highlighter-rouge">SchemaPlus.setCacheEnabled()</code> causes
<code class="highlighter-rouge">UnsupportedOperationException</code> when using <code class="highlighter-rouge">SimpleCalciteSchema</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1028">CALCITE-1028</a>]
Move populate materializations after sql-to-rel conversion</li>
<li>[<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</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1032">CALCITE-1032</a>]
Verify javadoc of private methods</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1015">CALCITE-1015</a>]
<code class="highlighter-rouge">OFFSET 0</code> causes <code class="highlighter-rouge">AssertionError</code> (Zhen Wang)</li>
<li>[<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</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1016">CALCITE-1016</a>]
<code class="highlighter-rouge">GROUP BY *constant*</code> on empty relation should return 0 rows</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1022">CALCITE-1022</a>]
Rename <code class="highlighter-rouge">.oq</code> Quidem files to <code class="highlighter-rouge">.iq</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-980">CALCITE-980</a>]
Fix <code class="highlighter-rouge">AND</code> and <code class="highlighter-rouge">OR</code> implementation in <code class="highlighter-rouge">Enumerable</code> convention</li>
<li>[<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)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1009">CALCITE-1009</a>]
<code class="highlighter-rouge">SelfPopulatingList</code> is not thread-safe</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1008">CALCITE-1008</a>]
Replace <code class="highlighter-rouge">Closeable</code> with <code class="highlighter-rouge">AutoCloseable</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1001">CALCITE-1001</a>]
Upgrade to quidem-0.7</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-990">CALCITE-990</a>]
In <code class="highlighter-rouge">VolcanoPlanner</code>, populate <code class="highlighter-rouge">RelOptRuleCall.nodeInputs</code> for operands of type
“any”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-966">CALCITE-966</a>]
<code class="highlighter-rouge">VolcanoPlanner</code> now clears <code class="highlighter-rouge">ruleNames</code> in order to avoid rule name
conflicting error</li>
<li>Factor user-defined function tests from <code class="highlighter-rouge">JdbcTest</code> to <code class="highlighter-rouge">UdfTest</code>, and classes
into <code class="highlighter-rouge">Smalls</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-974">CALCITE-974</a>]
Exception while validating <code class="highlighter-rouge">DELETE</code> (Yuri Au Yong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-964">CALCITE-964</a>]
Rename <code class="highlighter-rouge">timezone</code> connection property to <code class="highlighter-rouge">timeZone</code></li>
</ul>
<h4 id="web-site-and-documentation-14">Web site and documentation</h4>
<ul>
<li>Avatica
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1033">CALCITE-1033</a>]
Introduce Avatica protobuf documentation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1029">CALCITE-1029</a>]
Add “purpose” descriptions to Avatica JSON docs</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-984">CALCITE-984</a>]
Massive cleanup of Avatica JSON docs</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-861">CALCITE-861</a>]
Be explicit that <code class="highlighter-rouge">mvn test</code> needs to be invoked</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-997">CALCITE-997</a>]
Document keywords</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-979">CALCITE-979</a>]
Broken links in web site</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-961">CALCITE-961</a>]
Web site: Add downloads and Apache navigation links</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-960">CALCITE-960</a>]
Download links for pgp, md5, <code class="highlighter-rouge">KEYS</code> files, and direct from mirrors</li>
<li>Remove embedded date-stamps from javadoc; add javadoc for test classes</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-965">CALCITE-965</a>]
Link to downloads page from each release news item</li>
</ul>
<h2 id="v1-5-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.5.0">1.5.0</a> / 2015-11-06</h2>
<p>Our first release as a top-level Apache project!</p>
<p>Avatica has undergone major improvements,
including a new RPC layer that uses
<a href="https://developers.google.com/protocol-buffers/">protocol buffers</a>,
support for DML statements, better support for bind variables and
unique identifiers for connections and statements.</p>
<p>There are lots of improvements to planner rules, and the logic
that replaces relational expressions with equivalent materializations.</p>
<p>We continue to find more uses for
<a href="/docs/algebra.html">RelBuilder</a>.
We now recommend that you use <code class="highlighter-rouge">RelBuilder</code> 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.</p>
<p>Using <code class="highlighter-rouge">RelBuilder</code> we built Piglet,
a subset of the classic Hadoop language
<a href="https://pig.apache.org/">Pig</a>.
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!</p>
<h4 id="new-features-15">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-911">CALCITE-911</a>]
Add a variant of <code class="highlighter-rouge">CalciteSchema</code> that does not cache sub-objects</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-845">CALCITE-845</a>]
Derive <code class="highlighter-rouge">SUM</code>’s return type by a customizable policy (Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-916">CALCITE-916</a>]
Support table function that implements <code class="highlighter-rouge">ScannableTable</code>
<ul>
<li>Example table function that generates mazes and their solutions</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-941">CALCITE-941</a>]
Named, optional and <code class="highlighter-rouge">DEFAULT</code> arguments to function calls;
support named arguments when calling table functions and table macros</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-910">CALCITE-910</a>]
Improve handling of <code class="highlighter-rouge">ARRAY</code>, <code class="highlighter-rouge">MULTISET</code>, <code class="highlighter-rouge">STRUCT</code> types</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-879">CALCITE-879</a>]
<code class="highlighter-rouge">COLLECT</code> aggregate function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-546">CALCITE-546</a>]
Allow table, column and field called ‘*’</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-893">CALCITE-893</a>]
Theta join in JDBC adapter</li>
<li>Linq4j: Implement <code class="highlighter-rouge">EnumerableDefaults</code> methods (MiNG)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-823">CALCITE-823</a>]
Add <code class="highlighter-rouge">ALTER ... RESET</code> statement (Sudheesh Katkam)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-881">CALCITE-881</a>]
Allow schema.table.column references in <code class="highlighter-rouge">GROUP BY</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-852">CALCITE-852</a>]
DDL statements</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-851">CALCITE-851</a>]
Add original SQL string as a field in the parser</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-819">CALCITE-819</a>]
Add <code class="highlighter-rouge">RelRoot</code>, a contract for the result of a relational expression</li>
</ul>
<h4 id="avatica-features-and-bug-fixes-1">Avatica features and bug-fixes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-951">CALCITE-951</a>]
Print the server-side stack in the local exception (Josh Elser)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-936">CALCITE-936</a>]
Make HttpServer configurable (Navis Ryu)</li>
<li>[<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)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-921">CALCITE-921</a>]
Fix incorrectness when calling <code class="highlighter-rouge">getString()</code> on binary data (Josh Elser)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-913">CALCITE-913</a>]
Construct proper <code class="highlighter-rouge">ColumnMetaData</code> for arrays (Josh Elser)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-871">CALCITE-871</a>]
In <code class="highlighter-rouge">JdbcMeta</code>, register each statement using an id from a generator (Bruno
Dumon)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-645">CALCITE-645</a>]
Implement <code class="highlighter-rouge">AvaticaSqlException</code> to pass server-side exception information to
clients (Josh Elser)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-912">CALCITE-912</a>]
Add Avatica <code class="highlighter-rouge">OpenConnectionRequest</code> (Bruno Dumon)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-919">CALCITE-919</a>]
Avoid <code class="highlighter-rouge">setScale</code> on <code class="highlighter-rouge">BigDecimal</code> when scale is 0 (Josh Elser)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-927">CALCITE-927</a>]
Call finagle for all calls that return ResultSetResponses (Josh Elser)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-705">CALCITE-705</a>]
DML in Avatica, and split <code class="highlighter-rouge">Execute</code> out from <code class="highlighter-rouge">Fetch</code> request (Yeong Wei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-914">CALCITE-914</a>]
Add <code class="highlighter-rouge">JsonSubType</code> for <code class="highlighter-rouge">ExecuteResponse</code>, and fix JSON docs (Josh Elser)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-905">CALCITE-905</a>]
<code class="highlighter-rouge">getTables</code> returns empty result in <code class="highlighter-rouge">JdbcMeta</code> (Jan Van Besien)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-906">CALCITE-906</a>]
Avatica <code class="highlighter-rouge">JdbcMeta</code> statement IDs are not unique</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-866">CALCITE-866</a>]
Break out Avatica documentation and add JSON reference (Josh Elser)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-843">CALCITE-843</a>]
<code class="highlighter-rouge">AvaticaConnection.getAutoCommit</code> throws <code class="highlighter-rouge">NullPointerException</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-840">CALCITE-840</a>]
Protocol buffer serialization over HTTP for Avatica Server (Josh Elser)</li>
</ul>
<h4 id="materializations">Materializations</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-952">CALCITE-952</a>]
Organize applicable materializations in reversed topological order (Maryann
Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-890">CALCITE-890</a>]
Register all combinations of materialization substitutions (Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-891">CALCITE-891</a>]
When substituting materializations, match <code class="highlighter-rouge">TableScan</code> without <code class="highlighter-rouge">Project</code>
(Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-890">CALCITE-890</a>]
Register all combinations of materialization substitutions (Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-925">CALCITE-925</a>]
Match materialized views when predicates contain strings and ranges (Amogh
Margoor)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-793">CALCITE-793</a>]
Planner requires unnecessary collation when using materialized view (Maryann
Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-825">CALCITE-825</a>]
Allow user to specify sort order of an <code class="highlighter-rouge">ArrayTable</code></li>
</ul>
<h4 id="planner-rules-4">Planner rules</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-953">CALCITE-953</a>]
Improve <code class="highlighter-rouge">RelMdPredicates</code> to deal with <code class="highlighter-rouge">RexLiteral</code> (Pengcheng Xiong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-939">CALCITE-939</a>]
Variant of <code class="highlighter-rouge">SortUnionTransposeRule</code> for order-preserving <code class="highlighter-rouge">Union</code>
(Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-931">CALCITE-931</a>]
Wrong collation trait in <code class="highlighter-rouge">SortJoinTransposeRule</code> for right joins
(Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-938">CALCITE-938</a>]
More accurate rowCount for <code class="highlighter-rouge">Aggregate</code> applied to already unique keys
(Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-935">CALCITE-935</a>]
Improve how <code class="highlighter-rouge">ReduceExpressionsRule</code> handles duplicate constraints (Pengcheng
Xiong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-922">CALCITE-922</a>]
Extract value of an <code class="highlighter-rouge">INTERVAL</code> literal (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-889">CALCITE-889</a>]
Implement <code class="highlighter-rouge">SortUnionTransposeRule</code> (Pengcheng Xiong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-909">CALCITE-909</a>]
Make <code class="highlighter-rouge">ReduceExpressionsRule</code> extensible</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-856">CALCITE-856</a>]
Make more rules extensible</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-902">CALCITE-902</a>]
Match nullability when reducing expressions in a <code class="highlighter-rouge">Project</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-895">CALCITE-895</a>]
Simplify “(<code class="highlighter-rouge">CASE</code><code class="highlighter-rouge">END</code>) = constant” inside <code class="highlighter-rouge">AND</code> or <code class="highlighter-rouge">OR</code> (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-828">CALCITE-828</a>]
Use RelBuilder in rules rather than type-specific RelNode factories</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-892">CALCITE-892</a>]
Implement <code class="highlighter-rouge">SortJoinTransposeRule</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-876">CALCITE-876</a>]
After pushing <code class="highlighter-rouge">LogicalProject</code> past <code class="highlighter-rouge">LogicalWindow</code>, adjust references to
constants properly (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-844">CALCITE-844</a>]
Push <code class="highlighter-rouge">Project</code> through <code class="highlighter-rouge">Window</code> (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-841">CALCITE-841</a>]
Redundant windows when window function arguments are expressions (Hsuan-Yi
Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-846">CALCITE-846</a>]
Push <code class="highlighter-rouge">Aggregate</code> with <code class="highlighter-rouge">Filter</code> through <code class="highlighter-rouge">Union(all)</code></li>
</ul>
<h4 id="relbuilder-and-piglet">RelBuilder and Piglet</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-933">CALCITE-933</a>]
<code class="highlighter-rouge">RelBuilder.scan()</code> now gives a nice exception if the table does not exist
(Andy Grove)</li>
<li>Fix Piglet <code class="highlighter-rouge">DUMP</code> applied to multisets and structs</li>
<li>Multisets and <code class="highlighter-rouge">COLLECT</code> in Piglet</li>
<li>[<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</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-869">CALCITE-869</a>]
Add <code class="highlighter-rouge">VALUES</code> command to Piglet</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-868">CALCITE-868</a>]
Add API to execute queries expressed as <code class="highlighter-rouge">RelNode</code></li>
<li>In RelBuilder, build expressions by table alias</li>
</ul>
<h4 id="bug-fixes-api-changes-and-minor-enhancements-16">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-948">CALCITE-948</a>]
Indicator columns not preserved by <code class="highlighter-rouge">RelFieldTrimmer</code></li>
<li>Fix Windows issues (line endings and checkstyle suppressions)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-937">CALCITE-937</a>]
User-defined function within view</li>
<li>[<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)</li>
<li>[<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)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-932">CALCITE-932</a>]
Fix muddled columns when <code class="highlighter-rouge">RelFieldTrimmer</code> is applied to <code class="highlighter-rouge">Aggregate</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-930">CALCITE-930</a>]
Now Calcite is a top-level project, remove references to “incubating”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-929">CALCITE-929</a>]
Calls to <code class="highlighter-rouge">AbstractRelNode</code> may result in NPE</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-923">CALCITE-923</a>]
Type mismatch when converting <code class="highlighter-rouge">LEFT JOIN</code> to <code class="highlighter-rouge">INNER</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-666">CALCITE-666</a>]
Anti-semi-joins against JDBC adapter give wrong results (Yeong Wei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-918">CALCITE-918</a>]
<code class="highlighter-rouge">createProject</code> in <code class="highlighter-rouge">RelOptUtil</code> should uniquify field names</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-792">CALCITE-792</a>]
Obsolete <code class="highlighter-rouge">RelNode.isKey</code> and <code class="highlighter-rouge">isDistinct</code> methods</li>
<li>Allow FlatLists of different length to be compared</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-898">CALCITE-898</a>]
Type of ‘Java<Long> * `INTEGER`' should be `BIGINT`</Long></li>
<li>[<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 <code class="highlighter-rouge">IN</code> sub-query (Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-897">CALCITE-897</a>]
Enable debugging using “-Dcalcite.debug”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-885">CALCITE-885</a>]
Add Oracle test environment</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-888">CALCITE-888</a>]
Overlay window loses <code class="highlighter-rouge">PARTITION BY</code> list (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-886">CALCITE-886</a>]
System functions in <code class="highlighter-rouge">GROUP BY</code> clause</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-860">CALCITE-860</a>]
Correct LICENSE file for generated web site</li>
<li>[<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)</li>
<li>Upgrade parent POM to apache-17</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-687">CALCITE-687</a>]
Synchronize HSQLDB at a coarse level using a Lock (Josh Elser)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-870">CALCITE-870</a>]
Remove copyright content from archers.json</li>
<li>Replace <code class="highlighter-rouge">Stack</code> with <code class="highlighter-rouge">ArrayDeque</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-874">CALCITE-874</a>]
<code class="highlighter-rouge">ReflectiveRelMetadataProvider</code> is not thread-safe</li>
<li>Add <code class="highlighter-rouge">LogicalWindow.create()</code></li>
<li>Add <code class="highlighter-rouge">ImmutableBitSet.get(int, int)</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-865">CALCITE-865</a>]
Unknown table type causes <code class="highlighter-rouge">NullPointerException</code> in <code class="highlighter-rouge">JdbcSchema</code>
<ul>
<li>Add table types used by Oracle and DB2</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-862">CALCITE-862</a>]
<code class="highlighter-rouge">JdbcSchema</code> gives <code class="highlighter-rouge">NullPointerException</code> on non-standard column type (Marc
Prud’hommeaux)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-847">CALCITE-847</a>]
<code class="highlighter-rouge">AVG</code> window function in <code class="highlighter-rouge">GROUP BY</code> gives <code class="highlighter-rouge">AssertionError</code> (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-827">CALCITE-827</a>]
Calcite incorrectly permutes columns of <code class="highlighter-rouge">OVER</code> query (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-809">CALCITE-809</a>]
<code class="highlighter-rouge">TableScan</code> does not support large/infinite scans (Jesse Yates)</li>
<li>Lazily create exception only when it needs to be thrown (Marc Prud’hommeaux)</li>
<li>[<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)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-820">CALCITE-820</a>]
Validate that window functions have <code class="highlighter-rouge">OVER</code> clause (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-824">CALCITE-824</a>]
Type inference when converting <code class="highlighter-rouge">IN</code> clause to semijoin (Josh Wills)</li>
</ul>
<h2 id="v1-4-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.4.0-incubating">1.4.0-incubating</a> / 2015-09-02</h2>
<p>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.</p>
<h4 id="new-features-16">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-748">CALCITE-748</a>]
Add <code class="highlighter-rouge">RelBuilder</code>, builder for expressions in relational algebra</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-758">CALCITE-758</a>]
Use more than one lattice in the same query (Rajat Venkatesh)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-761">CALCITE-761</a>]
Pre-populated materializations (Maryann Xue)</li>
<li>[<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)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-732">CALCITE-732</a>]
Implement multiple distinct-<code class="highlighter-rouge">COUNT</code> using <code class="highlighter-rouge">GROUPING SETS</code></li>
<li>Add various <code class="highlighter-rouge">BitSet</code> and <code class="highlighter-rouge">ImmutableBitSet</code> utilities</li>
</ul>
<h4 id="web-site-updates">Web site updates</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-810">CALCITE-810</a>]
Add committers’ organizations to the web site</li>
<li>Add news item (XLDB best lighting talk), and some talks</li>
<li>Fix javadoc links</li>
<li>Add license notice for web site</li>
<li>Wrap file header in HTML comments</li>
<li>How to release</li>
<li>Move disclaimer out of every page’s footer and into home page and downloads
page</li>
<li>For web site files, add license headers where possible, apache-rat
exclusions otherwise</li>
<li>Calcite DOAP</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-355">CALCITE-355</a>]
Web site</li>
</ul>
<h4 id="bug-fixes-api-changes-and-minor-enhancements-17">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-741">CALCITE-741</a>]
Ensure that the source release’s <code class="highlighter-rouge">DEPENDENCIES</code> file includes all module
dependencies</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-743">CALCITE-743</a>]
Ensure only a single source assembly is executed</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-850">CALCITE-850</a>]
Remove push down expressions from <code class="highlighter-rouge">FilterJoinRule</code> and create a new rule
for it</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-834">CALCITE-834</a>]
<code class="highlighter-rouge">StackOverflowError</code> getting predicates from the metadata provider</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-833">CALCITE-833</a>]
<code class="highlighter-rouge">RelOptUtil.splitJoinCondition</code> incorrectly splits a join condition
(Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-822">CALCITE-822</a>]
Add a unit test case to test collation of <code class="highlighter-rouge">LogicalAggregate</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-822">CALCITE-822</a>]
Revert incorrect <code class="highlighter-rouge">LogicalAggregate</code> collation inferring logic made in
[<a href="https://issues.apache.org/jira/browse/CALCITE-783">CALCITE-783</a>]
(Milinda Pathirage)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-826">CALCITE-826</a>]
Use <code class="highlighter-rouge">ProjectFactory</code> in <code class="highlighter-rouge">AggregateJoinTranposeRule</code> and <code class="highlighter-rouge">FilterJoinRule</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-821">CALCITE-821</a>]
<code class="highlighter-rouge">Frameworks</code> gives NPE when <code class="highlighter-rouge">FrameworkConfig</code> has no default schema</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-811">CALCITE-811</a>]
Extend <code class="highlighter-rouge">JoinProjectTransposeRule</code> with option to support outer joins</li>
<li>[<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</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-803">CALCITE-803</a>]
Add <code class="highlighter-rouge">MYSQL_ANSI</code> Lexing policy</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-717">CALCITE-717</a>]
Compare BINARY and VARBINARY on unsigned byte values (Low Chin Wei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-814">CALCITE-814</a>]
<code class="highlighter-rouge">RexBuilder</code> reverses precision and scale of <code class="highlighter-rouge">DECIMAL</code> literal</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-813">CALCITE-813</a>]
Upgrade <code class="highlighter-rouge">updateCount</code>, <code class="highlighter-rouge">maxRows</code> from int to long</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-714">CALCITE-714</a>]
When de-correlating, push join condition into sub-query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-751">CALCITE-751</a>]
Push aggregate with aggregate functions through join</li>
<li>Add <code class="highlighter-rouge">RelBuilder.avg</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-806">CALCITE-806</a>]
<code class="highlighter-rouge">ROW_NUMBER</code> should emit distinct values</li>
<li>Document JSON model, making javadoc consistent with the model reference</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-808">CALCITE-808</a>]
Optimize <code class="highlighter-rouge">ProjectMergeRule</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-791">CALCITE-791</a>]
Optimize <code class="highlighter-rouge">RelOptUtil.pushFilterPastProject</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-783">CALCITE-783</a>]
Infer collation of <code class="highlighter-rouge">Project</code> using monotonicity (Milinda Pathirage)</li>
<li>Change the argument types of <code class="highlighter-rouge">SqlOperator.getMonotonicity</code> to allow it to be
used for <code class="highlighter-rouge">RexNode</code> as well as <code class="highlighter-rouge">SqlNode</code></li>
<li>[<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)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-787">CALCITE-787</a>]
Star table wrongly assigned to materialized view (Amogh Margoor)</li>
<li>Remove duplicate resources from XML test reference files</li>
<li>[<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ý)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-774">CALCITE-774</a>]
When <code class="highlighter-rouge">GROUP BY</code> is present, ensure that window function operands only
refer to grouping keys (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-799">CALCITE-799</a>]
Incorrect result for <code class="highlighter-rouge">HAVING count(*) &gt; 1</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-801">CALCITE-801</a>]
<code class="highlighter-rouge">NullPointerException</code> using <code class="highlighter-rouge">USING</code> on table alias with column aliases</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-390">CALCITE-390</a>]
Infer predicates for semi-join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-789">CALCITE-789</a>]
<code class="highlighter-rouge">MetaImpl.MetaCatalog</code> should expose <code class="highlighter-rouge">TABLE_CAT</code> instead of
<code class="highlighter-rouge">TABLE_CATALOG</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-752">CALCITE-752</a>]
Add back sqlline as a dependency to csv example</li>
<li>[<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</li>
<li>In <code class="highlighter-rouge">RelBuilder</code>, calling <code class="highlighter-rouge">sort</code> then <code class="highlighter-rouge">limit</code> has same effect as calling
<code class="highlighter-rouge">sortLimit</code></li>
<li>Add <code class="highlighter-rouge">Ord.reverse</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-788">CALCITE-788</a>]
Allow <code class="highlighter-rouge">EnumerableJoin</code> to be sub-classed (Li Yang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-280">CALCITE-280</a>]
<code class="highlighter-rouge">BigDecimal</code> underflow (Li Yang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-763">CALCITE-763</a>]
Missing translation from <code class="highlighter-rouge">Sort</code> to <code class="highlighter-rouge">MutableSort</code> (Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-770">CALCITE-770</a>]
Ignore window aggregates and ranking functions when finding aggregate
functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-765">CALCITE-765</a>]
Set <code class="highlighter-rouge">Content-Type</code> from the RPC server to <code class="highlighter-rouge">application/json</code> (Lukáš Lalinský)</li>
<li>Fix Windows line-endings in <code class="highlighter-rouge">RelBuilderTest</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-727">CALCITE-727</a>]
Constant folding involving <code class="highlighter-rouge">CASE</code> and <code class="highlighter-rouge">NULL</code></li>
<li>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</li>
<li>Test case and workaround for
[<a href="https://issues.apache.org/jira/browse/CALCITE-760">CALCITE-760</a>]
<code class="highlighter-rouge">Aggregate</code> recommender blows up if row count estimate is too high</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-753">CALCITE-753</a>]
<code class="highlighter-rouge">Aggregate</code> operators may derive row types with duplicate column names</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-457">CALCITE-457</a>]
Push condition of non-ansi join into join operator</li>
<li>Change jsonRequest encoding to UTF-8 (Guitao Ding)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-757">CALCITE-757</a>]
Fix expansion of view of another view (Venki Korukanti)</li>
<li>Fix coverity warnings</li>
<li>Remove deprecated <code class="highlighter-rouge">SqlTypeName</code> methods</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-754">CALCITE-754</a>]
Validator error when resolving <code class="highlighter-rouge">OVER</code> clause of <code class="highlighter-rouge">JOIN</code> query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-429">CALCITE-429</a>]
Cardinality provider for use by lattice algorithm</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-740">CALCITE-740</a>]
Redundant <code class="highlighter-rouge">WHERE</code> clause causes wrong result in MongoDB adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-665">CALCITE-665</a>]
<code class="highlighter-rouge">ClassCastException</code> in MongoDB adapter</li>
<li>Separate <code class="highlighter-rouge">TableFactory</code> from suggested table name, so one <code class="highlighter-rouge">TableFactory</code> can be
used for several tables</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-749">CALCITE-749</a>]
Add <code class="highlighter-rouge">MaterializationService.TableFactory</code> (Rajat Venkatesh)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-718">CALCITE-718</a>]
Enable fetch to work for <code class="highlighter-rouge">Statement.execute()</code> for Avatica (Xavier Leong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-712">CALCITE-712</a>]
Obey <code class="highlighter-rouge">setMaxRows</code> for statement execute (Xavier Leong)</li>
<li>Add <code class="highlighter-rouge">LoggingLocalJsonService</code>, to make it easier to test that JDBC requests
cause the right RPCs</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-708">CALCITE-708</a>]
Implement <code class="highlighter-rouge">DatabaseMetaData.getTypeInfo</code> (Xavier Leong)</li>
<li>Enable Travis CI on new-master branch and bug-fix branches named
“NNN-description”</li>
<li>Clean up</li>
<li>Upgrade tpcds</li>
<li>Make <code class="highlighter-rouge">JdbcTest.testVersion</code> more permissive, so that <code class="highlighter-rouge">version.major</code> and
<code class="highlighter-rouge">version.minor</code> can be set just before a release, rather than just after as at
present</li>
</ul>
<h2 id="v1-3-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.3.0-incubating">1.3.0-incubating</a> / 2015-05-30</h2>
<p>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.</p>
<h4 id="new-features-17">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-505">CALCITE-505</a>]
Support modifiable view</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-704">CALCITE-704</a>]
<code class="highlighter-rouge">FILTER</code> clause for aggregate functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-522">CALCITE-522</a>]
In remote JDBC driver, transmit static database properties as a map</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-661">CALCITE-661</a>]
Remote fetch in Calcite JDBC driver</li>
<li>Support Date, Time, Timestamp parameters</li>
</ul>
<h4 id="api-changes">API changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-722">CALCITE-722</a>]
Rename markdown files to lower-case</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-697">CALCITE-697</a>]
Obsolete class <code class="highlighter-rouge">RelOptQuery</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-693">CALCITE-693</a>]
Allow clients to control creation of <code class="highlighter-rouge">RelOptCluster</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-691">CALCITE-691</a>]
Allow projects to supply alternate SQL parser</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-675">CALCITE-675</a>]
Enable <code class="highlighter-rouge">AggregateProjectMergeRule</code> in standard rule set</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-679">CALCITE-679</a>]
Factory method for <code class="highlighter-rouge">SemiJoin</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-674">CALCITE-674</a>]
Add a <code class="highlighter-rouge">SWAP_OUTER</code> static instance to <code class="highlighter-rouge">JoinCommuteRule</code> (Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-735">CALCITE-735</a>]
<code class="highlighter-rouge">Primitive.DOUBLE.min</code> should be large and negative</li>
</ul>
<h4 id="bug-fixes-and-internal-changes">Bug-fixes and internal changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-688">CALCITE-688</a>]
<code class="highlighter-rouge">splitCondition</code> does not behave correctly when one side of the condition
references columns from different inputs</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-259">CALCITE-259</a>]
Using sub-queries in <code class="highlighter-rouge">CASE</code> statement against JDBC tables generates invalid
Oracle SQL (Yeong Wei)</li>
<li>In sample code in README.md, rename optiq to calcite (Ethan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-720">CALCITE-720</a>]
<code class="highlighter-rouge">VolcanoPlanner.ambitious</code> comment doc is inconsistent (Santiago M. Mola)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-729">CALCITE-729</a>]
<code class="highlighter-rouge">IndexOutOfBoundsException</code> in <code class="highlighter-rouge">ROLLUP</code> query on JDBC data source</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-733">CALCITE-733</a>]
Multiple distinct-<code class="highlighter-rouge">COUNT</code> query gives wrong results</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-730">CALCITE-730</a>]
<code class="highlighter-rouge">ClassCastException</code> in table from <code class="highlighter-rouge">CloneSchema</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-728">CALCITE-728</a>]
Test suite hangs on Windows</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-723">CALCITE-723</a>]
Document lattices</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-515">CALCITE-515</a>]
Add Apache headers to markdown files</li>
<li>Upgrade quidem</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-716">CALCITE-716</a>]
Scalar sub-query and aggregate function in <code class="highlighter-rouge">SELECT</code> or <code class="highlighter-rouge">HAVING</code> clause gives
<code class="highlighter-rouge">AssertionError</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-694">CALCITE-694</a>]
Scan <code class="highlighter-rouge">HAVING</code> clause for sub-queries and <code class="highlighter-rouge">IN</code>-lists (Hsuan-Yi Chu)</li>
<li>Upgrade hydromatic-resource-maven-plugin</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-710">CALCITE-710</a>]
Identical conditions in the <code class="highlighter-rouge">WHERE</code> clause cause <code class="highlighter-rouge">AssertionError</code> (Sean
Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-695">CALCITE-695</a>]
Do not add <code class="highlighter-rouge">SINGLE_VALUE</code> aggregate function to a sub-query that will never
return more than one row (Hsuan-Yi Chu)</li>
<li>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 <code class="highlighter-rouge">LIMIT</code> inside scalar sub-query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-702">CALCITE-702</a>]
Add validator test for monotonic expressions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-699">CALCITE-699</a>]
In Avatica, synchronize access to Calendar</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-700">CALCITE-700</a>]
Pass time zone into tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-698">CALCITE-698</a>]
For <code class="highlighter-rouge">GROUP BY ()</code>, <code class="highlighter-rouge">areColumnsUnique()</code> should return true for any key</li>
<li>Disable tests that fail under JDK 1.7 due to
[<a href="https://issues.apache.org/jira/browse/CALCITE-687">CALCITE-687</a>]</li>
<li>Add “getting started” to HOWTO</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-692">CALCITE-692</a>]
Add back sqlline as a dependency</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-677">CALCITE-677</a>]
<code class="highlighter-rouge">RemoteDriverTest.testTypeHandling</code> fails east of Greenwich</li>
<li>Disable test for
[<a href="https://issues.apache.org/jira/browse/CALCITE-687">CALCITE-687</a>]
Make <code class="highlighter-rouge">RemoteDriverTest.testStatementLifecycle</code> thread-safe</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-686">CALCITE-686</a>]
<code class="highlighter-rouge">SqlNode.unparse</code> produces invalid SQL</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-507">CALCITE-507</a>]
Update HOWTO.md with running integration tests</li>
<li>Add H2 integration test</li>
<li>Add PostgreSQL integration test</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-590">CALCITE-590</a>]
Update MongoDB test suite to calcite-test-dataset</li>
<li>Add <code class="highlighter-rouge">CalciteAssert.assertArrayEqual</code> for more user-friendly asserts</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-585">CALCITE-585</a>]
Avatica JDBC methods should throw <code class="highlighter-rouge">SQLFeatureNotSupportedException</code> (Ng Jiunn
Jye)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-671">CALCITE-671</a>]
<code class="highlighter-rouge">ByteString</code> does not deserialize properly as a <code class="highlighter-rouge">FetchRequest</code> parameter value</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-676">CALCITE-676</a>]
<code class="highlighter-rouge">AssertionError</code> in <code class="highlighter-rouge">GROUPING SETS</code> query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-678">CALCITE-678</a>]
<code class="highlighter-rouge">SemiJoinRule</code> mixes up fields when <code class="highlighter-rouge">Aggregate.groupSet</code> is not field #0</li>
</ul>
<h2 id="v1-2-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.2.0-incubating">1.2.0-incubating</a> / 2015-04-07</h2>
<p>A short release, less than a month after 1.1.</p>
<p>There have been many changes to Avatica, hugely improving its coverage of the
JDBC API and overall robustness. A new provider, <code class="highlighter-rouge">JdbcMeta</code>, allows
you to remote an existing JDBC driver.</p>
<p>[<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.</p>
<p>[<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.</p>
<h4 id="new-features-18">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-366">CALCITE-366</a>]
Support Aggregate push down in bushy joins (Jesus Camacho Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-613">CALCITE-613</a>]
Implicitly convert character values in comparisons</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-307">CALCITE-307</a>]
Implement <code class="highlighter-rouge">CAST</code> between date-time types</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-634">CALCITE-634</a>]
Allow <code class="highlighter-rouge">ORDER BY</code> aggregate function in <code class="highlighter-rouge">SELECT DISTINCT</code>, provided that it
occurs in <code class="highlighter-rouge">SELECT</code> clause (Sean Hsuan-Yi Chu)</li>
<li>In linq4j, implement <code class="highlighter-rouge">firstOrDefault</code>, <code class="highlighter-rouge">single</code>, and <code class="highlighter-rouge">singleOrDefault</code> methods
(Daniel Cooper)</li>
<li>JDBC adapter
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-631">CALCITE-631</a>]
Push theta joins down to JDBC adapter (Ng Jiunn Jye)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-657">CALCITE-657</a>]
<code class="highlighter-rouge">NullPointerException</code> when executing <code class="highlighter-rouge">JdbcAggregate.implement</code>
method (Yuri Au Yong)</li>
</ul>
</li>
<li>Metadata
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-659">CALCITE-659</a>]
Missing types in <code class="highlighter-rouge">averageTypeValueSize</code> method in <code class="highlighter-rouge">RelMdSize</code>
(Jesus Camacho Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-650">CALCITE-650</a>]
Add metadata for average size of a tuple in <code class="highlighter-rouge">SemiJoin</code> (Jesus
Camacho Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-649">CALCITE-649</a>]
Extend <code class="highlighter-rouge">splitCondition</code> method in <code class="highlighter-rouge">RelOptUtil</code> to handle multiple
joins on the same key (Jesus Camacho Rodriguez)</li>
</ul>
</li>
</ul>
<h4 id="avatica-features-and-bug-fixes-2">Avatica features and bug-fixes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-670">CALCITE-670</a>]
<code class="highlighter-rouge">AvaticaPreparedStatement</code> should support <code class="highlighter-rouge">execute()</code> and
<code class="highlighter-rouge">executeUpdate()</code> (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-641">CALCITE-641</a>]
Implement logging throughout Avatica server (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-646">CALCITE-646</a>]
<code class="highlighter-rouge">AvaticaStatement.execute</code> method broken over remote JDBC (Yeong Wei
and Julian Hyde)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-660">CALCITE-660</a>]
Improve Avatica date support</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-655">CALCITE-655</a>]
Implement <code class="highlighter-rouge">ConnectionSync</code> RPC (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-654">CALCITE-654</a>]
Tighten up <code class="highlighter-rouge">AvaticaStatement.execute</code> semantics (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-658">CALCITE-658</a>]
Cleanup dependency usage (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-652">CALCITE-652</a>]
Move server pieces of <code class="highlighter-rouge">avatica</code> into <code class="highlighter-rouge">avatica-server</code> (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-651">CALCITE-651</a>]
In <code class="highlighter-rouge">JdbcMeta</code>, convert property definitions to an enum (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-640">CALCITE-640</a>]
Avatica server should expire stale connections/statements (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-639">CALCITE-639</a>]
Open up permissions on avatica server components (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-637">CALCITE-637</a>]
Implement Avatica <code class="highlighter-rouge">CloseConnection</code> RPC (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-636">CALCITE-636</a>]
Connection isolation for Avatica clients (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-626">CALCITE-626</a>]
Implement <code class="highlighter-rouge">CloseStatement</code> RPC (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-630">CALCITE-630</a>]
Flesh out <code class="highlighter-rouge">AvaticaParameter.setObject</code> (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-627">CALCITE-627</a>]
Add Avatica support for <code class="highlighter-rouge">getTableTypes</code>, <code class="highlighter-rouge">getColumns</code> (Xavier FH Leong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-618">CALCITE-618</a>]
Add Avatica support for <code class="highlighter-rouge">getTables</code> (Julian Hyde and Nick Dimiduk)</li>
</ul>
<h4 id="api-changes-1">API changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-617">CALCITE-617</a>]
Check at initialization time in <code class="highlighter-rouge">CachingInvocationHandler</code> that MD provider
is not null (Jesus Camacho Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-638">CALCITE-638</a>]
SQL standard <code class="highlighter-rouge">REAL</code> is 4 bytes, <code class="highlighter-rouge">FLOAT</code> is 8 bytes</li>
</ul>
<h4 id="bug-fixes-and-internal-changes-1">Bug-fixes and internal changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-672">CALCITE-672</a>]
SQL <code class="highlighter-rouge">ANY</code> type should be nullable (Jinfeng Ni)</li>
<li>Disable tests, pending
[<a href="https://issues.apache.org/jira/browse/CALCITE-673">CALCITE-673</a>]
Timeout executing joins against MySQL</li>
<li>Fix traits in MongoDB adapter, and <code class="highlighter-rouge">NullPointerException</code> in <code class="highlighter-rouge">JdbcTest</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-662">CALCITE-662</a>]
Query validation fails when an <code class="highlighter-rouge">ORDER BY</code> clause is used with <code class="highlighter-rouge">WITH CLAUSE</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-606">CALCITE-606</a>]
Fix trait propagation and add test case</li>
<li>Remove checkstyle Eclipse properties from git tracking</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-644">CALCITE-644</a>]
Increase check style line limit to 100 chars (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-648">CALCITE-648</a>]
Update <code class="highlighter-rouge">ProjectMergeRule</code> description for new naming convention (Jinfeng Ni)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-625">CALCITE-625</a>]
<code class="highlighter-rouge">README.md</code> linking to the wrong page of <code class="highlighter-rouge">optiq-csv</code> (hongbin ma)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-632">CALCITE-632</a>]
Sort order returned by <code class="highlighter-rouge">SUPERCLASS_COMPARATOR</code> in
<code class="highlighter-rouge">ReflectiveRelMetadataProvider</code> is inconsistent (Jesus Camacho
Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-335">CALCITE-335</a>]
Remove uses of linq4j <code class="highlighter-rouge">Functions.adapt</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-592">CALCITE-592</a>]
Upgrade to Guava 14.0.1</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-596">CALCITE-596</a>]
JDBC adapter incorrectly reads null values as 0 (Ng Jiunn Jye)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-633">CALCITE-633</a>]
<code class="highlighter-rouge">WITH ... ORDER BY</code> cannot find table</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-614">CALCITE-614</a>]
<code class="highlighter-rouge">IN</code> clause in <code class="highlighter-rouge">CASE</code> in <code class="highlighter-rouge">GROUP BY</code> gives <code class="highlighter-rouge">AssertionError</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-619">CALCITE-619</a>]
Slim down dependencies in parent POM</li>
</ul>
<h2 id="v1-1-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.1.0-incubating">1.1.0-incubating</a> / 2015-03-13</h2>
<p>This Calcite release makes it possible to exploit physical properties
of relational expressions to produce more efficient plans, introducing
collation and distribution as traits, <code class="highlighter-rouge">Exchange</code> relational operator,
and several new forms of metadata.</p>
<p>We add experimental support for streaming SQL.</p>
<p>This release drops support for JDK 1.6; Calcite now requires 1.7 or
later.</p>
<p>We have introduced static <code class="highlighter-rouge">create</code> methods for many sub-classes of
<code class="highlighter-rouge">RelNode</code>. We strongly suggest that you use these rather than
calling constructors directly.</p>
<h4 id="new-features-19">New features</h4>
<ul>
<li>SQL
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-602">CALCITE-602</a>]
Streaming queries (experimental)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-588">CALCITE-588</a>]
Allow <code class="highlighter-rouge">TableMacro</code> to consume maps and collections</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-583">CALCITE-583</a>]
Operator <code class="highlighter-rouge">||</code> mishandles <code class="highlighter-rouge">ANY</code> type (Sean Hsuan-Yi Chu)</li>
</ul>
</li>
<li>Planner rule improvements
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-445">CALCITE-445</a>]
Pull up filters rejected by a <code class="highlighter-rouge">ProjectableFilterableTable</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-600">CALCITE-600</a>]
Use <code class="highlighter-rouge">SetOpFactory</code> in rules containing <code class="highlighter-rouge">Union</code> operator (Jesus
Camacho Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-603">CALCITE-603</a>]
Metadata providers for size, memory, parallelism
<ul>
<li>[<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)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-608">CALCITE-608</a>]
Exception is thrown when <code class="highlighter-rouge">RelMdDistribution</code> for <code class="highlighter-rouge">Project</code>
operator is called (Jesus Camacho Rodriguez)</li>
</ul>
</li>
</ul>
</li>
<li>Collation and distribution as traits
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-88">CALCITE-88</a>]
Add collation as a trait and a kind of <code class="highlighter-rouge">RelNode</code> metadata</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-569">CALCITE-569</a>]
<code class="highlighter-rouge">ArrayIndexOutOfBoundsException</code> when deducing collation (Aman Sinha)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-581">CALCITE-581</a>]
Add <code class="highlighter-rouge">LogicalSort</code> relational expression, and make <code class="highlighter-rouge">Sort</code> abstract</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-526">CALCITE-526</a>]
Add <code class="highlighter-rouge">EnumerableMergeJoin</code>, which exploits sorted inputs</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-71">CALCITE-71</a>]
Provide a way to declare that tables are sorted</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-576">CALCITE-576</a>]
Make <code class="highlighter-rouge">RelCollation</code> trait and <code class="highlighter-rouge">AbstractRelNode.getCollationList</code> consistent</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-254">CALCITE-254</a>]
Propagate <code class="highlighter-rouge">RelCollation</code> on aliased columns in <code class="highlighter-rouge">JoinRule</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-569">CALCITE-569</a>]
<code class="highlighter-rouge">ArrayIndexOutOfBoundsException</code> when deducing collation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-594">CALCITE-594</a>]
Add <code class="highlighter-rouge">RelDistribution</code> trait and <code class="highlighter-rouge">Exchange</code> relational expression</li>
</ul>
</li>
</ul>
<h4 id="api-changes-2">API changes</h4>
<ul>
<li>Many sub-classes of <code class="highlighter-rouge">RelNode</code> now have a static <code class="highlighter-rouge">create</code> 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 <code class="highlighter-rouge">create</code> method if it exists.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-591">CALCITE-591</a>]
Drop support for Java 1.6 (and JDBC 4.0)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-587">CALCITE-587</a>]
Upgrade <code class="highlighter-rouge">jetty-server</code> to 9.2.7.v20150116 and port avatica-server <code class="highlighter-rouge">HttpServer</code>
(Trevor Hartman)</li>
<li>[<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>]</li>
<li>Add means to create <code class="highlighter-rouge">Context</code> instances by wrapping objects and by chaining
contexts</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-599">CALCITE-599</a>]
<code class="highlighter-rouge">EquiJoin</code> in wrong package (Jesus Camacho Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-573">CALCITE-573</a>]
Use user-given names in <code class="highlighter-rouge">RelOptUtil.createProject</code> and <code class="highlighter-rouge">createRename</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-572">CALCITE-572</a>]
Remove <code class="highlighter-rouge">Project.flags</code> (methods are deprecated, to be removed before 2.0)</li>
</ul>
<h4 id="bug-fixes-and-internal-changes-2">Bug-fixes and internal changes</h4>
<ul>
<li>Remove the <code class="highlighter-rouge">LICENSE</code> file of calcite-example-csv (the former
optiq-csv) and move its history into main history</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-615">CALCITE-615</a>]
AvaticaParameter should be Jackson serializable (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-612">CALCITE-612</a>]
Update AvaticaStatement to handle cancelled queries (Parth Chandra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-605">CALCITE-605</a>]
Reduce dependency on third-party maven repositories</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-611">CALCITE-611</a>]
Method <code class="highlighter-rouge">setAggChildKeys</code> should take into account indicator columns of
<code class="highlighter-rouge">Aggregate</code> operator (Jesus Camacho Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-566">CALCITE-566</a>]
<code class="highlighter-rouge">ReduceExpressionsRule</code> requires planner to have an <code class="highlighter-rouge">Executor</code></li>
<li>Refactor <code class="highlighter-rouge">TableScanNode.create</code> method</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-593">CALCITE-593</a>]
Validator in <code class="highlighter-rouge">Frameworks</code> should expand identifiers (Jinfeng Ni)</li>
<li>Australian time-zones changed in <code class="highlighter-rouge">tzdata2014f</code>, Java 1.8.0_31</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-580">CALCITE-580</a>]
Average aggregation on an <code class="highlighter-rouge">Integer</code> column throws <code class="highlighter-rouge">ClassCastException</code></li>
<li>In Travis, ask Surefire to print results to screen</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-586">CALCITE-586</a>]
Prevent JSON serialization of <code class="highlighter-rouge">Signature.internalParameters</code></li>
</ul>
<h2 id="v1-0-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.0.0-incubating">1.0.0-incubating</a> / 2015-01-31</h2>
<p>Calcite’s first major release.</p>
<p>Since the previous release we have re-organized the into the <code class="highlighter-rouge">org.apache.calcite</code>
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>].</p>
<p>The release adds SQL support for <code class="highlighter-rouge">GROUPING SETS</code>, <code class="highlighter-rouge">EXTEND</code>, <code class="highlighter-rouge">UPSERT</code> 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.</p>
<h4 id="new-features-20">New features</h4>
<ul>
<li>SQL
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-494">CALCITE-494</a>]
Support <code class="highlighter-rouge">NEXT</code>/<code class="highlighter-rouge">CURRENT VALUE FOR</code> syntax for using sequences</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-492">CALCITE-492</a>]
Support <code class="highlighter-rouge">UPSERT</code> statement in parser</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-493">CALCITE-493</a>]
Add <code class="highlighter-rouge">EXTEND</code> clause, for defining columns and their types at query/DML time</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-497">CALCITE-497</a>]
Support optional qualifier for column name references</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-356">CALCITE-356</a>]
Allow column references of the form <code class="highlighter-rouge">schema.table.column</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-462">CALCITE-462</a>]
Allow table functions in <code class="highlighter-rouge">LATERAL</code> expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-282">CALCITE-282</a>]
Add <code class="highlighter-rouge">{fn QUARTER(date)}</code> function (Benoy Antony)</li>
<li>Grouping sets
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-370">CALCITE-370</a>]
Support <code class="highlighter-rouge">GROUPING SETS</code>, <code class="highlighter-rouge">CUBE</code>, <code class="highlighter-rouge">ROLLUP</code> in SQL and algebra</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-512">CALCITE-512</a>]
Add <code class="highlighter-rouge">GROUP_ID</code>,<code class="highlighter-rouge">GROUPING_ID</code>, <code class="highlighter-rouge">GROUPING</code> functions</li>
</ul>
</li>
</ul>
</li>
<li>Planner rule improvements
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-92">CALCITE-92</a>]
Optimize away <code class="highlighter-rouge">Project</code> that merely renames fields</li>
<li>Detect and merge duplicate predicates <code class="highlighter-rouge">AND(x, y, x)</code> to <code class="highlighter-rouge">AND(x, y)</code> in more
circumstances</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-557">CALCITE-557</a>]
Speed up planning by never creating <code class="highlighter-rouge">AbstractConverter</code></li>
<li>[<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</li>
<li>Grouping sets
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-542">CALCITE-542</a>]
Support for <code class="highlighter-rouge">Aggregate</code> with grouping sets in <code class="highlighter-rouge">RelMdColumnOrigins</code> (Jesus
Camacho Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-533">CALCITE-533</a>]
Support for grouping sets in <code class="highlighter-rouge">FilterAggregateTransposeRule</code> (Jesus Camacho
Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-532">CALCITE-532</a>]
Support for grouping sets in <code class="highlighter-rouge">AggregateFilterTransposeRule</code> (Jesus Camacho
Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-513">CALCITE-513</a>]
Support for grouping sets in <code class="highlighter-rouge">AggregateProjectMergeRule</code> (Jesus Camacho
Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-510">CALCITE-510</a>]
Support for grouping sets in <code class="highlighter-rouge">AggregateExpandDistinctAggregatesRule</code> (Jesus
Camacho Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-502">CALCITE-502</a>]
Support for grouping sets in <code class="highlighter-rouge">AggregateUnionTransposeRule</code> (Jesus Camacho
Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-503">CALCITE-503</a>]
Tests to check rules on <code class="highlighter-rouge">Aggregate</code> operator without grouping sets (Jesus
Camacho Rodriguez)</li>
</ul>
</li>
</ul>
</li>
<li>Algorithms
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-451">CALCITE-451</a>]
Implement theta join, inner and outer, in enumerable convention</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-489">CALCITE-489</a>]
Update <code class="highlighter-rouge">Correlate</code> mechanics and implement <code class="highlighter-rouge">EnumerableCorrelate</code> (aka nested
loops join)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-544">CALCITE-544</a>]
Implement <code class="highlighter-rouge">Union</code> in interpreter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-562">CALCITE-562</a>]
Implement inner <code class="highlighter-rouge">Join</code> in interpreter and improve handling of scalar expressions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-543">CALCITE-543</a>]
Implement <code class="highlighter-rouge">Aggregate</code> (including <code class="highlighter-rouge">GROUPING SETS</code>) in interpreter (Jacques
Nadeau)</li>
<li>In progress towards
[<a href="https://issues.apache.org/jira/browse/CALCITE-558">CALCITE-558</a>]
add <code class="highlighter-rouge">BINDABLE</code> convention (but <code class="highlighter-rouge">ENUMERABLE</code> is still the default), and add
<code class="highlighter-rouge">ArrayBindable</code> and <code class="highlighter-rouge">Scalar</code> interfaces</li>
</ul>
</li>
<li>Remote driver
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-93">CALCITE-93</a>]
Calcite RPC server</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-94">CALCITE-94</a>]
Remote JDBC driver</li>
<li>Make <code class="highlighter-rouge">JsonHandler</code> and <code class="highlighter-rouge">JsonService</code> thread-safe</li>
</ul>
</li>
</ul>
<h4 id="api-changes-3">API changes</h4>
<ul>
<li>The great code re-org
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-296">CALCITE-296</a>]
Re-organize package structure</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-419">CALCITE-419</a>]
Naming convention for planner rules</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-306">CALCITE-306</a>]
Standardize code style for “import package.*;”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-474">CALCITE-474</a>]
Clean up rule naming in order to support enabling/disabling rules</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-460">CALCITE-460</a>]
Add <code class="highlighter-rouge">ImmutableBitSet</code> and replace uses of <code class="highlighter-rouge">BitSet</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-479">CALCITE-479</a>]
Migrate <code class="highlighter-rouge">RelNode.getChildExps</code> to <code class="highlighter-rouge">RelNode.accept(RexShuttle)</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-527">CALCITE-527</a>]
Drop <code class="highlighter-rouge">rowType</code> field and constructor/copy argument of <code class="highlighter-rouge">Calc</code></li>
</ul>
</li>
<li>Add linq4j and example-csv modules
<ul>
<li>Remove unused packages in linq4j, and fix checkstyle issues in linq4j and csv</li>
<li>Add calcite-linq4j and calcite-example-csv as POM sub-modules</li>
<li>Import ‘optiq-csv’ project as ‘example/csv/’, and add Apache headers</li>
<li>Import ‘linq4j’ project, and add Apache headers</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-478">CALCITE-478</a>]
Move CSV tutorial (Siva Narayanan)</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-464">CALCITE-464</a>]
Make parser accept configurable max length for SQL identifier</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-465">CALCITE-465</a>]
Remove <code class="highlighter-rouge">OneRow</code> and <code class="highlighter-rouge">Empty</code> relational expressions; <code class="highlighter-rouge">Values</code> will suffice</li>
</ul>
<h4 id="bug-fixes-and-internal-changes-3">Bug-fixes and internal changes</h4>
<ul>
<li>Build improvements
<ul>
<li>[<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</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-537">CALCITE-537</a>]
Skip overwrite of <code class="highlighter-rouge">NOTICE</code>, <code class="highlighter-rouge">DEPENDENCIES</code>, and <code class="highlighter-rouge">LICENSE</code> files</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-538">CALCITE-538</a>]
Generate <code class="highlighter-rouge">Parser.jj</code> only at first build</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-539">CALCITE-539</a>]
Avoid rewrite of <code class="highlighter-rouge">org-apache-calcite-jdbc.properties</code></li>
<li>[<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 <code class="highlighter-rouge">git.properties</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-536">CALCITE-536</a>]
Add <code class="highlighter-rouge">@PackageMarker</code> to <code class="highlighter-rouge">package-info.java</code> so maven-compiler skips
compilation when the sources are unchanged</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-535">CALCITE-535</a>]
Support skip overwrite in hydromatic-resource</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-582">CALCITE-582</a>]
<code class="highlighter-rouge">EnumerableTableScan</code> broken when table has single column</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-575">CALCITE-575</a>]
Variant of <code class="highlighter-rouge">ProjectRemoveRule</code> that considers a project trivial only if its
field names are identical (John Pullokkaran)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-571">CALCITE-571</a>]
<code class="highlighter-rouge">ReduceExpressionsRule</code> tries to reduce <code class="highlighter-rouge">SemiJoin</code> condition to non-equi
condition</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-568">CALCITE-568</a>]
Upgrade to a version of <code class="highlighter-rouge">pentaho-aggdesigner</code> that does not pull in
<code class="highlighter-rouge">servlet-api</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-567">CALCITE-567</a>]
Make <code class="highlighter-rouge">quidem</code> dependency have scope “test”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-570">CALCITE-570</a>]
<code class="highlighter-rouge">ReduceExpressionsRule</code> throws “duplicate key” exception</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-561">CALCITE-561</a>]
Upgrade parent POM</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-458">CALCITE-458</a>]
ArrayIndexOutOfBoundsException when using just a single column in interpreter</li>
<li>Fix spurious extra row from <code class="highlighter-rouge">FULL JOIN</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-554">CALCITE-554</a>]
Outer join over NULL keys generates wrong result</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-489">CALCITE-489</a>]
Teach <code class="highlighter-rouge">CalciteAssert</code> to respect multiple settings</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-516">CALCITE-516</a>]
<code class="highlighter-rouge">GROUP BY</code> on a <code class="highlighter-rouge">CASE</code> expression containing <code class="highlighter-rouge">IN</code> predicate fails (Aman Sinha)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-552">CALCITE-552</a>]
Upgrade tpcds (which depends on an old version of guava)</li>
<li>Copy identifier when fully-qualifying, so column aliases have the right case</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-548">CALCITE-548</a>]
Extend <code class="highlighter-rouge">induce</code> method to return <code class="highlighter-rouge">CUBE</code> and <code class="highlighter-rouge">ROLLUP</code> (Jesus Camacho Rodriguez)
<ul>
<li>Simplify <code class="highlighter-rouge">Group.induce</code> by assuming that group sets are sorted</li>
</ul>
</li>
<li>Test case for
[<a href="https://issues.apache.org/jira/browse/CALCITE-212">CALCITE-212</a>]
Join condition with <code class="highlighter-rouge">OR</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-550">CALCITE-550</a>]
Case-insensitive matching of sub-query columns fails
<ul>
<li>Add more unit tests (Jinfeng Ni)</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-448">CALCITE-448</a>]
<code class="highlighter-rouge">FilterIntoJoinRule</code> creates filters containing invalid <code class="highlighter-rouge">RexInputRef</code></li>
<li>When registering a <code class="highlighter-rouge">RelNode</code>, be tolerant if it is equivalent to a <code class="highlighter-rouge">RelNode</code>
with different traits</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-547">CALCITE-547</a>]
Set nullability while inferring return type of <code class="highlighter-rouge">item(any,...)</code> operator</li>
<li>In Travis CI, enable containers, and cache <code class="highlighter-rouge">.m2</code> directory</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-534">CALCITE-534</a>]
Missing implementation of <code class="highlighter-rouge">ResultSetMetaData.getColumnClassName</code> (Knut
Forkalsrud)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-506">CALCITE-506</a>]
Update <code class="highlighter-rouge">EnumerableRelImplementor.stash</code> so it is suitable for all kinds of
classes</li>
<li>Merge join algorithm for <code class="highlighter-rouge">Enumerable</code>s</li>
<li>Efficient <code class="highlighter-rouge">Enumerable</code> over random-access list</li>
<li>Add a test that calls all functions with arguments of all types that they
claim to accept</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-511">CALCITE-511</a>]
<code class="highlighter-rouge">copy</code> method in <code class="highlighter-rouge">LogicalAggregate</code> not copying the indicator value properly</li>
<li>Add a model that has lattices and works against HSQLDB</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-509">CALCITE-509</a>]
<code class="highlighter-rouge">RelMdColumnUniqueness</code> uses <code class="highlighter-rouge">ImmutableBitSet.Builder</code> twice, gets
<code class="highlighter-rouge">NullPointerException</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-488">CALCITE-488</a>]
<code class="highlighter-rouge">Enumerable&lt;Holder&gt;</code> does not work if where <code class="highlighter-rouge">Holder</code> is a custom class
with a single field; Calcite tries to treat it as <code class="highlighter-rouge">SCALAR</code> due to premature
<code class="highlighter-rouge">JavaRowFormat.optimize</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-352">CALCITE-352</a>]
Throw exception if <code class="highlighter-rouge">ResultSet.next()</code> is called after <code class="highlighter-rouge">close()</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-403">CALCITE-403</a>]
<code class="highlighter-rouge">Enumerable</code> gives <code class="highlighter-rouge">NullPointerException</code> with <code class="highlighter-rouge">NOT</code> on nullable expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-469">CALCITE-469</a>]
Update example/csv README.md instructions</li>
<li>Document <code class="highlighter-rouge">WITH</code>, <code class="highlighter-rouge">LATERAL</code>, <code class="highlighter-rouge">GROUPING SETS</code>, <code class="highlighter-rouge">CUBE</code>, <code class="highlighter-rouge">ROLLUP</code>;
add descriptions for all built-in functions and operators</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-470">CALCITE-470</a>]
Print warning when column type hint is not understood;
Update <code class="highlighter-rouge">EMPS.deptno</code> column Integer → int</li>
<li>Fix <code class="highlighter-rouge">Linq4j.product</code>; the cartesian product of 0 attributes is one row of 0
attributes</li>
<li>Update link optiq-mat-plugin → mat-calcite-plugin</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-467">CALCITE-467</a>]
Incorrect namespace in <code class="highlighter-rouge">package-info.java</code></li>
<li>Add headers, to appease the RAT</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-446">CALCITE-446</a>]
CSV adapter should read from directory relative to the model file</li>
<li>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</li>
<li>Fix <code class="highlighter-rouge">JdbcTest.testVersion</code> now that version is 1.0</li>
<li>Update release HOWTO</li>
</ul>
<h2 id="v0-9-2"><a href="https://github.com/apache/calcite/releases/tag/calcite-0.9.2-incubating">0.9.2-incubating</a> / 2014-11-05</h2>
<p>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.</p>
<h4 id="new-features-21">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-436">CALCITE-436</a>]
Simpler SPI to query <code class="highlighter-rouge">Table</code></li>
</ul>
<h4 id="api-changes-4">API changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-447">CALCITE-447</a>]
Change semi-join rules to make use of factories</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-442">CALCITE-442</a>
Add <code class="highlighter-rouge">RelOptRuleOperand</code> constructor that takes a predicate</li>
</ul>
<h4 id="bug-fixes-and-internal-changes-4">Bug-fixes and internal changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-397">CALCITE-397</a>]
<code class="highlighter-rouge">SELECT DISTINCT *</code> on reflective schema gives <code class="highlighter-rouge">ClassCastException</code> at runtime</li>
<li>Various lattice improvements.</li>
<li>sqlline: Looking for class-path in inconsistent locations.</li>
<li>Re-order test suite, so that fast tests are run first.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-444">CALCITE-444</a>]
Filters wrongly pushed into full outer join</li>
<li>Make it more convenient to unit test <code class="highlighter-rouge">RelMetadataQuery</code>, and add some more
tests for
[<a href="https://issues.apache.org/jira/browse/CALCITE-443">CALCITE-443</a>]</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-443">CALCITE-443</a>]
<code class="highlighter-rouge">getPredicates</code> from a Union is not correct</li>
<li>Update references to web sites, git repositories, jira, mailing lists,
travis CI now that [INFRA-8413] is fixed</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-434">CALCITE-435</a>]
<code class="highlighter-rouge">FilterAggregateTransposeRule</code> loses conditions that cannot be pushed</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-435">CALCITE-435</a>]
<code class="highlighter-rouge">LoptOptimizeJoinRule</code> incorrectly re-orders outer joins</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-439">CALCITE-439</a>]
<code class="highlighter-rouge">SqlValidatorUtil.uniquify()</code> may not terminate under some conditions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-438">CALCITE-438</a>]
Push predicates through <code class="highlighter-rouge">SemiJoinRel</code></li>
<li>Add test case for <code class="highlighter-rouge">LIKE ... ESCAPE</code>.</li>
<li>HOWTO: Modify release instructions.</li>
<li>Update <code class="highlighter-rouge">DiffRepository</code> documentation.</li>
<li>Add tests for windowed aggregates without <code class="highlighter-rouge">ORDER BY</code>. (Works already.)</li>
</ul>
<h2 id="v0-9-1"><a href="https://github.com/apache/calcite/releases/tag/calcite-0.9.1-incubating">0.9.1-incubating</a> / 2014-10-02</h2>
<p>This is the first release as Calcite. (The project was previously called Optiq.)</p>
<h4 id="new-features-22">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-430">CALCITE-430</a>]
Rename project from Optiq to Calcite</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-426">CALCITE-426</a>]
Pool JDBC data sources, to make it easier to pool connections</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-416">CALCITE-416</a>]
Execute logical <code class="highlighter-rouge">RelNode</code>s using an interpreter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-376">CALCITE-376</a>]
Move <code class="highlighter-rouge">SqlRun</code> into its own artifact,
<a href="https://github.com/julianhyde/quidem">Quidem</a>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-269">CALCITE-269</a>]
MongoDB result sets larger than 16MB</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-373">CALCITE-373</a>]
<code class="highlighter-rouge">NULL</code> values in <code class="highlighter-rouge">NOT IN</code> sub-queries</li>
<li>SQL functions:
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-422">CALCITE-422</a>]
Add <code class="highlighter-rouge">REGR_SXX</code> and <code class="highlighter-rouge">REGR_SYY</code> regression functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-421">CALCITE-421</a>]
Add <code class="highlighter-rouge">COVAR_POP</code> and <code class="highlighter-rouge">COVAR_SAMP</code> aggregate functions</li>
</ul>
</li>
<li>Planner rules:
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-425">CALCITE-425</a>]
Add <code class="highlighter-rouge">FilterAggregateTransposeRule</code>, that pushes a filter through an
aggregate</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-399">CALCITE-399</a>]
Factorize common <code class="highlighter-rouge">AND</code> factors out of <code class="highlighter-rouge">OR</code> predicates</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-404">CALCITE-404</a>]
<code class="highlighter-rouge">MergeProjectRule</code> should not construct <code class="highlighter-rouge">RexProgram</code>s for simple mappings</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-394">CALCITE-394</a>]
Add <code class="highlighter-rouge">RexUtil.toCnf()</code>, to convert expressions to conjunctive normal form
(CNF)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-389">CALCITE-389</a>]
<code class="highlighter-rouge">MergeFilterRule</code> should flatten <code class="highlighter-rouge">AND</code> condition</li>
</ul>
</li>
<li>Lattices:
<ul>
<li>[<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</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-410">CALCITE-410</a>]
Allow lattice tiles to satisfy a query by rolling up</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-406">CALCITE-406</a>]
Add tile and measure elements to lattice model element</li>
<li>Now, a lattice can materialize an aggregate-join and use it in a subsequent
query.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-402">CALCITE-402</a>]
Lattice should create materializations on demand</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-344">CALCITE-344</a>]
Lattice data structure</li>
</ul>
</li>
<li>Field trimmer:
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-408">CALCITE-408</a>]
Make <code class="highlighter-rouge">FieldTrimmer</code> work with <code class="highlighter-rouge">RelNode</code> base classes</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-388">CALCITE-388</a>]
Handle semi-joins in field trimmer</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-395">CALCITE-395</a>]
Make <code class="highlighter-rouge">FieldTrimmer.trimFields(SetOp)</code> generate <code class="highlighter-rouge">ProjectRel</code> instead of
<code class="highlighter-rouge">CalcRel</code></li>
<li>[<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</li>
</ul>
</li>
</ul>
<h4 id="api-changes-5">API changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-413">CALCITE-413</a>]
Add <code class="highlighter-rouge">RelDataTypeSystem</code> plugin, allowing different max precision of a
<code class="highlighter-rouge">DECIMAL</code></li>
<li>In <code class="highlighter-rouge">Planner</code>, query de-correlation no longer requires state in a
<code class="highlighter-rouge">SqlToRelConverter</code>.</li>
<li>Factories:
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-392">CALCITE-392</a>]
<code class="highlighter-rouge">RelFieldTrimmer</code> should use factory to create new rel nodes</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-382">CALCITE-382</a>]
Refactoring rules to use factories</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-398">CALCITE-398</a>]
Move <code class="highlighter-rouge">CalcRel.createProject</code> methods to <code class="highlighter-rouge">RelOptUtil</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-396">CALCITE-396</a>]
Change return type of <code class="highlighter-rouge">JoinFactory.createJoin()</code>; add <code class="highlighter-rouge">SemiJoinFactory</code></li>
</ul>
</li>
</ul>
<h4 id="bug-fixes-and-internal-changes-5">Bug-fixes and internal changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-386">CALCITE-386</a>]
Fix NOTICE</li>
<li>Add tests inspired by Derby bugs.</li>
<li>Add recent presentation to README.md.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-427">CALCITE-427</a>]
Off-by-one issues in <code class="highlighter-rouge">RemoveDistinctAggregateRule</code>,
<code class="highlighter-rouge">AggregateFilterTransposeRule</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-414">CALCITE-414</a>]
Bad class name in <code class="highlighter-rouge">sqlline</code> shell script</li>
<li>Bad package name in <code class="highlighter-rouge">package-info.java</code> was causing errors in Eclipse.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-412">CALCITE-412</a>]
<code class="highlighter-rouge">RelFieldTrimmer</code>: when trimming <code class="highlighter-rouge">SortRel</code>, the collation and trait set don’t
match</li>
<li>Add test case for
[<a href="https://issues.apache.org/jira/browse/CALCITE-411">CALCITE-411</a>]
Duplicate column aliases</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-407">CALCITE-407</a>]
<code class="highlighter-rouge">RemoveTrivialProjectRule</code> drops child node’s traits</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-409">CALCITE-409</a>]
<code class="highlighter-rouge">PushFilterPastProjectRule</code> should not push filters past windowed aggregates</li>
<li>Fix tests on Windows.</li>
<li>Don’t load <code class="highlighter-rouge">FoodMartQuerySet</code> unless we have to. It’s big.</li>
<li>Enable connection pooling in test suite.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-384">CALCITE-384</a>]
Add <code class="highlighter-rouge">apache-</code> prefix to tarball and directory within tarball</li>
<li>Freeze hive fmpp &gt; freemarker plugin dependency.</li>
<li>Upgrade Janino</li>
<li>Removed hardcoded foodmart schema information</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-387">CALCITE-387</a>]
CompileException when cast TRUE to nullable boolean</li>
<li>Temporary fix for
[<a href="https://issues.apache.org/jira/browse/CALCITE-390">CALCITE-390</a>]
Transitive inference (<code class="highlighter-rouge">RelMdPredicates</code>) doesn’t handle semi-join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-385">CALCITE-385</a>]
Change comment style for Java headers</li>
<li>Disable test that is inconistent between JDK 1.7 and 1.8.</li>
<li>Fix <code class="highlighter-rouge">git-commit-id-plugin</code> error when running in Travis-CI.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-381">CALCITE-381</a>]
Remove plugin versions from the <code class="highlighter-rouge">&lt;plugins&gt;</code> tag in root pom</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-383">CALCITE-383</a>]
Each jar should have a <code class="highlighter-rouge">git.properties</code> file describing its exact version</li>
<li>Fix <code class="highlighter-rouge">mvn site</code> on JDK 1.8 and enable in Travis-CI.</li>
<li>Status icon based on master branch, not whichever branch happened to build
most recently.</li>
<li>HOWTO:
<ul>
<li>Document how to build from git, and how to get jars from maven repo.</li>
<li>Optiq web site</li>
<li>Template emails for Apache votes</li>
<li>Update JIRA cases following release</li>
<li>Instructions for making and verifying a release</li>
</ul>
</li>
</ul>
<h2 id="v0-9-0"><a href="https://github.com/apache/calcite/releases/tag/optiq-0.9.0-incubating">0.9.0-incubating</a> / 2014-08-19</h2>
<p>This is the first release under the Apache incubator process.</p>
<h4 id="new-features-23">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-371">CALCITE-371</a>]
Implement <code class="highlighter-rouge">JOIN</code> whose <code class="highlighter-rouge">ON</code> clause contains mixed equi and theta</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-369">CALCITE-369</a>]
Add <code class="highlighter-rouge">EnumerableSemiJoinRel</code>, implementation of semi-join in enumerable
convention</li>
<li>Add class <code class="highlighter-rouge">Strong</code>, for detecting null-rejecting predicates.</li>
<li>[<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</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-367">CALCITE-367</a>]
<code class="highlighter-rouge">PushFilterPastJoinRule</code> should strengthen join type</li>
<li>Add <code class="highlighter-rouge">EquiJoinRel</code>, base class for joins known to be equi-joins.</li>
<li>Implement <code class="highlighter-rouge">CAST(&lt;string&gt; AS &lt;datetime&gt;)</code> and
<code class="highlighter-rouge">&lt;datetime&gt; + &lt;interval&gt;</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-360">CALCITE-360</a>]
Introduce a rule to infer predicates from equi-join conditions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-349">CALCITE-349</a>]
Add heuristic join-optimizer that can generate bushy joins</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-346">CALCITE-346</a>]
Add commutative join rule</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-347">CALCITE-347</a>]
In <code class="highlighter-rouge">SqlRun</code>, add <code class="highlighter-rouge">!plan</code> command</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-314">CALCITE-314</a>]
Allow simple UDFs based on methods</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-327">CALCITE-327</a>]
Rules should use base class to find rule match &amp; use factory for object
creation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-316">CALCITE-316</a>]
In <code class="highlighter-rouge">SqlRun</code>, match output regardless of order if <code class="highlighter-rouge">ORDER BY</code> not present</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-300">CALCITE-300</a>]
Support multiple parameters in <code class="highlighter-rouge">COUNT(DISTINCT x, y, ...)</code></li>
</ul>
<h4 id="api-changes-6">API changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-343">CALCITE-343</a>]
RelDecorrelator should build its own mappings, not inherit from SqlToRelConverter</li>
<li>Remove deprecated methods.</li>
<li>Convert <code class="highlighter-rouge">Hook</code> to use Guava <code class="highlighter-rouge">Function</code> (was linq4j <code class="highlighter-rouge">Function1</code>).</li>
<li>Add fluent method <code class="highlighter-rouge">withHook</code>, to more easily add hooks in tests.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-321">CALCITE-321</a>]
Add support for overriding implementation of <code class="highlighter-rouge">CompoundIdentifier</code> in
<code class="highlighter-rouge">SqlParser</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-322">CALCITE-322</a>]
Add support for <code class="highlighter-rouge">SqlExplain</code>, <code class="highlighter-rouge">SqlOrderBy</code> and <code class="highlighter-rouge">SqlWith</code> to support
<code class="highlighter-rouge">SqlShuttle</code> use.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-323">CALCITE-323</a>]
Override <code class="highlighter-rouge">SqlUnresolvedFunction.inferReturnType()</code> to return <code class="highlighter-rouge">ANY</code> type
so framework implementors can support late bound function implementations.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-324">CALCITE-324</a>]
Add <code class="highlighter-rouge">ViewExpander</code> for <code class="highlighter-rouge">Planner</code> in <code class="highlighter-rouge">Frameworks</code>. Expose additional
properties of <code class="highlighter-rouge">ViewTable</code> to allow subclassing.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-247">CALCITE-247</a>]
Add <code class="highlighter-rouge">Context</code> and <code class="highlighter-rouge">FrameworkConfig</code></li>
</ul>
<h4 id="bug-fixes-and-internal-changes-6">Bug-fixes and internal changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-380">CALCITE-380</a>]
Downgrade to Guava 11.0.2</li>
<li>Move several .md files into new ‘doc’ directory, to keep the root directory simple.</li>
<li>Add DISCLAIMER</li>
<li>Update history and HOWTO</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-377">CALCITE-377</a>]
UnregisteredDriver should catch, log and re-throw NoClassDefFoundError</li>
<li>Inherit maven-release-plugin from Apache POM.</li>
<li>Test case for
[<a href="https://issues.apache.org/jira/browse/CALCITE-373">CALCITE-373</a>]
NOT IN and NULL values</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-372">CALCITE-372</a>]
Change <code class="highlighter-rouge">LoptOptimizeJoinRule</code> &amp; <code class="highlighter-rouge">PushFilterPast</code>* rules to use factory</li>
<li>Upgrade <code class="highlighter-rouge">maven-checkstyle-plugin</code>.</li>
<li>Add class <code class="highlighter-rouge">Holder</code>, a mutable slot that can contain one object.</li>
<li>Remove the 2-minute wait at the top of the hour for tests of
<code class="highlighter-rouge">CURRENT_TIME</code>, etc.</li>
<li>Tune <code class="highlighter-rouge">ImmutableIntList</code>’s iterators.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-364">CALCITE-364</a>]
Validator rejects valid <code class="highlighter-rouge">WITH ... ORDER BY</code> query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-363">CALCITE-363</a>]
Use <code class="highlighter-rouge">dependencyManagement</code> and <code class="highlighter-rouge">pluginManagement</code> in POM files</li>
<li>Add <code class="highlighter-rouge">FilterFactory</code>.</li>
<li>Add <code class="highlighter-rouge">README</code> file, incubation disclaimers, and how-to build and running tests.</li>
<li>Add <code class="highlighter-rouge">KEYS</code> and start how-to for making snapshots and releases.</li>
<li>Capital case component names; inherit license info from Apache parent POM.</li>
<li>Only run <code class="highlighter-rouge">apache-rat</code> and <code class="highlighter-rouge">git-commit-id-plugin</code> in “release” maven profile.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-348">CALCITE-348</a>]
Add Apache RAT as maven plugin</li>
<li>Change license headers from “Julian Hyde” to “ASF”; add headers where missing.</li>
<li>Fix build breakage on JDK 1.6 due to missing method <code class="highlighter-rouge">BitSet.previousClearBit</code>.</li>
<li>Refactor test infrastructure to allow testing against heuristic bushy-join
optimizer.</li>
<li>Add methods and tests for BitSets, and re-organize tests.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-354">CALCITE-354</a>]
Change maven groupId to “org.apache.optiq”</li>
<li>Specify return type when calling <code class="highlighter-rouge">RexBuilder.makeCall</code>, if possible.</li>
<li>Eliminate duplicate conditions in <code class="highlighter-rouge">RexProgramBuilder.addCondition</code>, not
<code class="highlighter-rouge">RexBuilder.makeCall</code> as previously.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-345">CALCITE-345</a>]
<code class="highlighter-rouge">AssertionError</code> in <code class="highlighter-rouge">RexToLixTranslator</code> comparing to date literal</li>
<li>Restore <code class="highlighter-rouge">PushFilterPastJoinRule</code> to <code class="highlighter-rouge">RelDecorrelator</code>; interim pending
[<a href="https://issues.apache.org/jira/browse/CALCITE-343">CALCITE-343</a>]
fix.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-340">CALCITE-340</a>]
Fix bug in <code class="highlighter-rouge">SqlToRelConverter</code> when push expressions in join conditions into
<code class="highlighter-rouge">ProjectRel</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-313">CALCITE-313</a>]
Query decorrelation fails</li>
<li>While unifying a <code class="highlighter-rouge">RelNode</code> tree with a materialized view expression,
switch representation to <code class="highlighter-rouge">MutableRel</code>s.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-305">CALCITE-305</a>]
Unit test failure on release candidates</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-325">CALCITE-325</a>]
Use Java list instead of Guava list to avoid null checks in case of
<code class="highlighter-rouge">SqlTypeExplicitPrecedenceList</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-326">CALCITE-326</a>]
Fix <code class="highlighter-rouge">RelOptUtil</code> <code class="highlighter-rouge">ANY</code> type check.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-303">CALCITE-303</a>]
Migrate issue URLs</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-331">CALCITE-331</a>]
Precision/scale compatibility checks should always succeed for <code class="highlighter-rouge">ANY</code> type</li>
<li>In <code class="highlighter-rouge">SqlRun</code>, allow <code class="highlighter-rouge">!plan</code> after <code class="highlighter-rouge">!ok</code> for same SQL statement.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-318">CALCITE-318</a>]
Add unit test for <code class="highlighter-rouge">SqlRun</code></li>
<li>Fix a bug where composite <code class="highlighter-rouge">SELECT DISTINCT</code> would return duplicate rows.</li>
</ul>
<h2 id="v0-8"><a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.8">0.8</a> / 2014-06-27</h2>
<h4 id="new-features-24">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-310">CALCITE-310</a>]
Implement LEAD, LAG and NTILE windowed aggregates</li>
<li>Reduce <code class="highlighter-rouge">COUNT(not-null-expression)</code> to <code class="highlighter-rouge">COUNT()</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-292">CALCITE-292</a>]
Improve windowed aggregate return types</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-302">CALCITE-302</a>]
Use heuristic rule to plan queries with large numbers of joins</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-283">CALCITE-283</a>]
Add TPC-DS data generator</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-294">CALCITE-294</a>]
Implement DENSE_RANK windowed aggregate function</li>
<li>SqlRun utility
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-290">CALCITE-290</a>]
Add <code class="highlighter-rouge">SqlRun</code>, an idempotent utility for running SQL test scripts</li>
<li>Add “!skip” command to SqlRun.</li>
<li>Add MySQL formatting mode to SqlRun.</li>
</ul>
</li>
</ul>
<h4 id="api-changes-7">API changes</h4>
<ul>
<li>Re-organize planner initialization,
to make it easier to use heuristic join order.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-301">CALCITE-301</a>]
Add <code class="highlighter-rouge">Program</code> interface, a planner phase more general than current <code class="highlighter-rouge">RuleSet</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-263">CALCITE-263</a>]
Add operand type that will cause a rule to fire when a new subset is created</li>
<li>Clean up and document SqlKind.
<ul>
<li>Add <code class="highlighter-rouge">IS_NOT_TRUE</code> and <code class="highlighter-rouge">IS_NOT_FALSE</code> <code class="highlighter-rouge">SqlKind</code> enums.</li>
<li>Add <code class="highlighter-rouge">SqlKind.IS_NOT_NULL</code> enum value, and use where possible,
including for <code class="highlighter-rouge">IS_NOT_UNKNOWN</code> operator.</li>
</ul>
</li>
</ul>
<h4 id="bug-fixes-and-internal-changes-7">Bug-fixes and internal changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-312">CALCITE-312</a>]
Trim non-required fields before <code class="highlighter-rouge">WindowRel</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-311">CALCITE-311</a>]
Wrong results when filtering the results of windowed aggregation</li>
<li>More tests for <code class="highlighter-rouge">WITH ... ORDER BY</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-309">CALCITE-309</a>]
<code class="highlighter-rouge">WITH ... ORDER BY</code> query gives <code class="highlighter-rouge">AssertionError</code></li>
<li>Enable <code class="highlighter-rouge">MultiJoinRel</code> and some other planner rule tests.</li>
<li>Add <code class="highlighter-rouge">ImmutableNullableList</code> and <code class="highlighter-rouge">UnmodifiableArrayList</code>,
and remove calls to <code class="highlighter-rouge">Arrays.asList</code>.</li>
<li>Add method <code class="highlighter-rouge">IntPair.zip</code>.</li>
<li>Reimplement regular and windowed aggregates</li>
<li>Switch from github to Apache JIRA for issues tracking.
<ul>
<li>In release history, update issue URLs from github to Apache JIRA</li>
</ul>
</li>
<li>The Apache mailing list is now the official mailing list. Add presentations.</li>
<li>Add test for overloaded UDF.</li>
<li>Add tests for <code class="highlighter-rouge">NOT IN</code> where sub-query returns NULL values.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-288">CALCITE-288</a>]
Add tests for windowed aggregation based on Postgres reference queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-286">CALCITE-286</a>]
Error casting MongoDB date</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-284">CALCITE-284</a>]
Window functions range defaults to <code class="highlighter-rouge">CURRENT ROW</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-285">CALCITE-285</a>]
Window functions throw exception without <code class="highlighter-rouge">ORDER BY</code></li>
<li>Test case for
[&lt;a href=“https://issues.apache.org/jira/browse/CALCITE-285”&gt;CALCITE-285&lt;/a&gt;].</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-281">CALCITE-281</a>]
<code class="highlighter-rouge">EXTRACT</code> function’s SQL return type is <code class="highlighter-rouge">BIGINT</code> but implemented as Java <code class="highlighter-rouge">int</code></li>
</ul>
<h2 id="v0-7"><a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.7">0.7</a> / 2014-05-13</h2>
<h4 id="new-features-25">New features</h4>
<ul>
<li>Implement table functions.</li>
<li>Arrays and multi-sets:
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-267">CALCITE-267</a>]
Improve support for ARRAY data type</li>
<li>Better type information for JDBC Array; nested array now possible.</li>
<li>Implement <code class="highlighter-rouge">JOIN LATERAL</code> and <code class="highlighter-rouge">JOIN UNNEST</code>.</li>
<li>Implement the <code class="highlighter-rouge">UNNEST</code> relational operator, and various improvements
to <code class="highlighter-rouge">ARRAY</code> and <code class="highlighter-rouge">MULTISET</code> data types.</li>
<li>Represent <code class="highlighter-rouge">ARRAY</code> columns as Java lists.</li>
<li>Implement <code class="highlighter-rouge">CARDINALITY(ARRAY)</code> SQL operator.</li>
</ul>
</li>
<li>Implement scalar sub-query in <code class="highlighter-rouge">SELECT</code> clause.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-273">CALCITE-273</a>]
Support column alias in WITH queries (common table expressions)</li>
<li>Windowed aggregates:
<ul>
<li>Aggregate over constants, e.g. <code class="highlighter-rouge">SUM(1) OVER (ROWS 10 PRECEDING)</code>;</li>
<li><code class="highlighter-rouge">UNBOUNDED PRECEDING</code> window range;</li>
<li>Windowed aggregates computed over primitive scalars.</li>
</ul>
</li>
<li>Fix return type inference for aggregate calls. If the <code class="highlighter-rouge">GROUP BY</code> clause is
empty, <code class="highlighter-rouge">SUM</code> may return null.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-37">CALCITE-37</a>]
Document JSON model file format (as <a href="https://github.com/apache/calcite/blob/master/site/_docs/model.md">model.md</a>).</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-238">CALCITE-238</a>]
Add adapter that generates TPC-H data</li>
<li>Improve exception message in <code class="highlighter-rouge">AvaticaConnection</code>; add
<code class="highlighter-rouge">ExceptionMessageTest</code>.</li>
<li>Implement micro-benchmarks via
<a href="http://openjdk.java.net/projects/code-tools/jmh/">JMH</a>.</li>
</ul>
<h4 id="api-changes-8">API changes</h4>
<ul>
<li>Provide an option to create root schema without the “metadata” schema.</li>
<li>Schema SPI:
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-175">CALCITE-175</a>]
Modify Schema SPI to allow caching</li>
<li>Get sub-schemas defined by a Schema SPI, and cache their <code class="highlighter-rouge">OptiqSchema</code>
wrappers. (Tobi Vollebregt and Julian Hyde)</li>
</ul>
</li>
<li>SqlAdvisor callable from client via JDBC.</li>
</ul>
<h4 id="bug-fixes-and-internal-changes-8">Bug-fixes and internal changes</h4>
<ul>
<li>Add Apache incubator proposal.</li>
<li>Rename RELEASE.md to HISTORY.md.</li>
<li>Upgrade maven-release-plugin.</li>
<li>Upgrade to linq4j-0.3.</li>
<li>Code generation improvements:</li>
<li>Move code-generation optimizer to linq4j;</li>
<li>Improve translation of strict functions;</li>
<li>Mark most methods in <code class="highlighter-rouge">SqlFunctions</code> as <code class="highlighter-rouge">@Deterministic</code>;</li>
<li>Support <code class="highlighter-rouge">static final</code> constants generated by linq4j.</li>
<li>Avoid excessive box and unbox of primitives when using <code class="highlighter-rouge">Object[]</code> storage.</li>
<li>In JDBC result set, avoid row computation on each accessor call.</li>
<li>Test composite join conditions in various flavors of outer join.</li>
<li>Use <code class="highlighter-rouge">fromTrait</code> of the just previously converted <code class="highlighter-rouge">RelNode</code> instead
of the original <code class="highlighter-rouge">RelNode</code>.</li>
<li>Disable a MongoDB test, pending
[<a href="https://issues.apache.org/jira/browse/CALCITE-270">CALCITE-270</a>].</li>
<li>Hush warnings from <code class="highlighter-rouge">SplunkAdapterTest</code> if Splunk is not available.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-252">CALCITE-252</a>]
Scalar sub-query that returns 0 rows should become NULL value</li>
<li><code class="highlighter-rouge">SplunkAdapterTest</code> now uses the same Foodmart database as <code class="highlighter-rouge">JdbcTest</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-242">CALCITE-242</a>]
SplunkAdapterTest fails</li>
<li>Remove some obsolete classes.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-205">CALCITE-205</a>]
Suspicious map.get in VolcanoPlanner.reregister</li>
</ul>
<h2 id="v0-6"><a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.6">0.6</a> / 2014-04-11</h2>
<h4 id="new-features-26">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-214">CALCITE-214</a>]
Modify Frameworks to allow Schema to be re-used
Obsoletes <code class="highlighter-rouge">name</code> field of <code class="highlighter-rouge">ReflectiveSchema</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-237">CALCITE-237</a>]
Allow user-defined aggregate functions (UDAs) to be defined in a model</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-227">CALCITE-227</a>]
Extend <code class="highlighter-rouge">EXTRACT</code> function to support <code class="highlighter-rouge">DATE</code>, <code class="highlighter-rouge">TIME</code> and <code class="highlighter-rouge">TIMESTAMP</code> values</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-222">CALCITE-222</a>]
User-defined table macros</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-179">CALCITE-179</a>]
Optiq on Windows
<ul>
<li>Add <code class="highlighter-rouge">sqlline.bat</code> and fix issues running <code class="highlighter-rouge">sqlline</code> under Cygwin.</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-195">CALCITE-195</a>]
Push aggregation into MongoDB adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-193">CALCITE-193</a>]
Implement OFFSET and LIMIT in MongoDB adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-164">CALCITE-164</a>]
Improve query performance of optiq over MongoDB</li>
<li>Add Phoenix (HBase) SQL dialect (Bruno Dumon)</li>
</ul>
<h4 id="api-changes-9">API changes</h4>
<ul>
<li>Obsolete <code class="highlighter-rouge">RexImpTable.AggregateImplementor</code> and rename <code class="highlighter-rouge">AggImplementor2</code>.
(<strong>This is a breaking change</strong>.)</li>
<li>Convert <code class="highlighter-rouge">CombinedParser.jj</code> into freemarker template to allow
custom parser implementations. (Venki Korukanti)</li>
<li>Extend <code class="highlighter-rouge">Planner</code> to pass a custom <code class="highlighter-rouge">ConvertletTable</code> and custom SQL parser.</li>
<li>In <code class="highlighter-rouge">Frameworks</code>, add a way to specify list of <code class="highlighter-rouge">TraitDef</code>s that will be used
by planner. (Jinfeng Ni)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-198">CALCITE-198</a>]
Use <code class="highlighter-rouge">RexExecutor</code> to evaluate projections and filters</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-219">CALCITE-219</a>]
Parse <code class="highlighter-rouge">ALTER scope SET option = value</code> statement</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-215">CALCITE-215</a>]
A Schema should not have to remember its name and parent
(<strong>This is a breaking change</strong>.)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-180">CALCITE-180</a>]
Common base class for TableFunction, ScalarFunction
(<strong>This is a breaking change</strong>.)</li>
<li>Add methods for dealing with symbols; deprecate
<code class="highlighter-rouge">SqlLiteral.booleanValue(SqlNode)</code>, <code class="highlighter-rouge">SqlLiteral.symbolValue(SqlNode)</code>.</li>
<li>Add <code class="highlighter-rouge">RelOptPlanner.clear()</code>; now it is safe to call <code class="highlighter-rouge">transform</code> twice.
(Jinfeng Ni)</li>
<li>Remove APIs deprecated for 0.5.</li>
<li>Move around some operator classes and singletons.</li>
</ul>
<h4 id="bug-fixes-and-internal-changes-9">Bug-fixes and internal changes</h4>
<ul>
<li>Upgrade to linq4j-0.2.</li>
<li><code class="highlighter-rouge">FETCH</code> and <code class="highlighter-rouge">LIMIT</code> are ignored during SQL-to-RelNode translation.
(Venki Korukanti)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-245">CALCITE-245</a>]
Off-by-one translation of ON clause of JOIN</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-191">CALCITE-191</a>]
Rotate time/date/timestamp vals to local timezone</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-244">CALCITE-244</a>]
<code class="highlighter-rouge">RelOptTableImpl.create</code> always expects <code class="highlighter-rouge">QueryableTable</code> type in
<code class="highlighter-rouge">OptiqSchema.TableEntry</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-225">CALCITE-225</a>]
Optiq doesn’t correctly decorrelate queries</li>
<li>Clean up package-info. Remove duplicates in test packages so they
don’t conflict with those in non-test packages.</li>
<li>Add <code class="highlighter-rouge">Pair.adjacents(Iterable)</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-199">CALCITE-199</a>]
Various <code class="highlighter-rouge">ANY</code> type conditions aren’t correctly being considered
(Jacques Nadeau)</li>
<li>Add files to <code class="highlighter-rouge">.gitignore</code> that shouldn’t be checked in when using
Eclipse. (Jacques Nadeau)</li>
<li>Add class <code class="highlighter-rouge">ControlFlowException</code>, and make it base class of
existing control-flow exception classes.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-232">CALCITE-232</a>]
Sum and avg of empty set should be null as per SQL specification</li>
<li>Add <code class="highlighter-rouge">SqlUnresolvedFunction</code>, to improve how return type of
user-defined functions is resolved. (Vladimir Sitnikov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-228">CALCITE-228</a>]
Error while compiling generated Java code when using UDF in expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-226">CALCITE-226</a>]
User-defined functions should work without explicit schema prefix</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-229">CALCITE-229</a>]
Join between different JDBC schemas not implementable</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-230">CALCITE-230</a>]
RemoveSortRule derives trait set from sort, should derive it from sort’s child</li>
<li>Test view and sub-query with <code class="highlighter-rouge">ORDER BY</code> and <code class="highlighter-rouge">LIMIT</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-223">CALCITE-223</a>]
Add <code class="highlighter-rouge">NOTICE</code> and <code class="highlighter-rouge">LICENSE</code> files in all generated JAR files</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-209">CALCITE-209</a>]
Consistent strategy for line-endings in tests
Convert uses of <code class="highlighter-rouge">NL</code> in tests to Linux newline “\n”.
This makes string constants simpler.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-218">CALCITE-218</a>]
Functions case sensitive when using <code class="highlighter-rouge">Lex.MYSQL</code></li>
<li>Add tests that a query with aggregate expressions in the <code class="highlighter-rouge">SELECT</code>
clause is considered an aggregate query, even if there is no <code class="highlighter-rouge">GROUP BY</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-216">CALCITE-216</a>]
Inconsistent use of provided operator table causes inability to
add aggregate functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-200">CALCITE-200</a>]
Javadoc generation fails under JDK 1.8</li>
<li>Add class <code class="highlighter-rouge">XmlOutput</code> (based on <code class="highlighter-rouge">org.eigenbase.xom.XMLOutput</code>) and remove
dependency on eigenbase-xom.</li>
<li>Performance: Don’t create stack-trace for exceptions used for control-flow.
(Vladimir Sitnikov)</li>
<li>Performance: Tune <code class="highlighter-rouge">RexProgramBuilder</code> by using <code class="highlighter-rouge">Pair</code> rather than <code class="highlighter-rouge">String</code> as
expression key. (Vladimir Sitnikov)</li>
<li>Fix NPE using TRIM function with JDBC. (Bruno Dumon)</li>
<li>Add dependency on
<a href="https://github.com/julianhyde/hydromatic-resource">hydromatic-resource-maven-plugin</a>
and obsolete our copy of the resource framework.</li>
<li>Fix race condition in <code class="highlighter-rouge">SpaceList</code>.</li>
<li>In planner, use <code class="highlighter-rouge">RelTrait.subsumes</code> rather than <code class="highlighter-rouge">equals</code> in an assert.
(Jinfeng Ni)</li>
</ul>
<h2 id="v0-5"><a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.5">0.5</a> / 2014-03-14</h2>
<h4 id="new-features-27">New features</h4>
<ul>
<li>Allow <code class="highlighter-rouge">quoting</code>, <code class="highlighter-rouge">quotedCasing</code>, <code class="highlighter-rouge">unquotedCasing</code>, and <code class="highlighter-rouge">caseSensitive</code>
properties to be specified explicitly (Vladimir Sitnikov)</li>
<li>Recognize more kinds of materializations, including filter-on-project (where
project contains expressions) and some kinds of aggregation.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-128">CALCITE-128</a>]
Support <code class="highlighter-rouge">WITH</code> queries (common table expressions)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-53">CALCITE-53</a>]
Allow <code class="highlighter-rouge">WHEN</code> clause in simple <code class="highlighter-rouge">CASE</code> expression to have multiple values</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-156">CALCITE-156</a>]
Optiq should recognize ‘SYSTEM TABLE’, ‘JOIN’, ‘INDEX’ as table types</li>
<li>Support querying ARRAY columns from JDBC source. (Gabriel Reid)</li>
</ul>
<h4 id="api-changes-10">API changes</h4>
<ul>
<li>Add
<code class="highlighter-rouge">ProjectRelBase.copy(RelTraitSet, RelNode, List&lt;RexNode&gt;, RelDataType)</code>
and make <code class="highlighter-rouge">ProjectRelBase.copy(RelTraitSet, RelNode)</code> final.
(<strong>This is a breaking change</strong> for sub-classes of <code class="highlighter-rouge">ProjectRelBase</code>.)</li>
<li>Change <code class="highlighter-rouge">RexBuilder.makeRangeReference</code> parameter type.</li>
<li><code class="highlighter-rouge">RexBuilder.makeInputRef</code> replaces <code class="highlighter-rouge">RelOptUtil.createInputRef</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-160">CALCITE-160</a>]
Allow comments in schema definitions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-147">CALCITE-147</a>]
Create a new kind of <code class="highlighter-rouge">SqlCall</code> that keeps operands in fields, not an operands
array
<ul>
<li>Very widely used parse tree nodes with complex operands, including
<code class="highlighter-rouge">SqlSelect</code>, <code class="highlighter-rouge">SqlJoin</code>, <code class="highlighter-rouge">SqlInsert</code>, and a new node type <code class="highlighter-rouge">SqlOrderBy</code>, are
now sub-classes of <code class="highlighter-rouge">SqlCall</code> but not <code class="highlighter-rouge">SqlBasicCall</code>.</li>
<li>(<strong>This is a breaking change</strong> to code that assumes that, say,
<code class="highlighter-rouge">SqlSelect</code> has an <code class="highlighter-rouge">operands</code> field.)</li>
</ul>
</li>
<li>Convert all enum constants to upper-case.
(<strong>This is a breaking change</strong>.)</li>
</ul>
<h4 id="bug-fixes-and-internal-changes-10">Bug-fixes and internal changes</h4>
<ul>
<li>Generate optiq-core-VERSION-tests.jar not parent-VERSION-tests.jar.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-176">CALCITE-176</a>]
ORDER BY expression doesn’t work with SELECT *</li>
<li>Fix VARCHAR casts sent to hsqldb source (Bruno Dumon)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-143">CALCITE-143</a>]
Remove dependency on eigenbase-resgen</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-173">CALCITE-173</a>]
Case-insensitive table names are not supported for <code class="highlighter-rouge">Casing.UNCHANGED</code></li>
<li><code class="highlighter-rouge">DATE.getLimit</code> now returns <code class="highlighter-rouge">Calendar</code> in GMT time zone (Vladimir Sitnikov)</li>
<li>Set <code class="highlighter-rouge">en_US</code> locale in tests that match against error numbers, dates
(Vladimir Sitnikov)</li>
<li>Use 1 test thread per CPU to avoid thread starvation on dual core CPUs
(Vladimir Sitnikov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-174">CALCITE-174</a>]
Move hsqldb to test scope</li>
<li>Add unit tests for <code class="highlighter-rouge">RexExecutorImpl</code>.</li>
<li>Correct JSON model examples in Javadoc comments. (Karel Vervaeke)</li>
<li>Move test reference logs from <code class="highlighter-rouge">src/test/java</code> to <code class="highlighter-rouge">src/test/resources</code>
(reduces the number of ‘untracked files’ reported by git)</li>
<li>Tune <code class="highlighter-rouge">Util.SpaceList</code>, fix race condition, and move into new utility class
<code class="highlighter-rouge">Spaces</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-163">CALCITE-163</a>]
Equi-join warning</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-157">CALCITE-157</a>]
Handle <code class="highlighter-rouge">SQLFeatureNotSupported</code> when calling <code class="highlighter-rouge">setQueryTimeout</code>
(Karel Vervaeke)</li>
<li>Fix Optiq on Windows. (All tests and checkstyle checks pass.)</li>
<li>In checkstyle, support Windows-style file separator, otherwise build fails in
Windows due to suppressions not used. (Vladimir Sitnikov)</li>
<li>Enable MongoDB tests when <code class="highlighter-rouge">-Dcalcite.test.mongodb=true</code>.</li>
<li>Cleanup cache exception-handling and an assert.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-153">CALCITE-153</a>]
Error using MongoDB adapter: Failed to set setXIncludeAware(true)</li>
<li>Disable spark engine unless Spark libraries are on the class path and
<code class="highlighter-rouge">spark=true</code> is specified in the connect string.</li>
<li>Fix path to <code class="highlighter-rouge">mongo-zips-model.json</code> in HOWTO. (Mariano Luna)</li>
<li>Fix bug deriving the type of a join-key.</li>
<li>Fix the value of <code class="highlighter-rouge">ONE_MINUS_EPSILON</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-158">CALCITE-158</a>]
Optiq fails when call <code class="highlighter-rouge">Planner.transform()</code> multiple times, each with
different ruleset</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-148">CALCITE-148</a>]
Less verbose description of collation. Also, optimize <code class="highlighter-rouge">RelTraitSet</code> creation
and amortize <code class="highlighter-rouge">RelTraitSet.toString()</code>.</li>
<li>Add generics to SQL parser.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-145">CALCITE-145</a>]
Unexpected upper-casing of keywords when using java lexer</li>
<li>Remove duplicate <code class="highlighter-rouge">maven-source-plugin</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-141">CALCITE-141</a>]
Downgrade to guava-11.0.2. (This is necessary for Hadoop compatibility.
Later versions of Guava can also be used.)</li>
<li>Upgrade to spark-0.9.0. (Because this version of spark is available from
maven-central, we can make optiq-spark part of the regular build, and remove
the spark profile.)</li>
</ul>
<h2 id="v0-4-18"><a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.4.18">0.4.18</a> / 2014-02-14</h2>
<h4 id="api-and-functionality-changes">API and functionality changes</h4>
<ul>
<li>Configurable lexical policy
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-33">CALCITE-33</a>]
SQL parser should allow different identifier quoting</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-34">CALCITE-34</a>]
Policy for case-sensitivity of identifiers should be configurable</li>
<li>New connect-string parameter “lex”, with allowable values
“ORACLE”, “MYSQL”, “SQL_SERVER”, “JAVA” sets policy to be like those
databases, in terms of quote string, whether quoted and unquoted
identifiers are converted to upper/lower case, and whether
identifiers are matched case-sensitively. “JAVA” is case-sensitive,
even for unquoted identifiers. It should be possible
for each connection to have its own settings for these. Objects
shared between sessions (views, materialized views) might
require more work.</li>
<li>Added various internals to make it easy for developers to do the
right thing. When you need to look up a schema, table or
column/field name, you should use a catalog reader, and it will
apply the right case-sensitivity policy.</li>
<li>Enable optiq consumer to utilize different lexical settings in
Frameworks/Planner. (Jacques Nadeau)</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-135">CALCITE-115</a>]
Add a PARSE_TREE hook point with SqlNode parameter</li>
<li>Change planner rules to use <code class="highlighter-rouge">ProjectFactory</code> for creating
projects. (John Pullokkaran)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-131">CALCITE-131</a>]
Add interfaces for metadata (statistics)
(<strong>This is a breaking change</strong>.)</li>
<li>Update Avatica to allow <code class="highlighter-rouge">Cursor</code> &amp; <code class="highlighter-rouge">Accessor</code> implementations to throw
<code class="highlighter-rouge">SQLException</code>. (Jacques Nadeau)</li>
<li>Separate cost model (<code class="highlighter-rouge">RelOptCostFactory</code>) from planner. Allow
<code class="highlighter-rouge">VolcanoPlanner</code> to be sub-classed with different cost factory.
<ul>
<li>Remove references to VolcanoCost from RelSubset, so clients can
use a different <code class="highlighter-rouge">RelOptCost</code>. (Harish Butani)</li>
<li>Make <code class="highlighter-rouge">VolcanoCost</code> immutable.</li>
</ul>
</li>
<li>Break <code class="highlighter-rouge">SqlTypeStrategies</code> into <code class="highlighter-rouge">OperandTypes</code>, <code class="highlighter-rouge">ReturnTypes</code> and
<code class="highlighter-rouge">InferTypes</code>, and rename its static members to upper-case, per
checkstyle. (<strong>This is a breaking change</strong>.)</li>
<li>Add a mechanism for defining configuration parameters and have them
appear in the responses to <code class="highlighter-rouge">AvaticaDatabaseMetaData</code> methods.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-113">CALCITE-113</a>]
User-defined scalar functions</li>
<li>Add rules to short-cut a query if <code class="highlighter-rouge">LIMIT 0</code> is present. Also remove
sort, aggregation, join if their inputs are known to be empty, and
propagate the fact that the relational expressions are known to be
empty up the tree. (We already do this for union, filter, project.)</li>
<li><code class="highlighter-rouge">RexNode</code> and its sub-classes are now immutable.</li>
</ul>
<h4 id="bug-fixes-and-internal-changes-11">Bug-fixes and internal changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-61">CALCITE-16</a>]
Upgrade to janino-2.7</li>
<li>Upgrade to guava-15.0 (guava-14.0.1 still allowed), sqlline-1.1.7,
maven-surefire-plugin-2.16, linq4j-0.1.13.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-136">CALCITE-136</a>]
Support Hive dialect</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-138">CALCITE-138</a>]
SqlDataTypeSpec.clone handles collection types wrong</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-137">CALCITE-137</a>]
If a subset is created that is subsumed by an existing subset, its
‘best’ is not assigned
<ul>
<li>If best rel in a Volcano subset doesn’t have metadata, see if
other rels have metadata.</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-127">CALCITE-127</a>]
EnumerableCalcRel can’t support 3+ AND conditions (Harish Butani)</li>
<li>Fix push-down of datetime literals to JDBC data sources.</li>
<li>Add <code class="highlighter-rouge">Util.startsWith(List, List)</code> and <code class="highlighter-rouge">Util.hashCode(double)</code>.</li>
<li>Add maven-checkstyle-plugin, enable in “verify” phase, and fix exceptions.</li>
<li>Fix <code class="highlighter-rouge">SqlValidator</code> to rely on <code class="highlighter-rouge">RelDataType</code> to do field name matching. Fix
<code class="highlighter-rouge">RelDataTypeImpl</code> to correctly use the case sensitive flag rather than
ignoring it.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-119">CALCITE-119</a>]
Comparing Java type long with SQL type INTEGER gives wrong answer</li>
<li>Enable multi-threaded testing, and fix race conditions.
<ul>
<li>Two of the race conditions involved involving trait caches. The
other was indeterminacy in type system when precision was not
specified but had a default; now we canonize TIME to TIME(0), for
instance.</li>
</ul>
</li>
<li>Convert files to <code class="highlighter-rouge">us-ascii</code>.</li>
<li>Work around
[<a href="http://jira.codehaus.org/browse/JANINO-169">JANINO-169</a>].</li>
<li>Refactor SQL validator testing infrastructure so SQL parser is
configurable.</li>
<li>Add <code class="highlighter-rouge">optiq-mat-plugin</code> to README.</li>
<li>Fix the check for duplicate subsets in a rule match.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-112">CALCITE-112</a>]
Java boolean column should be treated as SQL boolean</li>
<li>Fix escaped unicode characters above 0x8000. Add tests for unicode
strings.</li>
</ul>
<h2 id="v0-4-17"><a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.4.17">0.4.17</a> / 2014-01-13</h2>
<h4 id="api-changes-11">API changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-106">CALCITE-106</a>]
Make <code class="highlighter-rouge">Schema</code> and <code class="highlighter-rouge">Table</code> SPIs simpler to implement, and make them
re-usable across connections
(<strong>This is a breaking change</strong>.)</li>
<li>Make it easier to define sub-classes of rule operands. The new class
<code class="highlighter-rouge">RelOptRuleOperandChildren</code> contains the children of an operand and
the policy for dealing with them. Existing rules now use the new
methods to construct operands: <code class="highlighter-rouge">operand()</code>, <code class="highlighter-rouge">leaf()</code>, <code class="highlighter-rouge">any()</code>, <code class="highlighter-rouge">none()</code>,
<code class="highlighter-rouge">unordered()</code>. The previous methods are now deprecated and will be
removed before 0.4.18. (<strong>This is a breaking change</strong>.)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-101">CALCITE-101</a>]
Enable phased access to the Optiq engine</li>
<li>List-handling methods in <code class="highlighter-rouge">Util</code>: add methods <code class="highlighter-rouge">skipLast</code>, <code class="highlighter-rouge">last</code>, <code class="highlighter-rouge">skip</code>;
remove <code class="highlighter-rouge">subList</code>, <code class="highlighter-rouge">butLast</code>.</li>
<li>Convert <code class="highlighter-rouge">SqlIdentifier.names</code> from <code class="highlighter-rouge">String[]</code> to <code class="highlighter-rouge">ImmutableList&lt;String&gt;</code>.</li>
<li>Rename <code class="highlighter-rouge">OptiqAssert.assertThat()</code> to <code class="highlighter-rouge">that()</code>, to avoid clash with junit’s
<code class="highlighter-rouge">Assert.assertThat()</code>.</li>
<li>Usability improvements for <code class="highlighter-rouge">RelDataTypeFactory.FieldInfoBuilder</code>. It
now has a type-factory, so you can just call <code class="highlighter-rouge">build()</code>.</li>
<li>Rework <code class="highlighter-rouge">HepProgramBuilder</code> into a fluent API.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-105">CALCITE-105</a>]
Externalize RelNode to and from JSON</li>
</ul>
<h4 id="tuning">Tuning</h4>
<ul>
<li>If <code class="highlighter-rouge">EnumerableAggregateRel</code> has no aggregate functions, generate a
call to <code class="highlighter-rouge">Enumerable.distinct()</code>, thereby saving the effort of
building trivial accumulators.</li>
<li>Default rule set now does not introduce <code class="highlighter-rouge">CalcRel</code> until a later phase
of planning. This reduces the number of trivial projects and calcs
created, merged, and elimated.</li>
<li>Reduce the amount of time spent creating record types that
already exist.</li>
<li>More efficient implementation of <code class="highlighter-rouge">Util.isDistinct</code> for small lists.</li>
<li>When an internal record has 0 fields, rather than generating a
synthetic class and lots of instances that are all the same, use the
new <code class="highlighter-rouge">Unit</code> class, which is a singleton.</li>
<li>To take advantage of asymmetric hash join added recently in linq4j,
tweak cost of <code class="highlighter-rouge">EnumerableJoinRel</code> so that join is cheaper if the
larger input is on the left, and more expensive if it is a cartesian
product.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-70">CALCITE-70</a>]
Joins seem to be very expensive in memory</li>
<li>Make planning process more efficient by not sorting the list of
matched rules each cycle. It is sorted if tracing is enabled;
otherwise we scan to find the most important element. For this list,
replace <code class="highlighter-rouge">LinkedList</code> with <code class="highlighter-rouge">ChunkList</code>, which has an O(1) remove and add,
a fast O(n) get, and fast scan.</li>
</ul>
<h4 id="other">Other</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-87">CALCITE-87</a>]
Constant folding
<ul>
<li>Rules for constant-expression reduction, and to simplify/eliminate
<code class="highlighter-rouge">VALUES</code> operator.</li>
</ul>
</li>
<li>Graph algorithms: Implement breadth-first iterator and cycle-detector.</li>
<li>Fix bug in planner which occurred when two <code class="highlighter-rouge">RelNode</code>s have identical
digest but different row-type.</li>
<li>Fix link to optiq-csv tutorial.</li>
<li>Fix bugs in <code class="highlighter-rouge">RemoveTrivialProjectRule.strip</code>, <code class="highlighter-rouge">JdbcProjectRel.implement</code>
and <code class="highlighter-rouge">SortRel.computeSelfCost</code>.</li>
<li>Reformat code, and remove <code class="highlighter-rouge">@author</code> tags.</li>
<li>Upgrade to eigenbase-xom-1.3.4, eigenbase-properties-1.1.4,
eigenbase-resgen-1.3.6.</li>
<li>Upgrade to linq4j-0.1.12.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-97">CALCITE-97</a>]
Correlated EXISTS</li>
<li>Fix a bug in <code class="highlighter-rouge">VolcanoCost</code>.</li>
<li>Add class <code class="highlighter-rouge">FoodMartQuerySet</code>, that contains the 6,700 foodmart queries.</li>
<li>Fix factory class names in <code class="highlighter-rouge">UnregisteredDriver</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-96">CALCITE-96</a>]
LIMIT against a table in a clone schema causes UnsupportedOperationException</li>
<li>Disable spark module by default.</li>
<li>Allow <code class="highlighter-rouge">CloneSchema</code> to be specified in terms of url, driver, user,
password; not just dataSource.</li>
<li>Wrap internal error in <code class="highlighter-rouge">SQLException</code>.</li>
</ul>
<h2 id="v0-4-16"><a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.4.16">0.4.16</a> / 2013-11-24</h2>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-69">CALCITE-69</a>]
Can’t join on string columns and other problems with expressions in the join
condition</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-74">CALCITE-74</a>]
JOIN … USING fails in 3-way join with UnsupportedOperationException.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-65">CALCITE-65</a>]
Fix issues in the JDBC driver, and in particular to DatabaseMetaData methods,
to make Squirrel-SQL run better.</li>
<li>Fix JDBC column, table, schema names for when the table is not in a schema of
depth 1.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-85">CALCITE-85</a>]
Adding a table to the root schema causes breakage in OptiqPrepareImpl</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-84">CALCITE-84</a>]
Extract Optiq’s JDBC driver as a new JDBC driver framework, Avatica.
Other projects can use this to implement a JDBC driver by implementing
just a few methods. If you wish to use Optiq’s JDBC driver, you will
now need to include optiq-avatica.jar in addition to optiq-core.jar.
Avatica does not depend on anything besides the standard Java library.</li>
<li>Support for parameters in PreparedStatement.</li>
<li>First steps in recognizing complex materializations. Internally we introduce a
concept called a “star table”, virtual table composed of real tables joined
together via many-to-one relationships. The queries that define
materializations and end-user queries are canonized in terms of star tables.
Matching (not done yet) will then be a matter of looking for sort, groupBy,
project. It is not yet possible to define a star in an Optiq model file.</li>
<li>Add section to <a href="https://github.com/apache/calcite/blob/master/site/_docs/howto.md">HOWTO</a>
on implementing adapters.</li>
<li>Fix data type conversions when creating a clone table in memory.</li>
<li>Fix how strings are escaped in JsonBuilder.</li>
<li>Test suite now depends on an embedded hsqldb database, so you can run
<code>mvn test</code> right after pulling from git. You can instead use a
MySQL database if you specify ‘-Dcalcite.test.db=mysql’, but you need to
manually populate it.</li>
<li>Fix a planner issue which occurs when the left and right children of join are
the same relational expression, caused by a self-join query.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-76">CALCITE-76</a>]
Precedence of the item operator, <code>map[index]</code>; remove the space
before ‘[’ when converting parse tree to string.</li>
<li>Allow <code>CAST(expression AS ANY)</code>, and fix an issue with the ANY type
and NULL values.</li>
<li>Handle null timestamps and dates coming out of JDBC adapter.</li>
<li>Add <code>jdbcDriver</code> attribute to JDBC schema in model, for drivers
that do not auto-register.</li>
<li>Allow join rules to match any subclass of JoinRelBase.</li>
<li>Push projects, filters and sorts down to MongoDB. (Fixes
[<a href="https://issues.apache.org/jira/browse/CALCITE-57">CALCITE-57</a>],
[<a href="https://issues.apache.org/jira/browse/CALCITE-60">CALCITE-60</a>] and
[<a href="https://issues.apache.org/jira/browse/CALCITE-72">CALCITE-72</a>].)</li>
<li>Add instructions for loading FoodMart data set into MongoDB, and how to enable
tracing.</li>
<li>Now runs on JDK 1.8 (still runs on JDK 1.6 and JDK 1.7).</li>
<li>Upgrade to junit-4.11 (avoiding the dodgy junit-4.1.12).</li>
<li>Upgrade to linq4j-0.1.11.</li>
</ul>
<h2 id="v0-4-15"><a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.4.15">0.4.15</a> / 2013-10-14</h2>
<ul>
<li>Lots of good stuff that this margin is too small to contain. See
<a href="https://github.com/apache/calcite/blob/master/site/_docs/reference.md">SQL language reference</a> and
<a href="https://github.com/apache/calcite/blob/master/site/_docs/model.md">JSON model reference</a>.</li>
</ul>
<h1 id="optiq-csv-release-history">Optiq-csv release history</h1>
<p>Optiq-csv-0.3 was the last independent release of optiq-csv. From
calcite-0.9.2 onwards, the code was included as the
calcite-example-csv module.</p>
<ul>
<li>Upgrade to calcite-0.9.1</li>
<li>Support gzip-compressed CSV and JSON files (recognized by ‘.gz’ suffix)</li>
<li>Cleanup, and fix minor timezone issue in a test</li>
<li>Support for date types (date, time, timestamp) (Martijn van den Broek)</li>
<li>Upgrade to optiq-0.8, optiq-avatica-0.8, linq4j-0.4</li>
<li>Add support for JSON files (recognized by ‘.json’ suffix)</li>
<li>Upgrade maven-release-plugin to version 2.4.2</li>
<li>Upgrade to optiq-0.6, linq4j-0.2</li>
<li>Add NOTICE and LICENSE files in generated JAR file</li>
</ul>
<h2 id="csv-v0-3"><a href="https://github.com/julianhyde/optiq-csv/releases/tag/optiq-csv-0.3">0.3</a> / 2014-03-21</h2>
<ul>
<li>Upgrade to optiq-0.5</li>
<li>Add workaround to
[<a href="https://github.com/jline/jline2/issues/62">JLINE2-62</a>]
to <code class="highlighter-rouge">sqlline.bat</code> (windows) and <code class="highlighter-rouge">sqlline</code> (windows using cygwin)</li>
<li>Fix classpath construction: <code class="highlighter-rouge">sqlline.bat</code> copies dependencies to
<code class="highlighter-rouge">target/dependencies</code>; <code class="highlighter-rouge">sqlline</code> constructs <code class="highlighter-rouge">target/classpath.txt</code></li>
<li>Build, checkstyle and tests now succeed on windows (both native and cygwin)</li>
<li>Models can now contain comments</li>
<li>[<a href="https://github.com/julianhyde/optiq-csv/issues/2">OPTIQ-CSV-2</a>]
Update tutorial to reflect changes to Optiq’s JDBC adapter</li>
</ul>
<h2 id="csv-v0-2"><a href="https://github.com/julianhyde/optiq-csv/releases/tag/optiq-csv-0.2">0.2</a> / 2014-02-18</h2>
<ul>
<li>Add test case for
[<a href="https://issues.apache.org/jira/browse/CALCITE-112">CALCITE-112</a>]</li>
<li>Add <code class="highlighter-rouge">sqlline.bat</code>, Windows SQL shell (based on fix for
[<a href="https://issues.apache.org/jira/browse/DRILL-338">DRILL-338</a>])</li>
<li>Upgrade to optiq-0.4.18, sqlline-1.1.7</li>
<li>Return a single object for single-col enumerator (Gabriel Reid)</li>
<li>Enable maven-checkstyle-plugin; fix checkstyle exceptions</li>
</ul>
<h2 id="csv-v0-1"><a href="https://github.com/julianhyde/optiq-csv/releases/tag/optiq-csv-0.1">0.1</a> / 2014-01-13</h2>
<ul>
<li>Add release notes and history</li>
<li>Enable maven-release-plugin</li>
<li>Upgrade to optiq-0.4.17, linq4j-0.1.12, sqlline-1.1.6</li>
<li>Upgrade tutorial for new Schema and Table SPIs</li>
<li>Fixes for optiq SPI changes in
[<a href="https://issues.apache.org/jira/browse/CALCITE-106">CALCITE-106</a>]</li>
<li>Enable oraclejdk8 in Travis CI</li>
<li>Fix bug where non-existent directory would give NPE; instead print warning</li>
<li>Add an example of a planner rule</li>
<li>Add <code class="highlighter-rouge">CsvTableFactory</code>, an example of a custom table</li>
<li>Add a view to tutorial</li>
<li>Split into scenario with a “simple” schema that generates tables
(<code class="highlighter-rouge">CsvTable</code>) that just execute and a “smart” schema that generates
tables (<code class="highlighter-rouge">CsvSmartTable</code>) that undergo optimization</li>
<li>Make <code class="highlighter-rouge">CsvEnumerator</code> a top-level class</li>
<li>Implement the algorithms to sniff names and types from the first
row, and to return an enumerator of all rows</li>
<li>Read column types from header of CSV file</li>
</ul>
<h1 id="linq4j-release-history">Linq4j release history</h1>
<p>Linq4j-0.4 was the last independent release of linq4j. From
calcite-0.9.2 onwards, the code was included as calcite-linq4j, and
features added to linq4j in a particular calcite release are described
with the other changes in that release.</p>
<h2 id="linq4j-v0-4"><a href="https://github.com/julianhyde/linq4j/releases/tag/linq4j-0.4">0.4</a> / 2014-05-28</h2>
<ul>
<li>Fix <a href="https://github.com/julianhyde/linq4j/issues/27">#27</a>,
“Incorrectly inlines non-final variable”.</li>
<li>Maven build process now deploys web site.</li>
<li>Implement <code class="highlighter-rouge">Enumerable</code> methods: <code class="highlighter-rouge">any</code>, <code class="highlighter-rouge">all</code>,
<code class="highlighter-rouge">contains</code> with <code class="highlighter-rouge">EqualityComparer</code>, <code class="highlighter-rouge">first</code>, <code class="highlighter-rouge">first</code> with predicate.</li>
</ul>
<h2 id="linq4j-v0-3"><a href="https://github.com/julianhyde/linq4j/releases/tag/linq4j-0.3">0.3</a> / 2014-04-21</h2>
<ul>
<li>Move optimizer visitor from optiq to linq4j; add
<code class="highlighter-rouge">ExpressionType.modifiesLvalue</code> to avoid invalid inlining.</li>
<li>Fix <a href="https://github.com/julianhyde/linq4j/issues/17">#17</a>,
“Assign constant expressions to ‘static final’ members”;
add <code class="highlighter-rouge">@Deterministic</code> annotation to help deduce which expressions are
constant.</li>
<li>Multi-pass optimization: some of the variables might be avoided and
inlined after the first pass.</li>
<li>Various other peephole optimizations: <code class="highlighter-rouge">Boolean.valueOf(const)</code>,
‘not’ expressions (<code class="highlighter-rouge">!const</code>, <code class="highlighter-rouge">!!a</code>, <code class="highlighter-rouge">!(a==b)</code>, <code class="highlighter-rouge">!(a!=b)</code>, <code class="highlighter-rouge">!(a&gt;b)</code>,
etc.),
‘?’ expressions coming from <code class="highlighter-rouge">CASE</code> (<code class="highlighter-rouge">a ? booleanConstant : b</code> and <code class="highlighter-rouge">a
? b : booleanConstant</code>).</li>
<li>Implement left, right and full outer join.</li>
<li>Clean build on cygwin/Windows.</li>
</ul>
<h2 id="linq4j-v0-2"><a href="https://github.com/julianhyde/linq4j/releases/tag/linq4j-0.2">0.2</a> / 2014-04-11</h2>
<ul>
<li>Fix <a href="https://github.com/julianhyde/linq4j/issues/8">#8</a>,
“Javadoc generation fails under JDK 1.8”.</li>
<li>Fix <a href="https://github.com/julianhyde/linq4j/issues/15">#15</a>,
<code class="highlighter-rouge">Expressions.ifThenElse</code> does not work”.</li>
<li>Use <code class="highlighter-rouge">HashMap</code> for searching of declarations to reuse; consider both
<code class="highlighter-rouge">optimizing</code> and <code class="highlighter-rouge">optimize</code> flags when reusing.</li>
<li>Implement <code class="highlighter-rouge">equals</code> and <code class="highlighter-rouge">hashCode</code> for expressions. Hash codes for
complex expressions are cached into a field of the expression.</li>
<li>Add example, <code class="highlighter-rouge">com.example.Linq4jExample</code>.</li>
<li>Fix optimizing away parameter declarations in assignment target.</li>
<li>Support Windows path names in checkstyle-suppresions.</li>
<li>Support <code class="highlighter-rouge">Statement.toString</code> via <code class="highlighter-rouge">ExpressionWriter</code>.</li>
<li>Use <code class="highlighter-rouge">AtomicInteger</code> for naming of <code class="highlighter-rouge">ParameterExpression</code>s to avoid
conflicts in multithreaded usage</li>
<li>Cleanup: use <code class="highlighter-rouge">Functions.adapt</code> rather than <code class="highlighter-rouge">new AbstractList</code></li>
<li>Add <code class="highlighter-rouge">NOTICE</code> and <code class="highlighter-rouge">LICENSE</code> files in generated JAR file.</li>
<li>Optimize <code class="highlighter-rouge">select()</code> if selector is identity.</li>
<li>Enable checkstyle.</li>
</ul>
<h2 id="linq4j-v0-1-13"><a href="https://github.com/julianhyde/linq4j/releases/tag/linq4j-0.1.13">0.1.13</a> / 2014-01-20</h2>
<ul>
<li>Remove spurious “null” generated when converting expression to string.</li>
<li>Allow a field declaration to not have an initializer.</li>
<li>Add <code class="highlighter-rouge">Primitive.defaultValue</code>.</li>
<li>Enable <code class="highlighter-rouge">oraclejdk8</code> in <a href="https://travis-ci.org/julianhyde/linq4j">Travis CI</a>.</li>
</ul>
<h2 id="linq4j-v0-1-12"><a href="https://github.com/julianhyde/linq4j/releases/tag/linq4j-0.1.12">0.1.12</a> / 2013-12-07</h2>
<ul>
<li>Add release notes.</li>
<li>Fix implementation of <code class="highlighter-rouge">Enumerable.asEnumerable</code> in
<code class="highlighter-rouge">DefaultQueryable</code> (inherited by most classes that implement
<code class="highlighter-rouge">Queryable</code>).</li>
</ul>
<h2 id="linq4j-v0-1-11"><a href="https://github.com/julianhyde/linq4j/releases/tag/linq4j-0.1.11">0.1.11</a> / 2013-11-06</h2>
<ul>
<li>Initial commit</li>
</ul>
<div class="section-nav">
<div class="left align-right">
<a href="/docs/howto.html" class="prev">Previous</a>
</div>
<div class="right align-left">
<a href="/docs/powered_by.html" class="next">Next</a>
</div>
</div>
<div class="clear"></div>
</article>
</div>
<div class="unit one-fifth hide-on-mobiles">
<aside>
<h4>Overview</h4>
<ul>
<li class=""><a href="/docs/index.html">Background</a></li>
<li class=""><a href="/docs/tutorial.html">Tutorial</a></li>
<li class=""><a href="/docs/algebra.html">Algebra</a></li>
</ul>
<h4>Advanced</h4>
<ul>
<li class=""><a href="/docs/adapter.html">Adapters</a></li>
<li class=""><a href="/docs/spatial.html">Spatial</a></li>
<li class=""><a href="/docs/stream.html">Streaming</a></li>
<li class=""><a href="/docs/materialized_views.html">Materialized Views</a></li>
<li class=""><a href="/docs/lattice.html">Lattices</a></li>
</ul>
<h4>Avatica</h4>
<ul>
<li class=""><a href="/docs/avatica_overview.html">Overview</a></li>
<li class=""><a href="/docs/avatica_roadmap.html">Roadmap</a></li>
<li class=""><a href="/docs/avatica_json_reference.html">JSON Reference</a></li>
<li class=""><a href="/docs/avatica_protobuf_reference.html">Protobuf Reference</a></li>
</ul>
<h4>Reference</h4>
<ul>
<li class=""><a href="/docs/reference.html">SQL language</a></li>
<li class=""><a href="/docs/model.html">JSON/YAML models</a></li>
<li class=""><a href="/docs/howto.html">HOWTO</a></li>
</ul>
<h4>Meta</h4>
<ul>
<li class="current"><a href="/docs/history.html">History</a></li>
<li class=""><a href="/docs/powered_by.html">Powered by Calcite</a></li>
<li class=""><a href="/apidocs">API</a></li>
<li class=""><a href="/testapidocs">Test API</a></li>
</ul>
</aside>
</div>
<div class="clear"></div>
</div>
</section>
<footer role="contentinfo">
<div id="poweredby">
<a href="http://www.apache.org/">
<span class="sr-only">Apache</span>
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
<p>The contents of this website are Copyright &copy;&nbsp;2019
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
Apache&nbsp;License&nbsp;v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
<script>
var anchorForId = function (id) {
var anchor = document.createElement("a");
anchor.className = "header-link";
anchor.href = "#" + id;
anchor.innerHTML = "<span class=\"sr-only\">Permalink</span><i class=\"fa fa-link\"></i>";
anchor.title = "Permalink";
return anchor;
};
var linkifyAnchors = function (level, containingElement) {
var headers = containingElement.getElementsByTagName("h" + level);
for (var h = 0; h < headers.length; h++) {
var header = headers[h];
if (typeof header.id !== "undefined" && header.id !== "") {
header.appendChild(anchorForId(header.id));
}
}
};
document.onreadystatechange = function () {
if (this.readyState === "complete") {
var contentBlock = document.getElementsByClassName("docs")[0] || document.getElementsByClassName("news")[0];
if (!contentBlock) {
return;
}
for (var level = 1; level <= 6; level++) {
linkifyAnchors(level, contentBlock);
}
}
};
</script>
</body>
</html>