***************************************************************************
 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.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

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
