<!DOCTYPE HTML>
<html lang="en-US">
<head>
  <meta charset="UTF-8">
  <title>Avatica Go Client Downloads</title>
  <meta name="viewport" content="width=device-width,initial-scale=1">
  <meta name="generator" content="Jekyll v4.2.2">
  <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">
</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="current">
    <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="">
    <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="current">
    <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="">
    <a href="/avatica/news/">News</a>
  </li>
  <li class="">
    <a href="/avatica/docs/">Docs</a>
  </li>
</ul>

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


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

    <div class="unit whole">
      <article>
        <h1>Avatica Go Client Downloads</h1>
        <!--

-->

<h2 id="source-releases">Source releases</h2>

<table>
  <thead>
    <tr>
      <th style="text-align: left">Release</th>
      <th style="text-align: left">Date</th>
      <th style="text-align: left">Commit</th>
      <th style="text-align: left">Download</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><a href="/avatica/docs/go_history.html#v5-2-0">5.2.0</a></td>
      <td style="text-align: left">13 Oct 2022</td>
      <td style="text-align: left"><a href="https://github.com/apache/calcite-avatica-go/commit/2b61f37">2b61f37</a></td>
      <td style="text-align: left"><a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-5.2.0/apache-calcite-avatica-go-5.2.0-src.tar.gz">tar</a> (<a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-5.2.0/apache-calcite-avatica-go-5.2.0-src.tar.gz.sha512">sha512</a> <a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-5.2.0/apache-calcite-avatica-go-5.2.0-src.tar.gz.asc">pgp</a>)</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="/avatica/docs/go_history.html#v5-1-0">5.1.0</a></td>
      <td style="text-align: left">27 Mar 2022</td>
      <td style="text-align: left"><a href="https://github.com/apache/calcite-avatica-go/commit/c232d7b">c232d7b</a></td>
      <td style="text-align: left"><a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-5.1.0/apache-calcite-avatica-go-5.1.0-src.tar.gz">tar</a> (<a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-5.1.0/apache-calcite-avatica-go-5.1.0-src.tar.gz.sha512">sha512</a> <a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-5.1.0/apache-calcite-avatica-go-5.1.0-src.tar.gz.asc">pgp</a>)</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="/avatica/docs/go_history.html#v5-0-0">5.0.0</a></td>
      <td style="text-align: left">16 Jul 2020</td>
      <td style="text-align: left"><a href="https://github.com/apache/calcite-avatica-go/commit/0e3f5df">0e3f5df</a></td>
      <td style="text-align: left"><a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-5.0.0/apache-calcite-avatica-go-5.0.0-src.tar.gz">tar</a> (<a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-5.0.0/apache-calcite-avatica-go-5.0.0-src.tar.gz.sha512">sha512</a> <a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-5.0.0/apache-calcite-avatica-go-5.0.0-src.tar.gz.asc">pgp</a>)</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="/avatica/docs/go_history.html#v4-0-0">4.0.0</a></td>
      <td style="text-align: left">16 May 2019</td>
      <td style="text-align: left"><a href="https://github.com/apache/calcite-avatica-go/commit/3790ef5">3790ef5</a></td>
      <td style="text-align: left"><a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-4.0.0/apache-calcite-avatica-go-4.0.0-src.tar.gz">tar</a> (<a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-4.0.0/apache-calcite-avatica-go-4.0.0-src.tar.gz.sha512">sha512</a> <a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-4.0.0/apache-calcite-avatica-go-4.0.0-src.tar.gz.asc">pgp</a>)</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="/avatica/docs/go_history.html#v3-2-0">3.2.0</a></td>
      <td style="text-align: left">18 Sep 2018</td>
      <td style="text-align: left"><a href="https://github.com/apache/calcite-avatica-go/commit/0a166d5">0a166d5</a></td>
      <td style="text-align: left"><a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-3.2.0/apache-calcite-avatica-go-3.2.0-src.tar.gz">tar</a> (<a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-3.2.0/apache-calcite-avatica-go-3.2.0-src.tar.gz.sha256">sha256</a> <a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-3.2.0/apache-calcite-avatica-go-3.2.0-src.tar.gz.asc">pgp</a>)</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="/avatica/docs/go_history.html#v3-1-0">3.1.0</a></td>
      <td style="text-align: left">10 Sep 2018</td>
      <td style="text-align: left"><a href="https://github.com/apache/calcite-avatica-go/commit/0e1ae23">0e1ae23</a></td>
      <td style="text-align: left"><a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-3.1.0/apache-calcite-avatica-go-src-3.1.0.tar.gz">tar</a> (<a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-3.1.0/apache-calcite-avatica-go-src-3.1.0.tar.gz.sha256">sha256</a> <a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-3.1.0/apache-calcite-avatica-go-src-3.1.0.tar.gz.asc">pgp</a>)</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="/avatica/docs/go_history.html#v3-0-0">3.0.0</a></td>
      <td style="text-align: left">27 Apr 2018</td>
      <td style="text-align: left"><a href="https://github.com/apache/calcite-avatica-go/commit/273c53f">273c53f</a></td>
      <td style="text-align: left"><a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-3.0.0/apache-calcite-avatica-go-src-3.0.0.tar.gz">tar</a> (<a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-3.0.0/apache-calcite-avatica-go-src-3.0.0.tar.gz.sha256">sha256</a> <a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-3.0.0/apache-calcite-avatica-go-src-3.0.0.tar.gz.asc">pgp</a>) <br /> <a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-3.0.0/apache-calcite-avatica-go-src-3.0.0.zip">zip</a> (<a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-3.0.0/apache-calcite-avatica-go-src-3.0.0.zip.sha256">sha256</a> <a href="https://archive.apache.org/dist/calcite/apache-calcite-avatica-go-3.0.0/apache-calcite-avatica-go-src-3.0.0.zip.asc">pgp</a>)</td>
    </tr>
  </tbody>
</table>

<p>Choose a source distribution in either <em>tar</em> or <em>zip</em> format.</p>

<p>For fast downloads, current source distributions are hosted on mirror servers;
older source distributions are in the
<a href="https://archive.apache.org/dist/calcite/">archive</a>.
If a download from a mirror fails, retry, and the second download will likely
succeed.</p>

<p>For security, hash and signature files are always hosted at
<a href="https://downloads.apache.org">Apache</a>.</p>

<h2 id="verify-the-integrity-of-the-files">Verify the integrity of the files</h2>

<p>You must verify the integrity of the downloaded file using the PGP signature (.asc file) or a hash (.sha256, .md5 for older
releases). For more information why this must be done, please read <a href="https://www.apache.org/info/verification.html">Verifying Apache Software Foundation Releases</a>.</p>

<p>To verify the signature using GPG or PGP, please do the following:</p>

<ol>
  <li>Download the release artifact and the corresponding PGP signature from the table above.</li>
  <li>Download the <a href="https://downloads.apache.org/calcite/KEYS">Apache Calcite KEYS</a> file.</li>
  <li>Import the KEYS file and verify the downloaded artifact using one of the following methods:</li>
</ol>

<figure class="highlight"><pre><code class="language-shell" data-lang="shell">% gpg <span class="nt">--import</span> KEYS
% gpg <span class="nt">--verify</span> downloaded_file.asc downloaded_file</code></pre></figure>

<p>or</p>

<figure class="highlight"><pre><code class="language-shell" data-lang="shell">% pgpk <span class="nt">-a</span> KEYS
% pgpv downloaded_file.asc</code></pre></figure>

<p>or</p>

<figure class="highlight"><pre><code class="language-shell" data-lang="shell">% pgp <span class="nt">-ka</span> KEYS
% pgp downloaded_file.asc</code></pre></figure>


      </article>
    </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;2023
     <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>
  <p>
      <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a>
  </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>
