<!DOCTYPE HTML>
<html lang="en-US">
<head>
  <meta charset="UTF-8">
  <title>News</title>
  <meta name="viewport" content="width=device-width,initial-scale=1">
  <meta name="generator" content="Jekyll v3.7.3">
  <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic,900">
  <link rel="stylesheet" href="/avatica/css/screen.css">
  <link rel="icon" type="image/x-icon" href="/avatica/favicon.ico">
  <!--[if lt IE 9]>
  <script src="/js/html5shiv.min.js"></script>
  <script src="/js/respond.min.js"></script>
  <![endif]-->
</head>


<body class="wrap">
  <header role="banner">
  <nav class="mobile-nav show-on-mobiles">
    <ul>
  <li class="">
    <a href="/avatica/">Home</a>
  </li>
  <li class="">
    <a href="/avatica/downloads/">Download</a>
  </li>
  <li class="">
    <a href="/avatica/community/">Community</a>
  </li>
  <li class="">
    <a href="/avatica/develop/">Develop</a>
  </li>
  <li class="current">
    <a href="/avatica/news/">News</a>
  </li>
  <li class="">
    <a href="/avatica/docs/">Docs</a>
  </li>
</ul>

  </nav>
  <div class="grid">
    <div class="unit one-third center-on-mobiles">
      <h1>
        <a href="/avatica/">
          <span class="sr-only">Apache Calcite Avatica</span>
          <img src="/avatica/img/logo.png" width="226" height="140" alt="Calcite Logo">
        </a>
      </h1>
    </div>
    <nav class="main-nav unit two-thirds hide-on-mobiles">
      <ul>
  <li class="">
    <a href="/avatica/">Home</a>
  </li>
  <li class="">
    <a href="/avatica/downloads/">Download</a>
  </li>
  <li class="">
    <a href="/avatica/community/">Community</a>
  </li>
  <li class="">
    <a href="/avatica/develop/">Develop</a>
  </li>
  <li class="current">
    <a href="/avatica/news/">News</a>
  </li>
  <li class="">
    <a href="/avatica/docs/">Docs</a>
  </li>
</ul>

    </nav>
  </div>
</header>


    <section class="news">
    <div class="grid">

      <div class="docs-nav-mobile unit whole show-on-mobiles">
  <select onchange="if (this.value) window.location.href=this.value">
    <option value="">Navigate the blog…</option>
    <option value="/avatica/news/">Home</option>
    <optgroup label="v1.x">
      
      <option value="/news/2019/05/16/release-avatica-go-4.0.0/">Release Avatica Go 4.0.0</option>
      
      <option value="/news/2019/05/13/release-1.15.0/">Release 1.15.0</option>
      
      <option value="/news/2019/04/29/release-1.14.0/">Release 1.14.0</option>
      
      <option value="/news/2018/12/04/release-1.13.0/">Release 1.13.0</option>
      
      <option value="/news/2018/09/18/release-avatica-go-3.2.0/">Release Avatica Go 3.2.0</option>
      
      <option value="/news/2018/09/10/release-avatica-go-3.1.0/">Release Avatica Go 3.1.0</option>
      
      <option value="/news/2018/06/24/release-1.12.0/">Release 1.12.0</option>
      
      <option value="/news/2018/04/27/release-avatica-go-3.0.0/">Release Avatica Go 3.0.0</option>
      
      <option value="/news/2018/03/09/release-1.11.0/">Release 1.11.0</option>
      
      <option value="/news/2017/05/30/release-1.10.0/">Release 1.10.0</option>
      
      <option value="/news/2017/03/31/new-avatica-repository/">New Avatica Repository</option>
      
      <option value="/news/2016/11/01/release-1.9.0/">Release 1.9.0</option>
      
      <option value="/news/2016/06/04/release-1.8.0/">Release 1.8.0</option>
      
      <option value="/news/2016/03/18/release-1.7.1/">Release 1.7.1</option>
      
      <option value="/news/2016/03/03/separate-project/">Splitting Avatica from Calcite</option>
      
    </optgroup>
  </select>
</div>


      <div class="unit four-fifths">
        <!--

-->


  
<article>
  <h2>
    <a href="/avatica/news/2019/05/16/release-avatica-go-4.0.0/">
      Release Avatica Go 4.0.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      16 May 2019
    </span>
    
    
    
    <a href="http://github.com/F21" class="post-author">
      <img src="http://github.com/F21.png"
           class="avatar" alt="francischuang avatar"
           width="24" height="24">
      francischuang
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite Avatica Go 4.0.0 is a major release with numerous improvements and a breaking change for Apache Phoenix.
As this a a new major version, users of this package will need to upgrade their import paths to 
<code class="highlighter-rouge">"github.com/apache/calcite-avatica-go/v4"</code>.</p>

<p><strong>Breaking change for Apache Phoenix (<a href="https://issues.apache.org/jira/browse/CALCITE-2724">CALCITE-2763</a>):</strong> 
In Apache Phoenix, null and empty strings are equivalent. For some background on why this is the case, see
<a href="https://issues.apache.org/jira/browse/PHOENIX-947">PHOENIX-947</a>. In version 3 of Avatica-Go and below, null and empty
strings are returned as an empty string <code class="highlighter-rouge">""</code> to the client. This prevented database/sql’s built in NullString type from
working correctly. From 4.0.0 onwards, null and empty strings will be returned as a <code class="highlighter-rouge">nil</code>. This allows the usage of the
<code class="highlighter-rouge">sql.NullString</code> type.</p>

<p>For this release, both <a href="https://github.com/golang/dep">dep</a> and Go modules are supported for package management. As 
Go modules will be turned on by default in Go 1.13.0 (estimated to be released in September/October 2019), it is highly
recommended that users of this package start migrating to using Go modules to ease the transition.</p>

<p>The Calcite team recommends users of this package to upgrade to this version, where practical, as the dependencies being
used by this package have also been upgraded.</p>

    
        
        <p>See the <a href="/avatica/docs/go_history.html#v4-0-0">release notes</a>;
            <a href="/avatica/downloads/avatica-go.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/avatica/news/2019/05/13/release-1.15.0/">
      Release 1.15.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      13 May 2019
    </span>
    
    
    
    <a href="http://github.com/F21" class="post-author">
      <img src="http://github.com/F21.png"
           class="avatar" alt="francischuang avatar"
           width="24" height="24">
      francischuang
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite Avatica 1.15.0 is a small release that fixes a regression causing
error messages to not be propagated to clients. There is also a minor update to the
docker release script to automate the upload of release artifacts and build promotion.
See the list of <a href="/avatica/docs/history.html#v1-14-0">bug fixes and new features</a>
for more information.</p>

<p>Consumers of Avatica are encouraged to skip the 1.14.0 release and upgrade directly to
1.15.0 due to the aforementioned regression.</p>

    
        
        <p>See the <a href="/avatica/docs/history.html#v1-15-0">release notes</a>;
            <a href="/avatica/downloads/avatica.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/avatica/news/2019/04/29/release-1.14.0/">
      Release 1.14.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      29 Apr 2019
    </span>
    
    
    
    <a href="http://github.com/F21" class="post-author">
      <img src="http://github.com/F21.png"
           class="avatar" alt="francischuang avatar"
           width="24" height="24">
      francischuang
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite Avatica 1.14.0 includes around 13
<a href="/avatica/docs/history.html#v1-14-0">bug fixes and new features</a>.</p>

<p>A number of dependencies were upgraded for this release, with Jetty being
a noteworthy upgrade due to the old version having a medium severity vulnerability.
Avatica users are encouraged to upgrade to 1.14.0 where practical.</p>

    
        
        <p>See the <a href="/avatica/docs/history.html#v1-14-0">release notes</a>;
            <a href="/avatica/downloads/avatica.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/avatica/news/2018/12/04/release-1.13.0/">
      Release 1.13.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      04 Dec 2018
    </span>
    
    
    
    <a href="http://github.com/F21" class="post-author">
      <img src="http://github.com/F21.png"
           class="avatar" alt="francischuang avatar"
           width="24" height="24">
      francischuang
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite Avatica 1.13.0 includes more than 30
<a href="/avatica/docs/history.html#v1-13-0">bug fixes and new features</a>.</p>

    
        
        <p>See the <a href="/avatica/docs/history.html#v1-13-0">release notes</a>;
            <a href="/avatica/downloads/avatica.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/avatica/news/2018/09/18/release-avatica-go-3.2.0/">
      Release Avatica Go 3.2.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      18 Sep 2018
    </span>
    
    
    
    <a href="http://github.com/F21" class="post-author">
      <img src="http://github.com/F21.png"
           class="avatar" alt="francischuang avatar"
           width="24" height="24">
      francischuang
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite Avatica Go 3.2.0 is a minor release of Avatica Go with fixes to the import paths after enabling
support for Go modules.</p>

<p>The 3.1.0 release contained a bug where packages within the library used the <code class="highlighter-rouge">"github.com/apache/calcite-avatica-go"</code>
import path rather than the <code class="highlighter-rouge">"github.com/apache/calcite-avatica-go/v3"</code> import path. This resulted in an issue where
2 versions of the library are being used at the same time, causing some programs to not build.</p>

<p><strong>The Calcite team recommends consumers of the Avatica Go library to not use the 3.1.0 release and ensure that the
3.2.0 release is being used.</strong></p>

    
        
        <p>See the <a href="/avatica/docs/go_history.html#v3-2-0">release notes</a>;
            <a href="/avatica/downloads/avatica-go.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/avatica/news/2018/09/10/release-avatica-go-3.1.0/">
      Release Avatica Go 3.1.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      10 Sep 2018
    </span>
    
    
    
    <a href="http://github.com/F21" class="post-author">
      <img src="http://github.com/F21.png"
           class="avatar" alt="francischuang avatar"
           width="24" height="24">
      francischuang
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite Avatica Go 3.1.0 is a minor release of the Avatica Go client to bring in support for Go modules.
This release includes updated dependencies, testing against more targets and <a href="/avatica/docs/go_history.html#v3-1-0">support for Go Modules</a>.</p>

<p>Go 1.11 along with Go modules support was released at the end of August 2018. Go modules will become the
official package management solution for Go projects. As the Go team currently supports both Go 1.11 and Go 1.10,
the Gopkg.toml and Gopkg.lock files are still available for those using dep for package management. We plan to
remove support for dep when Go 1.12 is released in early 2019, so we encourage users to upgrade to Go 1.11 and use
Go modules where possible.</p>

    
        
        <p>See the <a href="/avatica/docs/go_history.html#v3-1-0">release notes</a>;
            <a href="/avatica/downloads/avatica-go.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/avatica/news/2018/06/24/release-1.12.0/">
      Release 1.12.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      24 Jun 2018
    </span>
    
    
    
    <a href="http://github.com/F21" class="post-author">
      <img src="http://github.com/F21.png"
           class="avatar" alt="francischuang avatar"
           width="24" height="24">
      francischuang
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite Avatica 1.12.0 includes more than 20
<a href="/avatica/docs/history.html#v1-12-0">bug fixes and new features</a>.
ZIP archives will no longer be produced from this release onwards.</p>

    
        
        <p>See the <a href="/avatica/docs/history.html#v1-12-0">release notes</a>;
            <a href="/avatica/downloads/avatica.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/avatica/news/2018/04/27/release-avatica-go-3.0.0/">
      Release Avatica Go 3.0.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      27 Apr 2018
    </span>
    
    
    
    <a href="http://github.com/F21" class="post-author">
      <img src="http://github.com/F21.png"
           class="avatar" alt="francischuang avatar"
           width="24" height="24">
      francischuang
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite Avatica Go 3.0.0 is the first release of the Avatica <a href="https://golang.org/">Go</a>
<a href="https://golang.org/pkg/database/sql/">database/sql</a> driver since the code has been donated to the Apache Calcite
project. This release includes support for Avatica with the HSQLDB backend, updated dependencies and <a href="/avatica/docs/go_history.html#v3-0-0">bug fixes</a>.</p>

<p>There is a breaking change where the <code class="highlighter-rouge">Name()</code> method on the <code class="highlighter-rouge">ResponseError</code> error type has been changed to a property, <code class="highlighter-rouge">Name</code>.</p>

<p>Users of the current <code class="highlighter-rouge">Boostport/avatica</code> library are encouraged to update to this new version of <code class="highlighter-rouge">apache/calcite-avatica-go</code>
as further development will take place in the <code class="highlighter-rouge">apache/calcite-avatica-go</code> repository.</p>

<p>For most users, the updating is simply replacing the import path <code class="highlighter-rouge">_ github.com/Boostport/avatica</code> with <code class="highlighter-rouge">_ github.com/apache/calcite-avatica-go</code>.</p>

    
        
        <p>See the <a href="/avatica/docs/go_history.html#v3-0-0">release notes</a>;
            <a href="/avatica/downloads/avatica-go.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/avatica/news/2018/03/09/release-1.11.0/">
      Release 1.11.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      09 Mar 2018
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite Avatica 1.11.0 adds support for JDK 10 and drops
support for JDK 7. There are more than 20
<a href="/avatica/docs/history.html#v1-11-0">bug fixes and new features</a>.</p>

    
        
        <p>See the <a href="/avatica/docs/history.html#v1-11-0">release notes</a>;
            <a href="/avatica/downloads/avatica.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/avatica/news/2017/05/30/release-1.10.0/">
      Release 1.10.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      30 May 2017
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite Avatica 1.10.0 adds support for JDBC Array data,
Docker, and JDK 9.</p>

<p>From this release onwards, Docker images for Avatica Server are
published to <a href="https://hub.docker.com/r/apache/calcite-avatica">Docker Hub</a>.  These
make Avatica <a href="/avatica/docs/docker">easier than ever to run</a>.</p>

<p>As the Calcite and Avatica projects become
<a href="/avatica/news/2016/03/03/separate-project">more separate</a>,
it is the first release since Avatica’s git repository
<a href="/avatica/news/2017/03/31/new-avatica-repository">separated from Calcite’s repository</a>.</p>

<p>Avatica now runs on JDK 9 (and continues to run on JDK 7 and 8).</p>

<p>Clients may now send and receive Array data via the JDBC API.
There are improvements to date/time support in
<a href="/avatica/apidocs/org/apache/calcite/avatica/util/DateTimeUtils.html">DateTimeUtils</a>,
and over 20 <a href="/avatica/docs/history.html#v1-10-0">other new features and bug fixes</a>.</p>

    
        
        <p>See the <a href="/avatica/docs/history.html#v1-10-0">release notes</a>;
            <a href="/avatica/downloads/avatica.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/avatica/news/2017/03/31/new-avatica-repository/">
      New Avatica Repository
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      milestones
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      31 Mar 2017
    </span>
    
    
    
    <a href="http://github.com/joshelser" class="post-author">
      <img src="http://github.com/joshelser.png"
           class="avatar" alt="elserj avatar"
           width="24" height="24">
      elserj
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Roughly one year after Avatica’s Maven build was separated from Calcite’s (as
described in this <a href="/avatica/news/2016/03/03/separate-project/">previous post</a>),
Avatica now has its own Git repository.</p>

<p>The Apache Calcite PMC felt like it was a good time to lift the Avatica project
out of the Calcite repository, given the continue maturation of Avatica. For developers
and contributors to Avatica, nothing will functionally change, except for the location
of the code itself.</p>

<p>The de-facto repository can be found at the ASF’s <a href="https://gitbox.apache.org/repos/asf/calcite-avatica.git">Git hosting</a>,
with a mirrored-copy also available on Github at <a href="https://github.com/apache/calcite-avatica">apache/calcite-avatica</a>.</p>

    
  </div>
</article>


  
<article>
  <h2>
    <a href="/avatica/news/2016/11/01/release-1.9.0/">
      Release 1.9.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      01 Nov 2016
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite Avatica 1.9.0 includes various improvements to make it
more robust and secure, while maintaining API and protocol
compatibility with previous versions.</p>

<p>We now <a href="https://issues.apache.org/jira/browse/CALCITE-1224">include non-shaded and shaded artifacts</a>,
to make it easier to embed Avatica in your application.</p>

<p>There are improvements to the JDBC API, adding support for
<a href="https://issues.apache.org/jira/browse/CALCITE-1301">canceling statements</a>,
and improving
<a href="https://issues.apache.org/jira/browse/CALCITE-1408">type conversions</a>
and
<a href="https://issues.apache.org/jira/browse/CALCITE-1410">metadata</a>.</p>

<p>The transport is upgraded to use
<a href="https://issues.apache.org/jira/browse/CALCITE-1355">protobuf-3.1.0</a>
(previously 3.0 beta); we have also
<a href="https://issues.apache.org/jira/browse/CALCITE-1464">upgraded Jetty</a>.</p>

    
        
        <p>See the <a href="/avatica/docs/history.html#v1-9-0">release notes</a>;
            <a href="/avatica/downloads/avatica.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/avatica/news/2016/06/04/release-1.8.0/">
      Release 1.8.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      04 Jun 2016
    </span>
    
    
    
    <a href="http://github.com/joshelser" class="post-author">
      <img src="http://github.com/joshelser.png"
           class="avatar" alt="elserj avatar"
           width="24" height="24">
      elserj
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite Avatica 1.8.0 continues the focus on compatibility with previous
versions while also adding support for authentication between Avatica client and server.
Performance, notably on the write-path, is also major area of improvement
in this release, increasing as much as two to three times over previous versions
with the addition of new API support. The documentation for both users and developers
continues to receive improvements.</p>

<p>Authentication is a major theme of this release, providing multiple layers of
additional authentication mechanisms over previous versions. In these earlier
versions, the only authentication provided by Avatica was achieved via the JDBC URL’s
standard user and password options. These have always been passed directly into
the backend database’s authentication system, but not all databases provide username
and password based authentication systems. <a href="https://issues.apache.org/jira/browse/CALCITE-1173">CALCITE-1173</a>
adds Avatica-level authentication over <a href="https://en.wikipedia.org/wiki/Basic_access_authentication">HTTP Basic</a>
and <a href="https://en.wikipedia.org/wiki/Digest_access_authentication">HTTP Digest</a>
authentication mechanisms. These are provided specifically for the case when
Avatica is used with a database that <em>does not already</em> provide its own authentication
implementation.</p>

<p>Some systems rely on <a href="http://web.mit.edu/kerberos/">Kerberos</a> for strong, centrally-
managed authentication. <a href="https://issues.apache.org/jira/browse/CALCITE-1159">CALCITE-1159</a>
introduces Kerberos-based authentication for clients via <a href="https://en.wikipedia.org/wiki/SPNEGO">SPNEGO</a>.
The Avatica server can be configured to only allow clients with a valid Kerberos ticket,
optionally, also passing this information to the backend database to implement
basic “impersonation” (where the Avatica server issues requests on behalf of the end user).</p>

<p>Building on top of the work done in Avatica-1.7.0 in <a href="https://issues.apache.org/jira/browse/CALCITE-1091">CALCITE-1091</a>,
this release also contains <a href="https://issues.apache.org/jira/browse/CALCITE-1128">CALCITE-1128</a> which
implements the batch-oriented JDBC APIs on <code class="highlighter-rouge">Statement</code>. Through careful inspection, it
was observed that the overall performance of Avatica clients in 100% write workloads was
dominated by the cost of the HTTP calls. By leveraging the <code class="highlighter-rouge">Statement#addBatch()</code>
and <code class="highlighter-rouge">Statement#executeBatch()</code> API calls, clients can efficiently batch multiple updates
in a single HTTP call. In testing this over the previous single HTTP call per update with
<a href="https://phoenix.apache.org">Apache Phoenix</a>, it was observed that performance increased by
two to three times, bringing Avatica’s performance on par with the Phoenix “native” driver.</p>

<p>Returning back to compatibility, a new component appears in this release which is designed to
test versions of Avatica against each other. <a href="https://issues.apache.org/jira/browse/CALCITE-1190">CALCITE-1190</a>
introduces a “Technology Compatibility Kit” (TCK) which automates the testing of one version
of Avatica against other versions. To further ease this testing, a runnable JAR to launch
an HSQLDB instance and an Avatica server also makes it debut with these changes. This TCK
makes it much easier to run tests of newer clients against older servers and vice versa.
Validating the backwards compatibility that is being built is extremely important to be
confident in the guarantees being provided to users.</p>

<p>Finally, a number of bugs are also fixed in the Protocol Buffer wire API. Some of these
include <a href="https://issues.apache.org/jira/browse/CALCITE-1113">CALCITE-1113</a> and
<a href="https://issues.apache.org/jira/browse/CALCITE-1103">CALCITE-1103</a> which fix how certain
numbers are serialized, <a href="https://issues.apache.org/jira/browse/CALCITE-1243">CALITE-1243</a>
which corrects some fields in Protocol Buffer messages which were incorrectly marked
as unsigned integers instead of signed integers, and <a href="https://issues.apache.org/jira/browse/CALCITE-1209">CALCITE-1209</a>
which removes incorrect parsing of binary fields as Base64-encoded strings. All of
these issues are fixed in a backwards-compatible manner and should have no additional negative
impact on older clients (older clients will not break, but they may continue to return
incorrect data for certain numbers).</p>

<p>For users of the Avatica driver, a new <a href="/avatica/docs/client_reference.html">client reference page</a>
is added which details the options that are available in the Avatica JDBC Driver’s URL.
The wire API documentation for Protocol Buffers continues to receive updates as the API continues to evolve.</p>

    
        
        <p>See the <a href="/avatica/docs/history.html#v1-8-0">release notes</a>;
            <a href="/avatica/downloads/avatica.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/avatica/news/2016/03/18/release-1.7.1/">
      Release 1.7.1
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      18 Mar 2016
    </span>
    
    
    
    <a href="http://github.com/joshelser" class="post-author">
      <img src="http://github.com/joshelser.png"
           class="avatar" alt="elserj avatar"
           width="24" height="24">
      elserj
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite’s PMC has just released Avatica 1.7.1, the first
release of <a href="http://calcite.apache.org/avatica/">Avatica</a> as an
independent project. We’re excited because it makes Avatica easier to
use, and allows us to be more agile in our release schedule.</p>

<p>(Avatica was previously released as part of Calcite. Avatica is still
governed by Apache Calcite’s PMC, and stored in the same git
repository as Calcite, but releases are no longer synchronized, and
Avatica does not depend on any Calcite modules.)</p>

<p>A significant portion of the work of this release was “Maven work” to
separate the build and release processes, but there were several
important bug fixes, including a security fix for Jetty (see below).</p>

<p>Performance, specifically on the write path, was a big focus in this
release.
[<a href="https://issues.apache.org/jira/browse/CALCITE-1091">CALCITE-1091</a>]
contained a number of important changes. Some of these changes (e.g.
[<a href="https://issues.apache.org/jira/browse/CALCITE-1092">CALCITE-1092</a>]
and
[<a href="https://issues.apache.org/jira/browse/CALCITE-1093">CALCITE-1093</a>])
were related to heap usage in the Avatica server, while
[<a href="https://issues.apache.org/jira/browse/CALCITE-1094">CALCITE-1094</a>]
and
[<a href="https://issues.apache.org/jira/browse/CALCITE-1117">CALCITE-1117</a>]
were strictly performance-related.</p>

<p>The latter improved performance the most. Switching to the
<a href="http://hc.apache.org/">Apache Commons HttpComponents Client</a>
library instead of using the Java platform’s built-in
<a href="https://docs.oracle.com/javase/7/docs/api/java/net/HttpURLConnection.html">HttpURLConnection</a>,
we noticed a 15% improvement in pure write workloads.</p>

<p>Three dependent library upgrades:</p>

<ul>
  <li>We completely removed
<a href="https://commons.apache.org/proper/commons-logging/">Commons Logging</a>
in favor of <a href="http://slf4j.org/">SLF4J</a> in
[<a href="https://issues.apache.org/jira/browse/CALCITE-669">CALCITE-669</a>].
This logging framework update will allow downstream integrators to
use the logging implementation of their choice instead of being
forced to inherit Commons Logging.</li>
  <li>We upgraded Jackson from 2.1.1 to 2.6.3 in
[<a href="https://issues.apache.org/jira/browse/CALCITE-1021">CALCITE-1021</a>].</li>
  <li>We upgraded Jetty from 9.2.7.v20150116 to 9.2.15.v20160210 in
[<a href="https://issues.apache.org/jira/browse/CALCITE-1156">CALCITE-1156</a>]
to fix a
<a href="https://blog.gdssecurity.com/labs/2015/2/25/jetleak-vulnerability-remote-leakage-of-shared-buffers-in-je.html">security issue</a>.</li>
</ul>

<p>Note that Avatica’s Maven coordinates have changed. The <code class="highlighter-rouge">groupId</code> is
now “org.apache.calcite.avatica” (previously “org.apache.calcite”),
and <code class="highlighter-rouge">artifactId</code>s are
“avatica”,
“avatica-metrics”,
“avatica-metrics-dropwizardmetrics3”,
“avatica-noop-driver”,
“avatica-server”
(previously “calcite-avatica”, etc.). Make sure to update these when
upgrading to this version.</p>

    
        
        <p>See the <a href="/avatica/docs/history.html#v1-7-1">release notes</a>;
            <a href="/avatica/downloads/avatica.html#source-releases">download</a> the release.</p>
        
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/avatica/news/2016/03/03/separate-project/">
      Splitting Avatica from Calcite
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      milestones
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      03 Mar 2016
    </span>
    
    
    
    <a href="http://github.com/joshelser" class="post-author">
      <img src="http://github.com/joshelser.png"
           class="avatar" alt="elserj avatar"
           width="24" height="24">
      elserj
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>This marks the separation of Avatica from its previous location as a sub-module
of Apache Calcite’s Maven build.</p>

<p>This separation is not to remove Avatica from
the governance of the Apache Calcite project, but to allow for even more rapid
releases from both the Avatica and Calcite projects. We can confidently make new
releases of each without having to worry about the current state of development
features in the other.</p>

    
  </div>
</article>



<p></p>

<h2>Calcite Twitter</h2>

<p>The official <a href="https://twitter.com/ApacheCalcite">@ApacheCalcite</a>
Twitter account pushes announcements about Calcite. If you give a talk about
Calcite, let us know and we'll tweet it out and add it to the news section
of the website.</p>

      </div>

      <div class="unit one-fifth hide-on-mobiles">
  <aside>
    <ul>
      <li class="current">
        <a href="/avatica/news/">All News</a>
      </li>
      <li class="">
        <a href="/avatica/news/avatica-releases/">Avatica Releases</a>
      </li>
      <li class="">
          <a href="/avatica/news/avatica-go-releases/">Avatica Go Releases</a>
      </li>
    </ul>
    <h4>Recent Releases</h4>
    <ul>
      
      <li class="">
        <a href="/avatica/news/2019/05/16/release-avatica-go-4.0.0/">avatica-go 4.0.0</a>
      </li>
      
      <li class="">
        <a href="/avatica/news/2019/05/13/release-1.15.0/">avatica 1.15.0</a>
      </li>
      
      <li class="">
        <a href="/avatica/news/2019/04/29/release-1.14.0/">avatica 1.14.0</a>
      </li>
      
      <li class="">
        <a href="/avatica/news/2018/12/04/release-1.13.0/">avatica 1.13.0</a>
      </li>
      
      <li class="">
        <a href="/avatica/news/2018/09/18/release-avatica-go-3.2.0/">avatica-go 3.2.0</a>
      </li>
      
    </ul>
    <h4>Other News</h4>
    <ul>
        
        <li class="">
          <a href="/avatica/news/2017/03/31/new-avatica-repository/">New Avatica Repository</a>
        </li>
          
        <li class="">
          <a href="/avatica/news/2016/03/03/separate-project/">Splitting Avatica from Calcite</a>
        </li>
          
    </ul>
  </aside>
</div>


      <div class="clear"></div>

    </div>
  </section>


  <footer role="contentinfo">
  <div id="poweredby">
    <a href="http://www.apache.org/">
      <span class="sr-only">Apache</span>
      <img src="/avatica/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
  </div>
  <div id="copyright">
  <p>The contents of this website are &copy;&nbsp;2019
     <a href="https://www.apache.org/">Apache Software Foundation</a>
     under the terms of
     the <a href="https://www.apache.org/licenses/LICENSE-2.0.html">
     Apache&nbsp;License&nbsp;v2</a>. Apache Calcite and its logo are
     trademarks of the Apache Software Foundation.</p>
  </div>
</footer>

  <script>
  var anchorForId = function (id) {
    var anchor = document.createElement("a");
    anchor.className = "header-link";
    anchor.href      = "#" + id;
    anchor.innerHTML = "<span class=\"sr-only\">Permalink</span><i class=\"fa fa-link\"></i>";
    anchor.title = "Permalink";
    return anchor;
  };

  var linkifyAnchors = function (level, containingElement) {
    var headers = containingElement.getElementsByTagName("h" + level);
    for (var h = 0; h < headers.length; h++) {
      var header = headers[h];

      if (typeof header.id !== "undefined" && header.id !== "") {
        header.appendChild(anchorForId(header.id));
      }
    }
  };

  document.onreadystatechange = function () {
    if (this.readyState === "complete") {
      var contentBlock = document.getElementsByClassName("docs")[0] || document.getElementsByClassName("news")[0];
      if (!contentBlock) {
        return;
      }
      for (var level = 1; level <= 6; level++) {
        linkifyAnchors(level, contentBlock);
      }
    }
  };
</script>


</body>
</html>
