<!DOCTYPE HTML>
<html lang="en-US">
<head>
  <meta charset="UTF-8">
  <title>Client Reference</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="">
    <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="current">
    <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="">
    <a href="/avatica/news/">News</a>
  </li>
  <li class="current">
    <a href="/avatica/docs/">Docs</a>
  </li>
</ul>

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


    <section class="docs">
    <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 docs…</option>
    
    <optgroup label="Overview">
      


  

  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  

  

  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  


    </optgroup>
    
    <optgroup label="Avatica Reference">
      


  

  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  

  

  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  

  

  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  

  

  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  

  

  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  

  

  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  

  

  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  

  

  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  

  

  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  


    </optgroup>
    
    <optgroup label="Avatica Go Client Reference">
      


  

  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  

  

  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  


    </optgroup>
    
    <optgroup label="Avatica Meta">
      


  

  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  

  

  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  


    </optgroup>
    
    <optgroup label="Avatica Go Client Meta">
      


  

  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  
    
  


    </optgroup>
    
  </select>
</div>


      <div class="unit four-fifths">
        <article>
          <h1>Client Reference</h1>
          <!--

-->

<p>Avatica provides a reference-implementation client in the form of a Java
JDBC client that interacts with the Avatica server over HTTP. This client
can be used just as any other JDBC driver. There are a number of options
that are available for clients to specify via the JDBC connection URL.</p>

<p>As a reminder, the JDBC connection URL for Avatica is:</p>

<p><code class="language-plaintext highlighter-rouge">jdbc:avatica:remote:[option=value[;option=value]]</code></p>

<p>The following are a list of supported options:</p>

<dl>
  <dt><strong><a name="url" href="#url">url</a></strong></dt>
  <dd>
    <p><em>Description</em>: This property is a URL which refers to the location of the
Avatica Server which the driver will communicate with.</p>
  </dd>
  <dd>
    <p><em>Default</em>: This property’s default value is <code class="language-plaintext highlighter-rouge">null</code>. It is required that the
user provides a value for this property.</p>
  </dd>
  <dd>
    <p><em>Required</em>: Yes.</p>
  </dd>
  <dt><strong><a name="serialization" href="#serialization">serialization</a></strong></dt>
  <dd>
    <p><em>Description</em>: Avatica supports multiple types of serialization mechanisms
to format data between the client and server. This property is used to ensure
that the client and server both use the same serialization mechanism. Valid
values presently include <code class="language-plaintext highlighter-rouge">json</code> and <code class="language-plaintext highlighter-rouge">protobuf</code>.</p>
  </dd>
  <dd>
    <p><em>Default</em>: <code class="language-plaintext highlighter-rouge">json</code> is the default value.</p>
  </dd>
  <dd>
    <p><em>Required</em>: No.</p>
  </dd>
  <dt><strong><a name="authentication" href="#authentication">authentication</a></strong></dt>
  <dd>
    <p><em>Description</em>: Avatica clients can specify the means in which it authenticates
with the Avatica server. Clients who want to use a specific form
of authentication should specify the appropriate value in this property. Valid
values for this property are presently: <code class="language-plaintext highlighter-rouge">NONE</code>, <code class="language-plaintext highlighter-rouge">BASIC</code>, <code class="language-plaintext highlighter-rouge">DIGEST</code>, and <code class="language-plaintext highlighter-rouge">SPNEGO</code>.</p>
  </dd>
  <dd>
    <p><em>Default</em>: <code class="language-plaintext highlighter-rouge">null</code> (implying “no authentication”, equivalent to <code class="language-plaintext highlighter-rouge">NONE</code>).</p>
  </dd>
  <dd>
    <p><em>Required</em>: No.</p>
  </dd>
  <dt><strong><a name="timeZone" href="#timeZone">timeZone</a></strong></dt>
  <dd>
    <p><em>Description</em>: The timezone that will be used for dates and times. Valid values for this
property are defined by <a href="https://www.ietf.org/rfc/rfc0822.txt">RFC 822</a>, for
example: <code class="language-plaintext highlighter-rouge">GMT</code>, <code class="language-plaintext highlighter-rouge">GMT-3</code>, <code class="language-plaintext highlighter-rouge">EST</code> or <code class="language-plaintext highlighter-rouge">PDT</code>.</p>
  </dd>
  <dd>
    <p><em>Default</em>: This property’s default value is <code class="language-plaintext highlighter-rouge">null</code> which will cause the Avatica Driver to
use the default timezone as specified by the JVM, commonly overriden by the
<code class="language-plaintext highlighter-rouge">user.timezone</code> system property.</p>
  </dd>
  <dd>
    <p><em>Required</em>: No.</p>
  </dd>
  <dt><strong><a name="httpclient-factory" href="#httpclient-factory">httpclient_factory</a></strong></dt>
  <dd>
    <p><em>Description</em>: The Avatica client is a “fancy” HTTP client. As such, there are
many libraries and APIs available for making HTTP calls. To determine which implementation
should be used, there is an interface <code class="language-plaintext highlighter-rouge">AvaticaHttpClientFactory</code> which can be provided
to control how the <code class="language-plaintext highlighter-rouge">AvaticaHttpClient</code> implementation is chosen.</p>
  </dd>
  <dd>
    <p><em>Default</em>: <code class="language-plaintext highlighter-rouge">AvaticaHttpClientFactoryImpl</code>.</p>
  </dd>
  <dd>
    <p><em>Required</em>: No.</p>
  </dd>
  <dt><strong><a name="httpclient-impl" href="#httpclient-impl">httpclient_impl</a></strong></dt>
  <dd>
    <p><em>Description</em>: When using the default <code class="language-plaintext highlighter-rouge">AvaticaHttpClientFactoryImpl</code> HTTP client factory
implementation, this factory should choose the correct client implementation for the
given client configuration. This property can be used to override the specific HTTP
client implementation. If it is not provided, the <code class="language-plaintext highlighter-rouge">AvaticaHttpClientFactoryImpl</code> will
automatically choose the HTTP client implementation.</p>
  </dd>
  <dd>
    <p><em>Default</em>: <code class="language-plaintext highlighter-rouge">null</code>.</p>
  </dd>
  <dd>
    <p><em>Required</em>: No.</p>
  </dd>
  <dt><strong><a name="avatica-user" href="#avatica-user">avatica_user</a></strong></dt>
  <dd>
    <p><em>Description</em>: This is the username used by an Avatica client to identify itself
to the Avatica server. It is unique to the traditional “user” JDBC property. It
is only necessary if Avatica is configured for HTTP Basic or Digest authentication.</p>
  </dd>
  <dd>
    <p><em>Default</em>: <code class="language-plaintext highlighter-rouge">null</code>.</p>
  </dd>
  <dd>
    <p><em>Required</em>: No.</p>
  </dd>
  <dt><strong><a name="avatica-password" href="#avatica-password">avatica_password</a></strong></dt>
  <dd>
    <p><em>Description</em>: This is the password used by an Avatica client to identify itself
to the Avatica server. It is unique to the traditional “password” JDBC property. It
is only necessary if Avatica is configured for HTTP Basic or Digest authentication.</p>
  </dd>
  <dd>
    <p><em>Default</em>: <code class="language-plaintext highlighter-rouge">null</code>.</p>
  </dd>
  <dd>
    <p><em>Required</em>: No.</p>
  </dd>
  <dt><strong><a name="principal" href="#principal">principal</a></strong></dt>
  <dd>
    <p><em>Description</em>: The Kerberos principal which can be used by the Avatica JDBC Driver
to automatically perform a Kerberos login before attempting to contact the Avatica
server. If this property is provided, it is also expected that <code class="language-plaintext highlighter-rouge">keytab</code> is provided
and that the Avatica server is configured for SPNEGO authentication. Users can perform
their own Kerberos login; this option is provided only as a convenience.</p>
  </dd>
  <dd>
    <p><em>Default</em>: <code class="language-plaintext highlighter-rouge">null</code>.</p>
  </dd>
  <dd>
    <p><em>Required</em>: No.</p>
  </dd>
  <dt><strong><a name="keytab" href="#keytab">keytab</a></strong></dt>
  <dd>
    <p><em>Description</em>: The Kerberos keytab which contains the secret material to perform
a Kerberos login with the <code class="language-plaintext highlighter-rouge">principal</code>. The value should be a path on the local
filesystem to a regular file.</p>
  </dd>
  <dd>
    <p><em>Default</em>: <code class="language-plaintext highlighter-rouge">null</code>.</p>
  </dd>
  <dd>
    <p><em>Required</em>: No.</p>
  </dd>
  <dt><strong><a name="truststore" href="#truststore">truststore</a></strong></dt>
  <dd>
    <p><em>Description</em>: A path to a Java KeyStore (JKS) file on the local filesystem
which contains the certificate authority to trust in a TLS handshake. Only
necessary when using HTTPS.</p>
  </dd>
  <dd>
    <p><em>Default</em>: <code class="language-plaintext highlighter-rouge">null</code>.</p>
  </dd>
  <dd>
    <p><em>Required</em>: No.</p>
  </dd>
  <dt><strong><a name="truststore_password" href="#truststore_password">truststore_password</a></strong></dt>
  <dd>
    <p><em>Description</em>: The password for the Java KeyStore file specified by <a href="#truststore">truststore</a>.</p>
  </dd>
  <dd>
    <p><em>Default</em>: <code class="language-plaintext highlighter-rouge">null</code>.</p>
  </dd>
  <dd>
    <p><em>Required</em>: Only if <code class="language-plaintext highlighter-rouge">truststore</code> was provided.</p>
  </dd>
</dl>

          





  
  

  
  

  
  
    <div class="section-nav">
      <div class="left align-right">
          
            
            
            <a href="/avatica/docs/roadmap.html" class="prev">Previous</a>
          
      </div>
      <div class="right align-left">
          
            
            

            
            <a href="/avatica/docs/json_reference.html" class="next">Next</a>
          
      </div>
    </div>
    <div class="clear"></div>
    

        </article>
      </div>

      <div class="unit one-fifth hide-on-mobiles">
  <aside>
    
    <h4>Overview</h4>
    

<ul>

  
  
  
  

  

  <li class=""><a href="/avatica/docs/index.html">Background</a></li>


  
  
  
  

  

  <li class=""><a href="/avatica/docs/roadmap.html">Roadmap</a></li>


</ul>

    
    <h4>Avatica Reference</h4>
    

<ul>

  
  
  
  

  

  <li class="current"><a href="/avatica/docs/client_reference.html">Client Reference</a></li>


  
  
  
  

  

  <li class=""><a href="/avatica/docs/json_reference.html">JSON Reference</a></li>


  
  
  
  

  

  <li class=""><a href="/avatica/docs/protobuf_reference.html">Protobuf Reference</a></li>


  
  
  
  

  

  <li class=""><a href="/avatica/docs/howto.html">HOWTO</a></li>


  
  
  
  

  

  <li class=""><a href="/avatica/docs/security.html">Security</a></li>


  
  
  
  

  

  <li class=""><a href="/avatica/docs/compatibility.html">Compatibility</a></li>


  
  
  
  

  

  <li class=""><a href="/avatica/docs/custom_client_artifacts.html">Custom Client Artifacts</a></li>


  
  
  
  

  

  <li class=""><a href="/avatica/docs/docker.html">Docker Images</a></li>


  
  
  
  

  

  <li class=""><a href="/avatica/docs/protocol_testing.html">Protocol Testing</a></li>


</ul>

    
    <h4>Avatica Go Client Reference</h4>
    

<ul>

  
  
  
  

  

  <li class=""><a href="/avatica/docs/go_client_reference.html">Go Client Reference</a></li>


  
  
  
  

  

  <li class=""><a href="/avatica/docs/go_howto.html">HOWTO</a></li>


</ul>

    
    <h4>Avatica Meta</h4>
    

<ul>

  
  
  
  

  

  <li class=""><a href="/avatica/docs/history.html">History</a></li>


  
  
  
  

  

  <li class=""><a href="/avatica/docs/api/">API</a></li>


</ul>

    
    <h4>Avatica Go Client Meta</h4>
    

<ul>

  
  
  
  

  

  <li class=""><a href="/avatica/docs/go_history.html">Go Client History</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;2022
     <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>
