***************************************************************************
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
***************************************************************************

Release Notes - Apache MRQL 0.9.4-incubating
--------------------------------------------

New Features

[MRQL-45] Add support for Apache Flink
[MRQL-49] Add Flink support info on the project web site
[MRQL-63] Add support for MRQL streaming in spark streaming mode

Bugs

[MRQL-41] Post-release improvements
[MRQL-42] Fix bug in XML projections
[MRQL-44] Fix the map-reduce join for a complex reducer on map-reduce mode
[MRQL-46] MRQL does not build with Java 8
[MRQL-47] Fix various bugs for the Flink evaluation mode
[MRQL-48] Fix global variable bindings in Spark and Flink modes
[MRQL-50] Fix result dumping to a text file in Flink mode
[MRQL-51] Support for Spark 1.1.0
[MRQL-52] Fix Flink evaluation mode to pass all Junit tests
[MRQL-53] Fix processing of directories of text files in MapReduce mode
[MRQL-58] Fix config file and shell run scripts to support multiple HDFS users
[MRQL-60] Fix building dependencies for hadoop 1.x
[MRQL-61] Fix bug on select over union queries
[MRQL-62] Fix Map-Reduce mode on MultipleInput sources

Improvements

[MRQL-43] Add support for tracing
[MRQL-54] Adjust the split size of a map-reduce input file based on the number of requested nodes
[MRQL-55] Add support for Hadoop Sequence input format in flink mode
[MRQL-56] Improve total aggregations and repetitions with shared results in Flink mode
[MRQL-57] Make floating-point literals to be double instead of float

Tasks

[MRQL-64] Prepare for 0.9.4 release


Release Notes - Apache MRQL 0.9.2-incubating
--------------------------------------------

New Features

[MRQL-23] Add support for Yarn
[MRQL-29] Support for Spark 0.9.0

Bugs

[MRQL-22] The compiler must load the hadoop core lib before compilation
[MRQL-28] Fixed dumping of HDFS sequence file in Spark mode
[MRQL-31] Broken hyperlink in website
[MRQL-33] Fix various bugs in iteration queries
[MRQL-36] Fix evaluation errors during Junit testing
[MRQL-40] Fix 0.9.2-RC1 and prepare for release

Improvements

[MRQL-21] Modify shell scripts to work on Mac OS
[MRQL-24] Improve Serializable methods for Spark
[MRQL-25] Changed Translator/Evaluator interface to improve Spark efficiency
[MRQL-26] Support for Spark 0.8.1
[MRQL-27] Improve the build process and support hadoop 0.20.x
[MRQL-30] Improved run scripts and support for Spark on YARN
[MRQL-32] Refactoring directory structure for Eclipse
[MRQL-34] Introduce junit for testing
[MRQL-37] Support installation on a Cloudera CDH distribution
[MRQL-38] Support for Spark 1.0.0

Tasks

[MRQL-39] Prepare for 0.9.2 release


Release Notes - Apache MRQL 0.9.0-incubating
--------------------------------------------

New Features

[MRQL-1] New MRQL website
[MRQL-4] Create a testbed for MRQL queries using JUnit

Bugs

[MRQL-2] Mavenize MRQL
[MRQL-5] JSON parser has a null scanner
[MRQL-7] Refactor directory layout to be more Maven compliant
[MRQL-9] Make BSP mode compatible with Hama 0.7.0
[MRQL-10] Add dist module to generate release tarball

Improvements

[MRQL-3] some trivial code improvements
[MRQL-6] Add developers guide to the website
[MRQL-8] Overload projections to work on JSON data
[MRQL-12] Support query evaluation in Spark mode

Tasks

[MRQL-11] Establish whether "Apache MRQL" is a suitable name
[MRQL-13] Umbrella task for first Apache MRQL release
[MRQL-14] Add the "-SNAPSHOT" suffix
[MRQL-15] Setup svnpubsub for the MRQL dist directory
[MRQL-16] correct source files. ASF licenses, and POMs for release
[MRQL-17] Update the MRQL status page
[MRQL-18] correct NOTICE, DISCLAIMER, xdoc
[MRQL-19] Fix license issues to prepare a new release candidate
[MRQL-20] Fix maven problems to prepare a new release candidate
