<!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 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="">
    <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="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="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="highlighter-rouge">json</code> and <code class="highlighter-rouge">protobuf</code>.</p>
  </dd>
  <dd>
    <p><em>Default</em>: <code class="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="highlighter-rouge">NONE</code>, <code class="highlighter-rouge">BASIC</code>, <code class="highlighter-rouge">DIGEST</code>, and <code class="highlighter-rouge">SPNEGO</code>.</p>
  </dd>
  <dd>
    <p><em>Default</em>: <code class="highlighter-rouge">null</code> (implying “no authentication”, equivalent to <code class="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="highlighter-rouge">GMT</code>, <code class="highlighter-rouge">GMT-3</code>, <code class="highlighter-rouge">EST</code> or <code class="highlighter-rouge">PDT</code>.</p>
  </dd>
  <dd>
    <p><em>Default</em>: This property’s default value is <code class="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="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="highlighter-rouge">AvaticaHttpClientFactory</code> which can be provided
to control how the <code class="highlighter-rouge">AvaticaHttpClient</code> implementation is chosen.</p>
  </dd>
  <dd>
    <p><em>Default</em>: <code class="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="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="highlighter-rouge">AvaticaHttpClientFactoryImpl</code> will
automatically choose the HTTP client implementation.</p>
  </dd>
  <dd>
    <p><em>Default</em>: <code class="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="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="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="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="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="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="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="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="highlighter-rouge">null</code>.</p>
  </dd>
  <dd>
    <p><em>Required</em>: Only if <code class="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>


  
  
  
  

  

  <li class=""><a href="/avatica/docs/testapi/">Test 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;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>
