diff --git a/README b/README
index be0c63bcf34..985f6751000 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-Apache Calcite release 1.11.0
+Apache Calcite release 1.12.0
This is a source or binary distribution of Apache Calcite.
diff --git a/pom.xml b/pom.xml
index 827e335aca5..5868c04d67b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,7 +49,7 @@ limitations under the License.
UTF-8
${project.basedir}
1
- 11
+ 12
0.1
diff --git a/site/_docs/history.md b/site/_docs/history.md
index 2e1a1577e7c..52a4f10959c 100644
--- a/site/_docs/history.md
+++ b/site/_docs/history.md
@@ -28,9 +28,18 @@ For a full list of releases, see
Downloads are available on the
[downloads page]({{ site.baseurl }}/downloads/).
-## 1.12.0 / under development
+## 1.12.0 / 2017-03-24
{: #v1-12-0}
+Features of note this release are JDK9 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 `TUMBLE`, `HOP` and `SESSION` window functions in streaming and regular queries,
+experimental support for `MATCH_RECOGNIZE` clause for complex-event processing (CEP),
+several new built-in functions to comply with the ODBC/JDBC standard.
+
Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 1.7, 1.8, 9;
@@ -40,18 +49,243 @@ other software versions as specified in `pom.xml`.
### New features
+* [CALCITE-1666]
+ Support for modifiable views with extended columns (Kevin Liew)
+* [CALCITE-1655]
+ Druid adapter: add `IN` filter (Slim Bouguerra)
+* [CALCITE-1641]
+ Add parser and validator support for `MATCH_RECOGNIZE`, a new clause for
+ complex-event processing (CEP) (Zhiqiang-He)
+ * [CALCITE-1686]
+ Only allow `FINAL` and other functions inside `MATCH_RECOGNIZE` (Zhiqiang-He)
+ * [CALCITE-1689]
+ Remove `PATTERN_DEFINE_AS` in SqlStdOperatorTable; `MATCH_RECOGNIZE` now uses
+ `AS` (Zhiqiang-He)
+* [CALCITE-1668]
+ Simplify `1 = 1` to `TRUE`, `1 > 2` to `FALSE` (Kevin Risden)
+* [CALCITE-1598]
+ Pig adapter (Eli Levine)
+* [CALCITE-1661]
+ Druid adapter: Support aggregation functions on `DECIMAL` columns
+* [CALCITE-1615]
+ Support `HOP` and `SESSION` functions in the `GROUP BY` clause
+ (Julian Hyde and Haohui Mai)
+* [CALCITE-1494]
+ More efficient plan for correlated sub-queries, omitting value-generating
+ scans where possible
+* [CALCITE-1638]
+ Simplify `$x = $x` to `$x is not null`
* [CALCITE-884]
File adapter (Henry Olson)
+ * [CALCITE-1704]
+ Execute queries on CSV files using simple `sqlline` command
+ * [CALCITE-1676]
+ Scan directory for .csv, .json and .gz files
* Allow multiple Calcite columns to be derived from one HTML column,
e.g. Location → Lat, Lon
* Improved pattern match: added `matchSeq` to allow selection of
nth match
* Add replace patterns to cell parsing logic
- * Add handling for tables without `<TH>` elements
- * Unit tests using local files; URL tests are contingent on network
- access
- * Ability to parse HTML from local files
- * Derived from CSV adapter
+ * Add handling for tables without `
` elements
+ * Unit tests using local files (URL tests are contingent on network
+ access)
+ * Ability to parse HTML, CSV and JSON from local files
+ * Combine the optiq-web
+ project with code from the
+ CSV adapter
+* [CALCITE-1652]
+ Allow `GROUPING` function to have multiple arguments, like `GROUPING_ID`
+* [CALCITE-1634]
+ Make `RelBuilder.distinct` no-op if input is already distinct; use it in
+ `RelDecorrelator`
+* [CALCITE-1635]
+ Add `MinRowCount` metadata
+* [CALCITE-1628]
+ Add an alternative match pattern for `SemiJoinRule`
+* [CALCITE-1618]
+ `SortProjectTransposeRule` should check for monotonicity preserving `CAST`
+* [CALCITE-1510]
+ In `INSERT`/`UPSERT` without an explicit target column list, allow fewer source
+ columns than table (Kevin Liew)
+ * Check for default value only when target field is null
+ (Rajeshbabu Chintaguntla)
+* [CALCITE-1603]
+ Support `TUMBLE` window function in the `GROUP BY` clause (Julian Hyde and
+ Haohui Mai)
+* [CALCITE-1606]
+ Add datetime scalar functions (Laurent Goujon)
+* [CALCITE-1604]
+ Add JDBC/ODBC scalar functions `DATABASE`, `IFNULL`, `USER` (Laurent Goujon)
+* [CALCITE-1549]
+ More helpful error message when schema, table or column not found
+* [CALCITE-420]
+ Add `REPLACE` function, callable with and without JDBC escape syntax (Riccardo
+ Tommasini)
+* [CALCITE-1557]
+ Add numeric scalar functions (Laurent Goujon)
+* [CALCITE-1258]
+ JDK9
+
+#### Bug-fixes, API changes and minor enhancements
+
+* [CALCITE-1716]
+ Fix Cassandra integration tests
+* [CALCITE-1715]
+ Downgrade to Guava 19.0 to fix Cassandra incompatibility
+* [CALCITE-1706]
+ Disable `DruidAggregateFilterTransposeRule`, because it causes fine-grained
+ aggregations to be pushed to Druid
+* [CALCITE-1695]
+ Add class `RexSimplify`, providing an explicit `RexExecutor` for methods to
+ simplify `RexNode`s
+* [CALCITE-1694]
+ Pig adapter: Use the shaded Avatica dependency instead
+* [CALCITE-1561]
+ Make `PigTest` cluster aware of data files; hopefully this will prevent
+ intermittent test failures (Eli Levine)
+* [CALCITE-1696]
+ Support `RexLocalRef` for `EXPLAIN PLAN AS JSON`
+* [CALCITE-1683]
+ Druid-specific rules to transpose `Filter` with other relations
+ (Nishant Bangarwa)
+* [CALCITE-1684]
+ Change default precision of `VARCHAR` and `VARBINARY` types from 1 to
+ "unspecified" (Kevin Liew)
+* [CALCITE-1691]
+ `ClassCastException` in `RelOptUtil.containsNullableFields`, attempting to
+ convert executor to `RexExecutorImpl`
+* [CALCITE-1688]
+ Infinite loop during materialization substitution if query contains `Union`,
+ `Minus` or `Intersect`
+* [CALCITE-1665]
+ `HAVING` support in `RelToSqlConverter` (Zhiqiang He)
+* [CALCITE-1673]
+ In CSV adapter, query with `ORDER BY` or `GROUP BY` on `TIMESTAMP` column
+ throws CompileException (Gangadhar Kairi)
+* [CALCITE-1674]
+ `LIKE` does not match value that contains newline (Mark Payne)
+* [CALCITE-1675]
+ Two-level column name cannot be resolved in `ORDER BY`
+* [CALCITE-1667]
+ Forbid calls to JDK APIs that use the default locale, time zone or character
+ set
+* [CALCITE-1656]
+ Improve cost function in `DruidQuery` to encourage early column pruning
+ (Nishant Bangarwa)
+* [CALCITE-1664]
+ `CAST('' as TIMESTAMP)` wrongly adds part of sub-second fraction to the
+ value
+* [CALCITE-1659]
+ Simplifying `CAST('YYYY-MM-DD hh:mm:ss.SSS' as TIMESTAMP)` should round the
+ sub-second fraction (Remus Rusanu)
+* [CALCITE-1439]
+ Handle errors during constant reduction
+* [CALCITE-1653]
+ Pass an expression executor to `RexUtil.simplify` for constant reduction (Remus
+ Rusanu)
+* [CALCITE-1601]
+ `DateRangeRules` loses OR filters
+* [CALCITE-1637]
+ Add mutable equivalents for all relational expressions (e.g. `MutableFilter`)
+* [CALCITE-1621]
+ Add a cast around the NULL literal in aggregate rules (Anton Mushin)
+ * Add `RexBuilder.makeNullLiteral(RelDataType)`
+* [CALCITE-1649]
+ Data type mismatch in `EnumerableMergeJoin`
+* [CALCITE-1636]
+ JDBC adapter generates wrong SQL for self join with sub-query (Zhiqiang-He)
+* [CALCITE-1633]
+ In plans, output `Correlate.joinType` attribute in lower-case, same as
+ `Join.joinType`
+* [CALCITE-1632]
+ Return type of "datetime + interval" expression
+* [CALCITE-365]
+ `AssertionError` while translating query with `WITH` and correlated sub-query
+* [CALCITE-1623]
+ Make sure `DATE`, `TIME` and `TIMESTAMP` literals have `Calendar` with GMT
+ timezone
+* [CALCITE-1619]
+ `CAST` is ignored by rules pushing operators into `DruidQuery`
+* [CALCITE-1617]
+ Druid adapter: Send timestamp literals to Druid as local time, not UTC
+* [CALCITE-1500]
+ Decouple materialization and lattice substitution from `VolcanoPlanner`
+* [CALCITE-1589]
+ Druid adapter: `timeseries` query shows all days, even if no data
+* [CALCITE-1572]
+ `JdbcSchema` throws exception when detecting nullable columns (Wu Xiang)
+* [CALCITE-1610]
+ `RelBuilder` sort-combining optimization treats aliases incorrectly (Jess
+ Balint)
+* [CALCITE-1595]
+ `RelBuilder.call` throws `NullPointerException` if argument types are invalid
+ (Jess Balint)
+* [CALCITE-1602]
+ Remove uses of deprecated APIs
+* [CALCITE-1569]
+ Code generation for fields of type `java.sql.Date` (Zhen Wang)
+* [CALCITE-1582]
+ `RelToSqlConverter` doesn't handle cartesian join (Jess Balint)
+* [CALCITE-1597]
+ Obsolete `Util.newInternal`, `.pre`, `.post`, `.permAssert` and
+ `Throwables.propagate`
+* [CALCITE-1586]
+ JDBC adapter generates wrong SQL if `UNION` has more than two inputs (Zhiqiang
+ He)
+* [CALCITE-1535]
+ Give error if column referenced in `ORDER BY` is ambiguous (Zhen Wang)
+* [CALCITE-1594]
+ `ConventionTraitDef.getConversionData()` is not thread-safe
+* [CALCITE-1577]
+ Druid adapter: Incorrect result - limit on timestamp disappears
+* [CALCITE-1587]
+ Druid adapter: `topN` query returns approximate results
+* [CALCITE-1578]
+ Druid adapter: wrong semantics of `topN` query limit with granularity
+* Druid adapter: Add `enum Granularity`
+* [CALCITE-1592]
+ `SqlToRelConverter` throws `UnsupportedOperationException` if query has
+ `NOT ... NOT IN`
+* [CALCITE-1590]
+ Support Guava version 21.0
+* [CALCITE-1575]
+ Literals may lose precision during expression reduction
+* [CALCITE-1546]
+ Wrong plan for `NOT IN` sub-queries with disjunction
+* [CALCITE-1574]
+ Memory leak in maven
+* [CALCITE-1571]
+ Could not resolve view with `SimpleCalciteSchema`
+* [CALCITE-1558]
+ `AggregateExpandDistinctAggregatesRule` gets field mapping wrong if group key
+ is used in aggregate function (Zhenghua Gao)
+* [CALCITE-1562]
+ Update jsr305 from 1.3.9 to 3.0.1
+* [CALCITE-1563]
+ In case-insensitive connection, non-existent tables use alphabetically
+ preceding table
+* [CALCITE-1544]
+ `AggregateJoinTransposeRule` fails to preserve row type (Kurt Young)
+* [CALCITE-1543]
+ Correlated scalar sub-query with multiple aggregates gives `AssertionError`
+ (Kurt Young)
+
+#### Web site and documentation
+
+* Maryann Xue joins PMC
+* Add 3 new committers (Gian Merlino, Jess Balint, Laurent Goujon)
+* [CALCITE-1657]
+ Release Calcite 1.12.0
+* [CALCITE-1677]
+ Replace duplicate avatica docs with a redirect
+* [CALCITE-1685]
+ Site: `defaultNullCollation` key listed as `materializationsEnabled`
+ (Kevin Liew)
+* Add MapD to Powered by
+ Calcite page (Todd Mostak)
+* Diagram of logos of projects and products powered by Calcite
+* [CALCITE-1622]
+ Bugs in website example code (Damjan Jovanovic)
## 1.11.0 / 2017-01-09
{: #v1-11-0}
diff --git a/site/_docs/howto.md b/site/_docs/howto.md
index 5a89cc466d2..9ab75ef42ef 100644
--- a/site/_docs/howto.md
+++ b/site/_docs/howto.md
@@ -39,8 +39,8 @@ Unpack the source distribution `.tar.gz` or `.zip` file,
then build using maven:
{% highlight bash %}
-$ tar xvfz calcite-1.11.0-source.tar.gz
-$ cd calcite-1.11.0
+$ tar xvfz calcite-1.12.0-source.tar.gz
+$ cd calcite-1.12.0
$ mvn install
{% endhighlight %}
@@ -404,7 +404,7 @@ the `KEYS` file.
Before you start:
* Set up signing keys as described above.
-* Make sure you are using JDK 1.7 (not 1.8).
+* Make sure you are using JDK 1.8 (not 1.6 or 9).
* Make sure build and tests succeed with `-Dcalcite.test.db=hsqldb` (the default)
{% highlight bash %}
|