[CALCITE-1612] Release Avatica 1.10

Add release notes.

Fix assembly descriptor and configuration, following upgrade of
maven-assembly-plugin to 3.0.

Update release instructions. We now require JDK 8 for release builds,
because docker-maven-plugin requires Files.readAllLines.
diff --git a/README b/README
index 451e39f..30fb4e5 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-Apache Calcite Avatica release 1.9.0
+Apache Calcite Avatica release 1.10.0
 
 This is a source or binary distribution of Avatica, a framework for
 building database drivers. Avatica is a sub-project of Apache Calcite.
diff --git a/core/src/main/protobuf/requests.proto b/core/src/main/protobuf/requests.proto
index 1e2c334..07b40cc 100644
--- a/core/src/main/protobuf/requests.proto
+++ b/core/src/main/protobuf/requests.proto
@@ -166,4 +166,4 @@
   string connection_id = 1;
   uint32 statement_id = 2;
   repeated UpdateBatch updates = 3; // A batch of updates is a list<list<typevalue>>
-}
\ No newline at end of file
+}
diff --git a/pom.xml b/pom.xml
index 4a0ab3e..e99c13f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,7 +54,7 @@
     <top.dir>${project.basedir}</top.dir>
     <avatica.release.version>${project.version}</avatica.release.version>
     <version.major>1</version.major>
-    <version.minor>9</version.minor>
+    <version.minor>10</version.minor>
     <!-- This list is in alphabetical order. -->
     <bouncycastle.version>1.55</bouncycastle.version>
     <build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
@@ -675,7 +675,7 @@
                 <phase>none</phase>
               </execution>
               <execution>
-                <id>source-release-assembly-calcite</id>
+                <id>source-release-assembly-avatica</id>
                 <phase>package</phase>
                 <goals>
                   <goal>single</goal>
@@ -683,7 +683,9 @@
                 <configuration>
                   <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
                   <appendAssemblyId>false</appendAssemblyId>
-                  <descriptor>${top.dir}/src/main/config/assemblies/source-assembly.xml</descriptor>
+                  <descriptors>
+                    <descriptor>${top.dir}/src/main/config/assemblies/source-assembly.xml</descriptor>
+                  </descriptors>
                   <finalName>apache-calcite-avatica-${project.version}-src</finalName>
                   <tarLongFileMode>gnu</tarLongFileMode>
                 </configuration>
diff --git a/server/src/test/resources/log4j.properties b/server/src/test/resources/log4j.properties
index 662858e..084cc44 100644
--- a/server/src/test/resources/log4j.properties
+++ b/server/src/test/resources/log4j.properties
@@ -25,4 +25,4 @@
 
 # Debug for JGSS and Jetty's security (Kerberos/SPNEGO debugging)
 #log4j.logger.sun.security.jgss=DEBUG
-#log4j.logger.org.eclipse.jetty.security=DEBUG
\ No newline at end of file
+#log4j.logger.org.eclipse.jetty.security=DEBUG
diff --git a/site/_docs/history.md b/site/_docs/history.md
index 58a1f9f..d73b48f 100644
--- a/site/_docs/history.md
+++ b/site/_docs/history.md
@@ -28,6 +28,96 @@
 Downloads are available on the
 [downloads page]({{ site.baseurl }}/downloads/).
 
+## <a href="https://github.com/apache/calcite-avatica/releases/tag/calcite-avatica-1.10.0">1.10.0</a> / 2017-05-30
+{: #v1-10-0}
+
+Apache Calcite Avatica 1.10.0 is the first release since
+[Avatica's git repository](https://git-wip-us.apache.org/repos/asf/calcite-avatica.git)
+separated from
+[Calcite's repository](https://git-wip-us.apache.org/repos/asf/calcite.git) in
+[[CALCITE-1717](https://issues.apache.org/jira/browse/CALCITE-1717)].
+Avatica now runs on JDK 9 (and continues to run on JDK 7 and 8),
+and there is now a Docker image for an Avatica server.
+You may now send and receive Array data via the JDBC API.
+Several improvements to date/time support in DateTimeUtils.
+
+Compatibility: This release is tested
+on Linux, macOS, Microsoft Windows;
+using Oracle JDK 7, 8, 9;
+Guava versions 14.0 to 19.0;
+other software versions as specified in `pom.xml`.
+
+Features and bug fixes
+
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1690">CALCITE-1690</a>]
+  Timestamp literals cannot express precision above millisecond
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1539">CALCITE-1539</a>]
+  Enable proxy access to Avatica server for third party on behalf of end users
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1756">CALCITE-1756</a>]
+  Differentiate between implicitly null and explicitly null `TypedValue`s
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1050">CALCITE-1050</a>]
+  Array support for Avatica
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1746">CALCITE-1746</a>]
+  Remove `KEYS` file from git and from release tarball
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1353">CALCITE-1353</a>]
+  Convert `first_frame_max_size` to an `int32`
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1744">CALCITE-1744</a>]
+  Clean up the Avatica poms
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1741">CALCITE-1741</a>]
+  Upgrade `maven-assembly-plugin` to version 3.0.0
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1364">CALCITE-1364</a>]
+  Docker images for an Avatica server
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1717">CALCITE-1717</a>]
+  Remove Calcite code and lift Avatica
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1700">CALCITE-1700</a>]
+  De-couple the `HsqldbServer` into a generic JDBC server
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1699">CALCITE-1699</a>]
+  Statement may be null
+* [<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
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1664">CALCITE-1664</a>]
+  `CAST('<string>' as TIMESTAMP)` wrongly adds part of sub-second fraction to the
+  value
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1654">CALCITE-1654</a>]
+  Avoid generating a string from the Request/Response when it will not be logged
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1609">CALCITE-1609</a>]
+  In `DateTimeUtils`, implement `unixDateExtract` and `unixTimeExtract` for more
+  time units
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1608">CALCITE-1608</a>]
+  Move `addMonths` and `subtractMonths` methods from Calcite class `SqlFunctions`
+  to Avatica class `DateTimeUtils`
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1600">CALCITE-1600</a>]
+  In `Meta.Frame.create()`, change type of `offset` parameter from `int` to `long`
+  (Gian Merlino)
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1602">CALCITE-1602</a>]
+  Remove uses of deprecated APIs
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1599">CALCITE-1599</a>]
+  Remove unused `createIterable` call in `LocalService` (Gian Merlino)
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1576">CALCITE-1576</a>]
+  Use the `protobuf-maven-plugin`
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1567">CALCITE-1567</a>]
+  JDK9 support
+* Remove non-ASCII characters from Java source files
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1538">CALCITE-1538</a>]
+  Support `truststore` and `truststore_password` JDBC options
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1485">CALCITE-1485</a>]
+  Upgrade Avatica's Apache parent POM to version 18
+
+Tests
+
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1752">CALCITE-1752</a>]
+  Use `URLDecoder` instead of manually replacing "%20" in URLs
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1736">CALCITE-1736</a>]
+  Address test failures when the path contains spaces
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1568">CALCITE-1568</a>]
+  Upgrade `mockito` to 2.5.5
+
+Web site and documentation
+
+* [<a href="https://issues.apache.org/jira/browse/CALCITE-1743">CALCITE-1743</a>]
+  Add instructions to release docs to move git tag from `rcN` to `rel/`
+
 ## <a href="https://github.com/apache/calcite-avatica/releases/tag/calcite-avatica-1.9.0">1.9.0</a> / 2016-11-01
 {: #v1-9-0}
 
diff --git a/site/_docs/howto.md b/site/_docs/howto.md
index 8ffcc66..a7ad380 100644
--- a/site/_docs/howto.md
+++ b/site/_docs/howto.md
@@ -38,8 +38,8 @@
 then build using maven:
 
 {% highlight bash %}
-$ tar xvfz apache-calcite-avatica-1.9.0-src.tar.gz
-$ cd apache-calcite-avatica-1.9.0-src
+$ tar xvfz apache-calcite-avatica-1.10.0-src.tar.gz
+$ cd apache-calcite-avatica-1.10.0-src
 $ mvn install
 {% endhighlight %}
 
@@ -174,7 +174,7 @@
 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 8 (not 7 or 9).
 
 {% highlight bash %}
 # Make sure that there are no junk files in the sandbox
@@ -190,13 +190,10 @@
 Before you start:
 
 * Set up signing keys as described above.
-* Make sure you are using JDK 1.7 (not 1.8).
-* Check that `README` and `site/_docs/howto.md` have the correct version number.
+* Make sure you are using JDK 8 (not 7 or 9).
+* Check that `README`, `site/_docs/howto.md`
+  and `docker/src/main/dockerhub/Dockerfile` have the correct version number.
 * Set `version.major` and `version.minor` in `pom.xml`.
-* Trigger a
-  <a href="https://scan.coverity.com/projects/2966">Coverity scan</a>
-  by merging the latest code into the `julianhyde/coverity_scan` branch,
-  and when it completes, make sure that there are no important issues.
 * Make sure that
   <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20CALCITE%20AND%20status%20%3D%20Resolved%20and%20fixVersion%20is%20null">
   every "resolved" JIRA case</a> (including duplicates) has
@@ -230,8 +227,21 @@
 # Make sure that there are no junk files in the sandbox
 git clean -xn
 
+# For the dry run, edit the docker/dockerhub/Dockerfile
+patch -p1 <<EOF
+diff --git a/docker/src/main/dockerhub/Dockerfile b/docker/src/main/dockerhub/Dockerfile
+index 4617a4e..4ccd97f 100644
+--- a/docker/src/main/dockerhub/Dockerfile
++++ b/docker/src/main/dockerhub/Dockerfile
+@@ -23,3 +23,3 @@ RUN mkdir -p /home/avatica/classpath
+# This line must be preserved. The Maven build will verify this version matches its version
+-ARG AVATICA_VERSION="1.10.0"
++ARG AVATICA_VERSION="1.10.0-SNAPSHOT"
+EOF
+
 # Do a dry run of the release:prepare step, which sets version numbers.
-mvn -DdryRun=true -DreleaseVersion=X.Y.Z -DdevelopmentVersion=X.Y.Z+1-SNAPSHOT -Dtag=calcite-avatica-X.Y.Z-rcN -Papache-release -Duser.name=${asf.username} release:prepare
+# Typically we increment minor version: If X.Y.Z is 1.10.0, X2.Y2.Z2 is 1.11.0.
+mvn -DdryRun=true -DreleaseVersion=X.Y.Z -DdevelopmentVersion=X2.Y2.Z2-SNAPSHOT -Dtag=avatica-X.Y.Z-rcN -Papache-release -Duser.name=${asf.username} release:prepare
 {% endhighlight %}
 
 Check the artifacts:
@@ -253,7 +263,9 @@
   `README`, `README.md`
   * Check that the version in `README` is correct
 * Make sure that there is no `KEYS` file in the source distros
-* For each .jar, verify that the `META-INF` directory contains the correct
+* For each .jar (for example `core/target/avatica-core-X.Y.Z.jar`
+  and `server/target/avatica-server-X.Y.Z-sources.jar`),
+  verify that the `META-INF` directory contains the correct
   contents for `DEPENDENCIES`, `LICENSE` and `NOTICE` per the
   source/classes contained. Refer to the ASF licensing documentation on
   what is required.
@@ -270,7 +282,8 @@
 
 {% highlight bash %}
 # Prepare sets the version numbers, creates a tag, and pushes it to git.
-mvn -DreleaseVersion=X.Y.Z -DdevelopmentVersion=X.Y.Z+1-SNAPSHOT -Dtag=avatica-X.Y.Z-rc0 -Papache-release -Duser.name=${asf.username} release:prepare
+# Typically we increment minor version: If X.Y.Z is 1.10.0, X2.Y2.Z2 is 1.11.0.
+mvn -DreleaseVersion=X.Y.Z -DdevelopmentVersion=X2.Y2.Z2-SNAPSHOT -Dtag=avatica-X.Y.Z-rcN -Papache-release -Duser.name=${asf.username} release:prepare
 
 # Perform checks out the tagged version, builds, and deploys to the staging repository
 mvn -Papache-release -Duser.name=${asf.username} release:perform -Darguments="-DskipTests"
@@ -297,6 +310,13 @@
 svn co https://dist.apache.org/repos/dist/dev/calcite
 popd
 
+# Replace digest files with a single digest
+cd target
+for f in *.tar.gz *.zip; do
+  rm ${f}.md5 ${f}.sha1
+  gpg --print-mds ${f} > ${f}.mds
+done
+
 # Move the files into a directory
 cd target
 mkdir ~/dist/dev/calcite/apache-calcite-avatica-X.Y.Z-rcN
diff --git a/src/main/config/assemblies/source-assembly.xml b/src/main/config/assemblies/source-assembly.xml
index 2b1f930..5f3fd75 100644
--- a/src/main/config/assemblies/source-assembly.xml
+++ b/src/main/config/assemblies/source-assembly.xml
@@ -25,7 +25,7 @@
     <!-- main project directory structure -->
     <fileSet>
       <directory>.</directory>
-      <outputDirectory>/</outputDirectory>
+      <outputDirectory/>
       <useDefaultExcludes>true</useDefaultExcludes>
       <excludes>
         <!-- build output -->
@@ -90,14 +90,14 @@
     <fileSet>
       <directory>${project.build.directory}/maven-shared-archive-resources/META-INF
       </directory>
-      <outputDirectory>/</outputDirectory>
+      <outputDirectory/>
     </fileSet>
     <fileSet>
       <directory>${project.build.directory}</directory>
       <includes>
         <include>git.properties</include>
       </includes>
-      <outputDirectory>/</outputDirectory>
+      <outputDirectory/>
     </fileSet>
   </fileSets>
 </assembly>
diff --git a/tck/src/main/resources/log4j.properties b/tck/src/main/resources/log4j.properties
index 68a9cc2..314297a 100644
--- a/tck/src/main/resources/log4j.properties
+++ b/tck/src/main/resources/log4j.properties
@@ -21,4 +21,4 @@
 
 # Set the pattern for each log message
 log4j.appender.A1.layout=org.apache.calcite.avatica.tck.shaded.org.apache.log4j.PatternLayout
-log4j.appender.A1.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c{2} - %m%n
\ No newline at end of file
+log4j.appender.A1.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c{2} - %m%n