Add class XmlOutput (based on org.eigenbase.xom.XMLOutput) and remove dependency on eigenbase-xom.
Update history.
Fix https://github.com/julianhyde/optiq/issues/209, "Consistent strategy for line-endings in tests".

"Expected" strings in tests should now use Linux line-endings ("\n"). The code that generates "actual" strings should call Util.toLinux if necessary.

Also, deprecate RelDataTypeFactory.createStructType(RelDataType[], String[]).
Fix https://github.com/julianhyde/optiq/issues/200, "Javadoc generation fails under JDK 1.8".

This change fixes a lot of HTML validation issues, and "mvn site" now succeeds under all JDK versions.

"mvn javadoc:javadoc" still has a few errors, because it doesn't use the configuration under "reports" in the POM (it looks for configuration under "build" instead); that is OK.
Add a way to pass a custom parser implementation to Planner.
Oops! Remove bad assert.
Fix https://github.com/julianhyde/optiq/issues/180, "Common base class for TableFunction, ScalarFunction".

Add interface Function, which becomes base class of TableMacro (previously TableFunction) and ScalarFunction; rename Parameter to FunctionParameter; rename Schema methods getTableFunctions to getFunctions, and getTableFunctionNames to getFunctionNames; rename TableFunctionEntry to FunctionEntry.
Fix https://github.com/julianhyde/optiq/issues/215, "A Schema should not have to remember its name and parent".

Remove getName() and getParentSchema() methods from Schema; keep them in SchemaPlus; add name field to OptiqSchema.

Obsolete MapSchema.
Fix https://github.com/julianhyde/optiq/issues/216, "Inconsistent use of provided operator table causes inability to add aggregate functions".

Now you can specify via the Frameworks.getPlanner interface a SqlOperatorTable that contains a user-defined aggregate function, and the query will validate appropriately.

Added a test case for https://github.com/julianhyde/optiq/issues/217, "Validator should reject non-aggregate expressions in SELECT clause with aggregates".
Add tests that a query with aggregate expressions in the SELECT clause is considered an aggregate query, even if there is no GROUP BY.

Turns out that validator already did the right thing per https://github.com/julianhyde/optiq/issues/217.
Fix https://github.com/julianhyde/optiq/issues/218, "Functions case sensitive when using Lex.MYSQL".

Names of built-in functions are now matched case-insensitively even if unquotedCasing=UNCHANGED and caseSensitive=true, and even if they are built-ins with no parameters, such as CURRENT_TIME.
Fix https://github.com/julianhyde/optiq/issues/219, "Parse 'ALTER scope SET option = value' statement".
Rename to SqlSetOption, make a subclass of SqlCall, and ensure value is always a SqlLiteral or SqlIdentifier.
Fix https://github.com/julianhyde/optiq/pull/198, "Use RexExecutor to evaluate projections and filters".
Tidy up.

Now, RexExecutorImpl.reduce uses RexExecutable (keeps janino complexity in one place).

Remove RexExecutable.rexBuilder field, and pass in when needed.
Fix https://github.com/julianhyde/optiq/issues/222, "User-defined table macros".
Convert uses of NL in tests to Linux newline "\n". This makes string constants simpler.
Fix https://github.com/julianhyde/optiq/issues/223, "Add NOTICE and LICENSE files in all generated JAR files".

Also fix filtering in net-hydromatic-optiq-jdbc.properties, and remove a spurious copy of that file.
Test view and sub-query with ORDER BY and LIMIT.
Fix https://github.com/julianhyde/optiq/pull/227, "Extend extract function to support DateTime data types".