| <!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"> |
| <nav class="mobile-nav show-on-mobiles"> |
| <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 class="grid"> |
| <div class="unit one-third center-on-mobiles"> |
| <h1> |
| <a href="/"> |
| <span class="sr-only">Apache Calcite</span> |
| <img src="/img/logo.png" width="226" height="140" alt="Calcite Logo"> |
| </a> |
| </h1> |
| </div> |
| <nav class="main-nav unit two-thirds hide-on-mobiles"> |
| <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-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">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">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">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 > 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>&<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&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 =ANY subquery (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 ANY subquery 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 decorrelate subquery 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">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">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-1">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-1">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' < 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-1">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-1">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-2">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-2">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 > 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 >= 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-2">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-2">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-3">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-3">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-4">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-4">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-3">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-5">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-5">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"><></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-4">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-6">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-6">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-5">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-7">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-7">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"><></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(<string> 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-6">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-8">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 > 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"><TH></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-8">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('<string>' 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-7">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<R></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-9">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-9">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-8">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"><></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-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-9">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-10">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-11">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-10">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-11">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-12">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-11">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-12">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-13">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-12">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-13">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-14">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-13">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-14">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-15">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-15">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-16">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(*) > 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-16">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-17">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-18">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-19">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<Holder></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-20">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-21">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 > 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"><plugins></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-22">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(<string> AS <datetime>)</code> and |
| <code class="highlighter-rouge"><datetime> + <interval></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 & 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> & <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-23">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 |
| [<a href=“https://issues.apache.org/jira/browse/CALCITE-285”>CALCITE-285</a>].</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-24">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-25">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-26">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<RexNode>, 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> & <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<String></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>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 © 2019 |
| <a href="https://www.apache.org/">Apache Software Foundation</a> |
| under the terms of |
| the <a href="https://www.apache.org/licenses/"> |
| Apache License 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> |