blob: e93026611bce1ff13c457b87b9e1997e5e5f8587 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>Protocol Buffers 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>Protocol Buffers Reference</h1>
<!--
-->
<p>Avatica also supports <a href="https://developers.google.com/protocol-buffers/">Protocol Buffers</a>
as a message format since version 1.5.0. The Protocol Buffer, or protobuf for
short, implementation is extremely similar to the JSON implementation. Some
differences include protobuf’s expanded type support (such as native byte arrays)
and inability to differentiate between the default value for a field and the
absence of a value for a field.</p>
<p>Other notable structural differences to JSON include the addition of a
<code class="highlighter-rouge">WireMessage</code> message which is used to identify the type of the wrapped message
returned by the server (synonymous with <code class="highlighter-rouge">request</code> or <code class="highlighter-rouge">response</code> attribute on the
JSON messages) and a change to <code class="highlighter-rouge">TypedValue</code> containing an <code class="highlighter-rouge">Object</code> value to
a collection of optional strongly-typed values (as protobuf does not natively
support an <code class="highlighter-rouge">Object</code> type that is unwrapped at runtime).</p>
<p>Unless otherwise specified with use of the <code class="highlighter-rouge">required</code> modifier, all fields in
all protocol buffer messages are <code class="highlighter-rouge">optional</code> by default.</p>
<h2 id="index">Index</h2>
<h3 id="requests">Requests</h3>
<ul>
<li><a href="#catalogsrequest">CatalogsRequest</a></li><li><a href="#closeconnectionrequest">CloseConnectionRequest</a></li><li><a href="#closestatementrequest">CloseStatementRequest</a></li><li><a href="#columnsrequest">ColumnsRequest</a></li><li><a href="#commitrequest">CommitRequest</a></li><li><a href="#connectionsyncrequest">ConnectionSyncRequest</a></li><li><a href="#createstatementrequest">CreateStatementRequest</a></li><li><a href="#databasepropertyrequest">DatabasePropertyRequest</a></li><li><a href="#executebatchrequest">ExecuteBatchRequest</a></li><li><a href="#executerequest">ExecuteRequest</a></li><li><a href="#fetchrequest">FetchRequest</a></li><li><a href="#openconnectionrequest">OpenConnectionRequest</a></li><li><a href="#prepareandexecutebatchrequest">PrepareAndExecuteBatchRequest</a></li><li><a href="#prepareandexecuterequest">PrepareAndExecuteRequest</a></li><li><a href="#preparerequest">PrepareRequest</a></li><li><a href="#rollbackrequest">RollbackRequest</a></li><li><a href="#schemasrequest">SchemasRequest</a></li><li><a href="#syncresultsrequest">SyncResultsRequest</a></li><li><a href="#tabletypesrequest">TableTypesRequest</a></li><li><a href="#tablesrequest">TablesRequest</a></li><li><a href="#typeinforequest">TypeInfoRequest</a></li>
</ul>
<h3 id="responses">Responses</h3>
<ul>
<li><a href="#closeconnectionresponse">CloseConnectionResponse</a></li><li><a href="#closestatementresponse">CloseStatementResponse</a></li><li><a href="#commitresponse">CommitResponse</a></li><li><a href="#connectionsyncresponse">ConnectionSyncResponse</a></li><li><a href="#createstatementresponse">CreateStatementResponse</a></li><li><a href="#databasepropertyresponse">DatabasePropertyResponse</a></li><li><a href="#errorresponse">ErrorResponse</a></li><li><a href="#executebatchresponse">ExecuteBatchResponse</a></li><li><a href="#executeresponse">ExecuteResponse</a></li><li><a href="#fetchresponse">FetchResponse</a></li><li><a href="#openconnectionresponse">OpenConnectionResponse</a></li><li><a href="#prepareresponse">PrepareResponse</a></li><li><a href="#resultsetresponse">ResultSetResponse</a></li><li><a href="#rollbackresponse">RollbackResponse</a></li><li><a href="#syncresultsresponse">SyncResultsResponse</a></li>
</ul>
<h3 id="miscellaneous">Miscellaneous</h3>
<ul>
<li><a href="#avaticaparameter">AvaticaParameter</a></li><li><a href="#avaticaseverity">AvaticaSeverity</a></li><li><a href="#avaticatype">AvaticaType</a></li><li><a href="#columnmetadata">ColumnMetaData</a></li><li><a href="#columnvalue">ColumnValue</a></li><li><a href="#connectionproperties">ConnectionProperties</a></li><li><a href="#cursorfactory">CursorFactory</a></li><li><a href="#databaseproperty">DatabaseProperty</a></li><li><a href="#frame">Frame</a></li><li><a href="#querystate">QueryState</a></li><li><a href="#rep">Rep</a></li><li><a href="#row">Row</a></li><li><a href="#rpcmetadata">RpcMetadata</a></li><li><a href="#signature">Signature</a></li><li><a href="#statetype">StateType</a></li><li><a href="#statementhandle">StatementHandle</a></li><li><a href="#statementtype">StatementType</a></li><li><a href="#style">Style</a></li><li><a href="#typedvalue">TypedValue</a></li><li><a href="#updatebatch">UpdateBatch</a></li><li><a href="#wiremessage">WireMessage</a></li>
</ul>
<h2 id="requests-1">Requests</h2>
<p>The collection of all protobuf objects accepted as requests to Avatica. All request
objects should be wrapped in a <code class="highlighter-rouge">WireMessage</code> before being sent to Avatica.</p>
<h3 id="catalogsrequest">CatalogsRequest</h3>
<p>This request is used to fetch the available catalog names in the database.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">CatalogsRequest</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> The identifier for the connection to use.</p>
<h3 id="closeconnectionrequest">CloseConnectionRequest</h3>
<p>This request is used to close the Connection object in the Avatica server identified by the given IDs.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">CloseConnectionRequest</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> The identifier of the connection to close.</p>
<h3 id="closestatementrequest">CloseStatementRequest</h3>
<p>This request is used to close the Statement object in the Avatica server identified by the given IDs.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">CloseStatementRequest</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">uint32</span> <span class="na">statement_id</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> The identifier of the connection to which the statement belongs.</p>
<p><code class="highlighter-rouge">statement_id</code> The identifier of the statement to close.</p>
<h3 id="columnsrequest">ColumnsRequest</h3>
<p>This request is used to fetch columns in the database given some optional filtering criteria.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">ColumnsRequest</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">catalog</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">schema_pattern</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">table_name_pattern</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">column_name_pattern</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">catalog</code> The name of a catalog to limit returned columns.</p>
<p><code class="highlighter-rouge">schema_pattern</code> A Java Pattern against schemas to limit returned columns.</p>
<p><code class="highlighter-rouge">table_name_pattern</code> A Java Pattern against table names to limit returned columns.</p>
<p><code class="highlighter-rouge">column_name_pattern</code> A Java Pattern against column names to limit returned columns.</p>
<p><code class="highlighter-rouge">connection_id</code> The identifier of the connection which to use to fetch the columns.</p>
<h3 id="commitrequest">CommitRequest</h3>
<p>This request is used to issue a <code class="highlighter-rouge">commit</code> on the Connection in the Avatica server identified by the given ID.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">CommitRequest</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> The identifier of the connection on which to invoke commit.</p>
<h3 id="connectionsyncrequest">ConnectionSyncRequest</h3>
<p>This request is used to ensure that the client and server have a consistent view of the database properties.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">ConnectionSyncRequest</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="n">ConnectionProperties</span> <span class="na">conn_props</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> The identifier of the connection to synchronize.</p>
<p><code class="highlighter-rouge">conn_props</code> A <a href="#connectionproperties">ConnectionProperties</a> object to synchronize between the client and server.</p>
<h3 id="createstatementrequest">CreateStatementRequest</h3>
<p>This request is used to create a new Statement in the Avatica server.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">CreateStatementRequest</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> The identifier of the connection to use in creating a statement.</p>
<h3 id="databasepropertyrequest">DatabasePropertyRequest</h3>
<p>This request is used to fetch all <a href="#databaseproperty">database properties</a>.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">DatabasePropertyRequest</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> The identifier of the connection to use when fetching the database properties.</p>
<h3 id="executebatchrequest">ExecuteBatchRequest</h3>
<p>This request is used to execute a batch of updates against a PreparedStatement.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">ExecuteBatchRequest</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">uint32</span> <span class="na">statement_id</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="k">repeated</span> <span class="n">UpdateBatch</span> <span class="na">updates</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> A string which refers to a connection.</p>
<p><code class="highlighter-rouge">statement_id</code> An integer which refers to a statement.</p>
<p><code class="highlighter-rouge">updates</code> A list of <a href="#updatebatch">UpdateBatch</a>’s; the batch of updates.</p>
<h3 id="executerequest">ExecuteRequest</h3>
<p>This request is used to execute a PreparedStatement, optionally with values to bind to the parameters in the Statement.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">ExecuteRequest</span> <span class="p">{</span>
<span class="n">StatementHandle</span> <span class="na">statementHandle</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="k">repeated</span> <span class="n">TypedValue</span> <span class="na">parameter_values</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="kt">uint64</span> <span class="na">deprecated_first_frame_max_size</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">has_parameter_values</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="kt">int32</span> <span class="na">first_frame_max_size</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">statementHandle</code> A <a href="#statementhandle">StatementHandle</a> object.</p>
<p><code class="highlighter-rouge">parameter_values</code> The <a href="#typedvalue">TypedValue</a> for each parameter on the prepared statement.</p>
<p><code class="highlighter-rouge">deprecated_first_frame_max_size</code> <em>Deprecated</em>, use <code class="highlighter-rouge">first_frame_max_size</code> instead. Previously, the maximum number of rows returned in the response.</p>
<p><code class="highlighter-rouge">has_parameter_values</code> A boolean which denotes if the user set a value for the <code class="highlighter-rouge">parameter_values</code> field.</p>
<p><code class="highlighter-rouge">first_frame_max_size</code> The maximum number of rows to return in the first <code class="highlighter-rouge">Frame</code>.</p>
<h3 id="fetchrequest">FetchRequest</h3>
<p>This request is used to fetch a batch of rows from a Statement previously created.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">FetchRequest</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">uint32</span> <span class="na">statement_id</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="kt">uint64</span> <span class="na">offset</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="kt">uint32</span> <span class="na">fetch_max_row_count</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span> <span class="c1">// Deprecated!
</span> <span class="kt">int32</span> <span class="na">frame_max_size</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> The identifier of the connection to use.</p>
<p><code class="highlighter-rouge">statement_id</code> The identifier of the statement created using the above connection.</p>
<p><code class="highlighter-rouge">offset</code> The positional offset into a result set to fetch.</p>
<p><code class="highlighter-rouge">fetch_match_row_count</code> The maximum number of rows to return in the response to this request. Negative means no limit. <em>Deprecated</em>, use <code class="highlighter-rouge">frame_max_size</code>.</p>
<p><code class="highlighter-rouge">frame_max_size</code> The maximum number of rows to return in the response. Negative means no limit.</p>
<h3 id="openconnectionrequest">OpenConnectionRequest</h3>
<p>This request is used to open a new Connection in the Avatica server.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">OpenConnectionRequest</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="n">map</span><span class="o">&lt;</span><span class="kt">string</span><span class="p">,</span> <span class="kt">string</span><span class="err">&gt;</span> <span class="na">info</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> The identifier of the connection to open in the server.</p>
<p><code class="highlighter-rouge">info</code> A Map containing properties to include when creating the Connection.</p>
<h3 id="prepareandexecutebatchrequest">PrepareAndExecuteBatchRequest</h3>
<p>This request is used as short-hand to create a Statement and execute a batch of updates against that Statement.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">PrepareAndExecuteBatchRequest</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">uint32</span> <span class="na">statement_id</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="k">repeated</span> <span class="kt">string</span> <span class="na">sql_commands</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> The identifier for the connection to use.</p>
<p><code class="highlighter-rouge">statement_id</code> The identifier for the statement created by the above connection to use.</p>
<p><code class="highlighter-rouge">sql_commands</code> A list of SQL commands to execute; a batch.</p>
<h3 id="prepareandexecuterequest">PrepareAndExecuteRequest</h3>
<p>This request is used as a short-hand for create a Statement and fetching the first batch of results in a single call without any parameter substitution.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">PrepareAndExecuteRequest</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">uint32</span> <span class="na">statement_id</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">sql</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="kt">uint64</span> <span class="na">max_row_count</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span> <span class="c1">// Deprecated!
</span> <span class="kt">int64</span> <span class="na">max_rows_total</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="kt">int32</span> <span class="na">first_frame_max_size</span> <span class="o">=</span> <span class="mi">6</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> The identifier for the connection to use.</p>
<p><code class="highlighter-rouge">statement_id</code> The identifier for the statement created by the above connection to use.</p>
<p><code class="highlighter-rouge">sql</code> A SQL statement</p>
<p><code class="highlighter-rouge">max_row_count</code> The maximum number of rows returned in the response. <em>Deprecated</em>, use <code class="highlighter-rouge">max_rows_total</code>.</p>
<p><code class="highlighter-rouge">max_rows_total</code> The maximum number of rows which this query should return (over all <code class="highlighter-rouge">Frame</code>s).</p>
<p><code class="highlighter-rouge">first_frame_max_size</code> The maximum number of rows which should be included in the first <code class="highlighter-rouge">Frame</code> in the <code class="highlighter-rouge">ExecuteResponse</code>.</p>
<h3 id="preparerequest">PrepareRequest</h3>
<p>This request is used to create create a new Statement with the given query in the Avatica server.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">PrepareRequest</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">sql</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="kt">uint64</span> <span class="na">max_row_count</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span> <span class="c1">// Deprecated!
</span> <span class="kt">int64</span> <span class="na">max_rows_total</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> The identifier for the connection to use.</p>
<p><code class="highlighter-rouge">sql</code> A SQL statement</p>
<p><code class="highlighter-rouge">max_row_count</code> The maximum number of rows returned in the response. <em>Deprecated</em>, use <code class="highlighter-rouge">max_rows_total</code> instead.</p>
<p><code class="highlighter-rouge">max_rows_total</code> The maximum number of rows returned for the query in total.</p>
<h3 id="syncresultsrequest">SyncResultsRequest</h3>
<p>This request is used to reset a ResultSet’s iterator to a specific offset in the Avatica server.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">SyncResultsRequest</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">uint32</span> <span class="na">statement_id</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="n">QueryState</span> <span class="na">state</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="kt">uint64</span> <span class="na">offset</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> The identifier for the connection to use.</p>
<p><code class="highlighter-rouge">statement_id</code> The identifier for the statement to use.</p>
<p><code class="highlighter-rouge">state</code> The <a href="#querystate">QueryState</a> object.</p>
<p><code class="highlighter-rouge">offset</code> The offset into the ResultSet to seek to.</p>
<h3 id="rollbackrequest">RollbackRequest</h3>
<p>This request is used to issue a <code class="highlighter-rouge">rollback</code> on the Connection in the Avatica server identified by the given ID.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">RollbackRequest</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> The identifier for the connection on which to invoke rollback.</p>
<h3 id="schemasrequest">SchemasRequest</h3>
<p>This request is used to fetch the schemas matching the provided criteria in the database.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">SchemasRequest</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">catalog</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">schema_pattern</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">catalog</code> The name of the catalog to fetch the schema from.</p>
<p><code class="highlighter-rouge">schema_pattern</code> A Java pattern of schemas to fetch.</p>
<p><code class="highlighter-rouge">connection_id</code> The identifier for the connection to fetch schemas from.</p>
<h3 id="tabletypesrequest">TableTypesRequest</h3>
<p>This request is used to fetch the table types available in this database.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">TableTypesRequest</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> The identifier of the connection to fetch the table types from.</p>
<h3 id="tablesrequest">TablesRequest</h3>
<p>This request is used to fetch the tables available in this database filtered by the provided criteria.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">TablesRequest</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">catalog</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">schema_pattern</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">table_name_pattern</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="k">repeated</span> <span class="kt">string</span> <span class="na">type_list</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">has_type_list</span> <span class="o">=</span> <span class="mi">6</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">catalog</code> The name of a catalog to restrict fetched tables.</p>
<p><code class="highlighter-rouge">schema_pattern</code> A Java Pattern representing schemas to include in fetched tables.</p>
<p><code class="highlighter-rouge">table_name_pattern</code> A Java Pattern representing table names to include in fetched tables.</p>
<p><code class="highlighter-rouge">type_list</code> A list of table types used to restrict fetched tables.</p>
<p><code class="highlighter-rouge">has_type_list</code> A boolean which denotes if the field <code class="highlighter-rouge">type_list</code> was provided.</p>
<p><code class="highlighter-rouge">connection_id</code> The identifier of the connection to fetch the tables from.</p>
<h3 id="typeinforequest">TypeInfoRequest</h3>
<p>This request is used to fetch the types available in this database.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">TypeInfoRequest</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> The identifier of the connection to fetch the types from.</p>
<h2 id="responses-1">Responses</h2>
<p>The collection of all protobuf objects accepted as requests to Avatica. All response
objects will be wrapped in a <code class="highlighter-rouge">WireMessage</code> before being returned from Avatica.</p>
<h3 id="closeconnectionresponse">CloseConnectionResponse</h3>
<p>A response to the <a href="#closeconnectionrequest">CloseConnectionRequest</a>.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">CloseConnectionResponse</span> <span class="p">{</span>
<span class="n">RpcMetadata</span> <span class="na">metadata</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">metadata</code> <a href="#rpcmetadata">Server metadata</a> about this call.</p>
<h3 id="closestatementresponse">CloseStatementResponse</h3>
<p>A response to the <a href="#closestatementrequest">CloseStatementRequest</a>.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">CloseStatementResponse</span> <span class="p">{</span>
<span class="n">RpcMetadata</span> <span class="na">metadata</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">metadata</code> <a href="#rpcmetadata">Server metadata</a> about this call.</p>
<h3 id="commitresponse">CommitResponse</h3>
<p>A response to the <a href="#commitrequest">CommitRequest</a>.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">CommitResponse</span> <span class="p">{</span>
<span class="p">}</span></code></pre></figure>
<p>There are no attributes on this Response.</p>
<h3 id="connectionsyncresponse">ConnectionSyncResponse</h3>
<p>A response to the <a href="#connectionsyncrequest">ConnectionSyncRequest</a>. Properties included in the
response are those of the Connection in the Avatica server.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">ConnectionSyncResponse</span> <span class="p">{</span>
<span class="n">ConnectionProperties</span> <span class="na">conn_props</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="n">RpcMetadata</span> <span class="na">metadata</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">conn_props</code> The <a href="#connectionproperties">ConnectionProperties</a> that were synchronized.</p>
<p><code class="highlighter-rouge">metadata</code> <a href="#rpcmetadata">Server metadata</a> about this call.</p>
<h3 id="createstatementresponse">CreateStatementResponse</h3>
<p>A response to the <a href="#createstatementrequest">CreateStatementRequest</a>. The ID of the statement
that was created is included in the response. Clients will use this <code class="highlighter-rouge">statement_id</code> in subsequent calls.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">CreateStatementResponse</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">uint32</span> <span class="na">statement_id</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="n">RpcMetadata</span> <span class="na">metadata</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> The identifier for the connection used to create the statement.</p>
<p><code class="highlighter-rouge">statement_id</code> The identifier for the created statement.</p>
<p><code class="highlighter-rouge">metadata</code> <a href="#rpcmetadata">Server metadata</a> about this call.</p>
<h3 id="databasepropertyresponse">DatabasePropertyResponse</h3>
<p>A response to the <a href="#databasepropertyrequest">DatabasePropertyRequest</a>. See <a hred="#databaseproperty">DatabaseProperty</a>
for information on the available property keys.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">DatabasePropertyResponse</span> <span class="p">{</span>
<span class="k">repeated</span> <span class="n">DatabasePropertyElement</span> <span class="na">props</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="n">RpcMetadata</span> <span class="na">metadata</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">props</code> A collection of <a href="#databaseproperty">DatabaseProperty</a>’s.</p>
<p><code class="highlighter-rouge">metadata</code> <a href="#rpcmetadata">Server metadata</a> about this call.</p>
<h3 id="errorresponse">ErrorResponse</h3>
<p>A response when an error was caught executing a request. Any request may return this response.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">ErrorResponse</span> <span class="p">{</span>
<span class="k">repeated</span> <span class="kt">string</span> <span class="na">exceptions</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">has_exceptions</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">error_message</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="n">Severity</span> <span class="na">severity</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="kt">uint32</span> <span class="na">error_code</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">sql_state</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="n">RpcMetadata</span> <span class="na">metadata</span> <span class="o">=</span> <span class="mi">6</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">exceptions</code> A list of stringified Java StackTraces.</p>
<p><code class="highlighter-rouge">has_exceptions</code> A boolean which denotes the presence of <code class="highlighter-rouge">exceptions</code>.</p>
<p><code class="highlighter-rouge">error_message</code> A human-readable error message.</p>
<p><code class="highlighter-rouge">error_code</code> A numeric code for this error.</p>
<p><code class="highlighter-rouge">sql_state</code> A five character alphanumeric code for this error.</p>
<p><code class="highlighter-rouge">severity</code> An <a href="#avaticaseverity">AvaticaSeverity</a> object which denotes how critical the error is.</p>
<p><code class="highlighter-rouge">metadata</code> <a href="#rpcmetadata">Server metadata</a> about this call.</p>
<h3 id="executebatchresponse">ExecuteBatchResponse</h3>
<p>A response to the <a href="#executebatchrequest">ExecuteBatchRequest</a> and <a href="#prepareandexecutebatchrequest">PrepareAndExecuteBatchRequest</a>.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">ExecuteBatchResponse</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">uint32</span> <span class="na">statement_id</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="k">repeated</span> <span class="kt">uint32</span> <span class="na">update_counts</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">missing_statement</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="n">RpcMetadata</span> <span class="na">metadata</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> The ID referring to the connection that was used.</p>
<p><code class="highlighter-rouge">statment_id</code> The ID referring to the statement that was used.</p>
<p><code class="highlighter-rouge">update_counts</code> An array of integer values corresponding to the update count for each update in the batch.</p>
<p><code class="highlighter-rouge">missing_statement</code> A boolean which denotes if the request failed due to a missing statement.</p>
<p><code class="highlighter-rouge">metadata</code> <a href="#rpcmetadata">Server metadata</a> about this call.</p>
<h3 id="executeresponse">ExecuteResponse</h3>
<p>A response to the <a href="#executerequest">ExecuteRequest</a> which contains the results for a metadata query.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">ExecuteResponse</span> <span class="p">{</span>
<span class="k">repeated</span> <span class="n">ResultSetResponse</span> <span class="na">results</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">missing_statement</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="n">RpcMetadata</span> <span class="na">metadata</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">results</code> An array of <a href="#resultsetresponse">ResultSetResponse</a>s.</p>
<p><code class="highlighter-rouge">missing_statement</code> A boolean which denotes if the request failed due to a missing statement.</p>
<p><code class="highlighter-rouge">metadata</code> <a href="#rpcmetadata">Server metadata</a> about this call.</p>
<h3 id="fetchresponse">FetchResponse</h3>
<p>A response to the <a href="#fetchrequest">FetchRequest</a> which contains the request for the query.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">FetchResponse</span> <span class="p">{</span>
<span class="n">Frame</span> <span class="na">frame</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">missing_statement</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">missing_results</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="n">RpcMetadata</span> <span class="na">metadata</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">frame</code> A <a href="#frame">Frame</a> containing the results of the fetch.</p>
<p><code class="highlighter-rouge">missing_statement</code> A boolean which denotes if the request failed due to a missing Statement.</p>
<p><code class="highlighter-rouge">missing_results</code> A boolean which denotes if the request failed due to a missing ResultSet.</p>
<p><code class="highlighter-rouge">metadata</code> <a href="#rpcmetadata">Server metadata</a> about this call.</p>
<h3 id="openconnectionresponse">OpenConnectionResponse</h3>
<p>A response to the <a href="#openconnectionrequest">OpenConnectionRequest</a>. The ID for the connection that
the client should use in subsequent calls was provided by the client in the request.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">OpenConnectionResponse</span> <span class="p">{</span>
<span class="n">RpcMetadata</span> <span class="na">metadata</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">metadata</code> <a href="#rpcmetadata">Server metadata</a> about this call.</p>
<h3 id="prepareresponse">PrepareResponse</h3>
<p>A response to the <a href="#preparerequest">PrepareRequest</a>. This response includes a <a href="#statementhandle">StatementHandle</a>
which clients must use to fetch the results from the Statement.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">PrepareResponse</span> <span class="p">{</span>
<span class="n">StatementHandle</span> <span class="na">statement</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="n">RpcMetadata</span> <span class="na">metadata</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">statement</code> A <a href="#statementhandle">StatementHandle</a> object.</p>
<p><code class="highlighter-rouge">metadata</code> <a href="#rpcmetadata">Server metadata</a> about this call.</p>
<h3 id="resultsetresponse">ResultSetResponse</h3>
<p>A response which contains the results and type details from a query.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">ResultSetResponse</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">uint32</span> <span class="na">statement_id</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">own_statement</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="n">Signature</span> <span class="na">signature</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="n">Frame</span> <span class="na">first_frame</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="kt">uint64</span> <span class="na">update_count</span> <span class="o">=</span> <span class="mi">6</span><span class="p">;</span>
<span class="n">RpcMetadata</span> <span class="na">metadata</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> The identifier for the connection used to generate this response.</p>
<p><code class="highlighter-rouge">statement_id</code> The identifier for the statement used to generate this response.</p>
<p><code class="highlighter-rouge">own_statement</code> Whether the result set has its own dedicated statement. If true, the server must automatically close the
statement when the result set is closed. This is used for JDBC metadata result sets, for instance.</p>
<p><code class="highlighter-rouge">signature</code> A nested object <a href="#signature">Signature</a>. This field will only be present for queries that return data.</p>
<p><code class="highlighter-rouge">first_frame</code> A optional nested object <a href="#frame">Frame</a></p>
<p><code class="highlighter-rouge">update_count</code> A number which is always <code class="highlighter-rouge">-1</code> for normal result sets. Any other value denotes a “dummy” result set
that only contains this count and no additional data.</p>
<p><code class="highlighter-rouge">metadata</code> <a href="#rpcmetadata">Server metadata</a> about this call.</p>
<h3 id="rollbackresponse">RollbackResponse</h3>
<p>A response to the <a href="#rollbackrequest">RollBackRequest</a>.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">RollbackResponse</span> <span class="p">{</span>
<span class="p">}</span></code></pre></figure>
<p>There are no attributes on this Response.</p>
<h3 id="syncresultsresponse">SyncResultsResponse</h3>
<p>A response to the <a href="#syncresultsrequest">SyncResultsRequest</a>. When <code class="highlighter-rouge">moreResults</code> is true, a <a href="#fetchrequest">FetchRequest</a>
should be issued to get the next batch of records. When <code class="highlighter-rouge">missingStatement</code> is true, the statement must be re-created using <a href="#preparerequest">PrepareRequest</a>
or the appropriate Request for a DDL request (e.g. <a href="#catalogsrequest">CatalogsRequest</a> or <a href="#schemasrequest">SchemasRequest</a>).</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">SyncResultsResponse</span> <span class="p">{</span>
<span class="kt">bool</span> <span class="na">missing_statement</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">more_results</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="n">RpcMetadata</span> <span class="na">metadata</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">more_results</code> A boolean which denotes if results exist for the ResultSet being “synced” per the request.</p>
<p><code class="highlighter-rouge">missing_statement</code> A boolean which denotes if the statement for the ResultSet still exists.</p>
<p><code class="highlighter-rouge">metadata</code> <a href="#rpcmetadata">Server metadata</a> about this call.</p>
<h2 id="miscellaneous-1">Miscellaneous</h2>
<h3 id="avaticaparameter">AvaticaParameter</h3>
<p>This object describes the “simple”, or scalar, JDBC type representation of a column in a result. This does not include
complex types such as arrays.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">AvaticaParameter</span> <span class="p">{</span>
<span class="kt">bool</span> <span class="na">signed</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">uint32</span> <span class="na">precision</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="kt">uint32</span> <span class="na">scale</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="kt">uint32</span> <span class="na">parameter_type</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">class_name</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">class_name</span> <span class="o">=</span> <span class="mi">6</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">name</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">signed</code> A boolean denoting whether the column is a signed numeric.</p>
<p><code class="highlighter-rouge">precision</code> The maximum numeric precision supported by this column.</p>
<p><code class="highlighter-rouge">scale</code> The maximum numeric scale supported by this column.</p>
<p><code class="highlighter-rouge">parameter_type</code> An integer corresponding to the JDBC Types class denoting the column’s type.</p>
<p><code class="highlighter-rouge">type_name</code> The JDBC type name for this column.</p>
<p><code class="highlighter-rouge">class_name</code> The Java class backing the JDBC type for this column.</p>
<p><code class="highlighter-rouge">name</code> The name of the column.</p>
<h3 id="avaticaseverity">AvaticaSeverity</h3>
<p>This enumeration describes the various levels of concern for an error in the Avatica server.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">enum</span> <span class="n">Severity</span> <span class="p">{</span>
<span class="na">UNKNOWN_SEVERITY</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="na">FATAL_SEVERITY</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="na">ERROR_SEVERITY</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="na">WARNING_SEVERITY</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<h3 id="avaticatype">AvaticaType</h3>
<p>This object describes a simple or complex type for a column. Complex types will contain
additional information in the <code class="highlighter-rouge">component</code> or <code class="highlighter-rouge">columns</code> attribute which describe the nested
types of the complex parent type.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">AvaticaType</span> <span class="p">{</span>
<span class="kt">uint32</span> <span class="na">id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">name</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="n">Rep</span> <span class="na">rep</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="k">repeated</span> <span class="n">ColumnMetaData</span> <span class="na">columns</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="n">AvaticaType</span> <span class="na">component</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">type</code> One of: <code class="highlighter-rouge">scalar</code>, <code class="highlighter-rouge">array</code>, <code class="highlighter-rouge">struct</code>.</p>
<p><code class="highlighter-rouge">id</code> A numeric value corresponding to the type of the object per the JDBC Types class.</p>
<p><code class="highlighter-rouge">name</code> The readable name of the JDBC type.</p>
<p><code class="highlighter-rouge">rep</code> A nested <a href="#rep">Rep</a> object used by Avatica to hold additional type information.</p>
<p><code class="highlighter-rouge">columns</code> For <code class="highlighter-rouge">STRUCT</code> types, a list of the columns contained in that <code class="highlighter-rouge">STRUCT</code>.</p>
<p><code class="highlighter-rouge">component</code> For <code class="highlighter-rouge">ARRAY</code> types, the type of the elements contained in that <code class="highlighter-rouge">ARRAY</code>.</p>
<h3 id="columnmetadata">ColumnMetaData</h3>
<p>This object represents the JDBC ResultSetMetaData for a column.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">ColumnMetaData</span> <span class="p">{</span>
<span class="kt">uint32</span> <span class="na">ordinal</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">auto_increment</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">case_sensitive</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">searchable</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">currency</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="kt">uint32</span> <span class="na">nullable</span> <span class="o">=</span> <span class="mi">6</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">signed</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<span class="kt">uint32</span> <span class="na">display_size</span> <span class="o">=</span> <span class="mi">8</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">label</span> <span class="o">=</span> <span class="mi">9</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">column_name</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">schema_name</span> <span class="o">=</span> <span class="mi">11</span><span class="p">;</span>
<span class="kt">uint32</span> <span class="na">precision</span> <span class="o">=</span> <span class="mi">12</span><span class="p">;</span>
<span class="kt">uint32</span> <span class="na">scale</span> <span class="o">=</span> <span class="mi">13</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">table_name</span> <span class="o">=</span> <span class="mi">14</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">catalog_name</span> <span class="o">=</span> <span class="mi">15</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">read_only</span> <span class="o">=</span> <span class="mi">16</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">writable</span> <span class="o">=</span> <span class="mi">17</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">definitely_writable</span> <span class="o">=</span> <span class="mi">18</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">column_class_name</span> <span class="o">=</span> <span class="mi">19</span><span class="p">;</span>
<span class="n">AvaticaType</span> <span class="na">type</span> <span class="o">=</span> <span class="mi">20</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">ordinal</code> A positional offset number.</p>
<p><code class="highlighter-rouge">auto_increment</code> A boolean denoting whether the column is automatically incremented.</p>
<p><code class="highlighter-rouge">case_sensitive</code> A boolean denoting whether the column is case sensitive.</p>
<p><code class="highlighter-rouge">searchable</code> A boolean denoting whether this column supports all WHERE search clauses.</p>
<p><code class="highlighter-rouge">currency</code> A boolean denoting whether this column represents currency.</p>
<p><code class="highlighter-rouge">nullable</code> A number denoting whether this column supports null values.</p>
<ul>
<li>0 = No null values are allowed</li>
<li>1 = Null values are allowed</li>
<li>2 = It is unknown if null values are allowed</li>
</ul>
<p><code class="highlighter-rouge">signed</code> A boolean denoting whether the column is a signed numeric.</p>
<p><code class="highlighter-rouge">display_size</code> The character width of the column.</p>
<p><code class="highlighter-rouge">label</code> A description for this column.</p>
<p><code class="highlighter-rouge">column_name</code> The name of the column.</p>
<p><code class="highlighter-rouge">schema_name</code> The schema to which this column belongs.</p>
<p><code class="highlighter-rouge">precision</code> The maximum numeric precision supported by this column.</p>
<p><code class="highlighter-rouge">scale</code> The maximum numeric scale supported by this column.</p>
<p><code class="highlighter-rouge">table_name</code> The name of the table to which this column belongs.</p>
<p><code class="highlighter-rouge">catalog_name</code> The name of the catalog to which this column belongs.</p>
<p><code class="highlighter-rouge">type</code> A nested <a href="#avaticatype">AvaticaType</a> representing the type of the column.</p>
<p><code class="highlighter-rouge">read_only</code> A boolean denoting whether the column is read-only.</p>
<p><code class="highlighter-rouge">writable</code> A boolean denoting whether the column is possible to be updated.</p>
<p><code class="highlighter-rouge">definitely_writable</code> A boolean denoting whether the column definitely can be updated.</p>
<p><code class="highlighter-rouge">column_class_name</code> The name of the Java class backing the column’s type.</p>
<h3 id="connectionproperties">ConnectionProperties</h3>
<p>This object represents the properties for a given JDBC Connection.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">ConnectionProperties</span> <span class="p">{</span>
<span class="kt">bool</span> <span class="na">is_dirty</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">auto_commit</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">has_auto_commit</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">read_only</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">has_read_only</span> <span class="o">=</span> <span class="mi">8</span><span class="p">;</span>
<span class="kt">uint32</span> <span class="na">transaction_isolation</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">catalog</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">schema</span> <span class="o">=</span> <span class="mi">6</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">is_dirty</code> A boolean denoting if the properties have been altered.</p>
<p><code class="highlighter-rouge">auto_commit</code> A boolean denoting if autoCommit is enabled for transactions.</p>
<p><code class="highlighter-rouge">has_auto_commit</code> A boolean denoting if <code class="highlighter-rouge">auto_commit</code> was set.</p>
<p><code class="highlighter-rouge">read_only</code> A boolean denoting if a JDBC connection is read-only.</p>
<p><code class="highlighter-rouge">has_read_only</code> A boolean denoting if <code class="highlighter-rouge">read_only</code> was set.</p>
<p><code class="highlighter-rouge">transaction_isolation</code> An integer which denotes the level of transactions isolation per the JDBC
specification. This value is analogous to the values defined in <code class="highlighter-rouge">java.sql.Connection</code>.</p>
<ul>
<li>0 = Transactions are not supported</li>
<li>1 = Dirty reads, non-repeatable reads and phantom reads may occur.</li>
<li>2 = Dirty reads are prevented, but non-repeatable reads and phantom reads may occur.</li>
<li>4 = Dirty reads and non-repeatable reads are prevented, but phantom reads may occur.</li>
<li>8 = Dirty reads, non-repeatable reads, and phantom reads are all prevented.</li>
</ul>
<p><code class="highlighter-rouge">catalog</code> The name of a catalog to use when fetching connection properties.</p>
<p><code class="highlighter-rouge">schema</code> The name of the schema to use when fetching connection properties.</p>
<h3 id="cursorfactory">CursorFactory</h3>
<p>This object represents the information required to cast untyped objects into the necessary type for some results.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">CursorFactory</span> <span class="p">{</span>
<span class="kd">enum</span> <span class="n">Style</span> <span class="p">{</span>
<span class="na">OBJECT</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="na">RECORD</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="na">RECORD_PROJECTION</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="na">ARRAY</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="na">LIST</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="na">MAP</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="p">}</span>
<span class="n">Style</span> <span class="na">style</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">class_name</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="k">repeated</span> <span class="kt">string</span> <span class="na">field_names</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">style</code> A string denoting the <a href="#style">Style</a> of the contained objects.</p>
<p><code class="highlighter-rouge">class_name</code> The name of the for <code class="highlighter-rouge">RECORD</code> or <code class="highlighter-rouge">RECORD_PROJECTION</code>.</p>
<h3 id="databaseproperty">DatabaseProperty</h3>
<p>This object represents the exposed database properties for a Connection through the Avatica server.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">DatabaseProperty</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">name</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="k">repeated</span> <span class="kt">string</span> <span class="na">functions</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">name</code> The name of the database property.</p>
<p><code class="highlighter-rouge">functions</code> A collection of values for the property.</p>
<h3 id="frame">Frame</h3>
<p>This object represents a batch of results, tracking the offset into the results and whether more results still exist
to be fetched in the Avatica server.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">Frame</span> <span class="p">{</span>
<span class="kt">uint64</span> <span class="na">offset</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">done</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="k">repeated</span> <span class="n">Row</span> <span class="na">rows</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">offset</code> The starting position of these <code class="highlighter-rouge">rows</code> in the encompassing result set.</p>
<p><code class="highlighter-rouge">done</code> A boolean denoting whether more results exist for this result set.</p>
<p><code class="highlighter-rouge">rows</code> A collection of <a href="#row">Row</a>s.</p>
<h3 id="row">Row</h3>
<p>This object represents a row in a relational database table.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">Row</span> <span class="p">{</span>
<span class="k">repeated</span> <span class="n">ColumnValue</span> <span class="na">value</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">value</code> A collection of <a href="#columnvalue">ColumnValue</a>s, the columns in the row.</p>
<h3 id="columnvalue">ColumnValue</h3>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">ColumnValue</span> <span class="p">{</span>
<span class="k">repeated</span> <span class="n">TypedValue</span> <span class="na">value</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="c1">// Deprecated!
</span> <span class="k">repeated</span> <span class="n">ColumnValue</span> <span class="na">array_value</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="n">boolean</span> <span class="na">has_array_value</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="n">TypedValue</span> <span class="na">scalar_value</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">value</code> The pre Calcite-1.6 means of serializing <a href="#typedvalue">TypedValue</a>s. Not used anymore.</p>
<p><code class="highlighter-rouge">array_value</code> The value of this column if it is an array (not a scalar).</p>
<p><code class="highlighter-rouge">has_array_value</code> Should be set to true if <code class="highlighter-rouge">array_value</code> is set.</p>
<p><code class="highlighter-rouge">scalar_value</code> The value of this column if it is a scalar (not an array).</p>
<h3 id="querystate">QueryState</h3>
<p>This object represents the way a ResultSet was created in the Avatica server. A ResultSet could be created by a user-provided
SQL or by a DatabaseMetaData operation with arguments on that operation.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">QueryState</span> <span class="p">{</span>
<span class="n">StateType</span> <span class="na">type</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">sql</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="n">MetaDataOperation</span> <span class="na">op</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="k">repeated</span> <span class="n">MetaDataOperationArgument</span> <span class="na">args</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">has_args</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">has_sql</span> <span class="o">=</span> <span class="mi">6</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">has_op</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">type</code> A <a href="#statetype">StateType</a> object denoting what type of operation backs the ResultSet for this query.</p>
<p><code class="highlighter-rouge">sql</code> The SQL statement which created the ResultSet for this query. Required if the <code class="highlighter-rouge">type</code> is <code class="highlighter-rouge">SQL</code>.</p>
<p><code class="highlighter-rouge">op</code> The DML operation which created the ResultSet for this query. Required if the <code class="highlighter-rouge">type</code> is <code class="highlighter-rouge">METADATA</code>.</p>
<p><code class="highlighter-rouge">args</code> The arguments to the invoked DML operation. Required if the <code class="highlighter-rouge">type</code> is <code class="highlighter-rouge">METADATA</code>.</p>
<p><code class="highlighter-rouge">has_args</code> A boolean which denotes if the field <code class="highlighter-rouge">args</code> is provided.</p>
<p><code class="highlighter-rouge">has_sql</code> A boolean which denotes if the field <code class="highlighter-rouge">sql</code> is provided.</p>
<p><code class="highlighter-rouge">has_op</code> A boolean which denotes if the field <code class="highlighter-rouge">op</code> is provided.</p>
<h3 id="rep">Rep</h3>
<p>This enumeration represents the concrete Java type for some value.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">enum</span> <span class="n">Rep</span> <span class="p">{</span>
<span class="na">PRIMITIVE_BOOLEAN</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="na">PRIMITIVE_BYTE</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="na">PRIMITIVE_CHAR</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="na">PRIMITIVE_SHORT</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="na">PRIMITIVE_INT</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="na">PRIMITIVE_LONG</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="na">PRIMITIVE_FLOAT</span> <span class="o">=</span> <span class="mi">6</span><span class="p">;</span>
<span class="na">PRIMITIVE_DOUBLE</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<span class="na">BOOLEAN</span> <span class="o">=</span> <span class="mi">8</span><span class="p">;</span>
<span class="na">BYTE</span> <span class="o">=</span> <span class="mi">9</span><span class="p">;</span>
<span class="na">CHARACTER</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
<span class="na">SHORT</span> <span class="o">=</span> <span class="mi">11</span><span class="p">;</span>
<span class="na">INTEGER</span> <span class="o">=</span> <span class="mi">12</span><span class="p">;</span>
<span class="na">LONG</span> <span class="o">=</span> <span class="mi">13</span><span class="p">;</span>
<span class="na">FLOAT</span> <span class="o">=</span> <span class="mi">14</span><span class="p">;</span>
<span class="na">DOUBLE</span> <span class="o">=</span> <span class="mi">15</span><span class="p">;</span>
<span class="na">BIG_INTEGER</span> <span class="o">=</span> <span class="mi">25</span><span class="p">;</span>
<span class="na">BIG_DECIMAL</span> <span class="o">=</span> <span class="mi">26</span><span class="p">;</span>
<span class="na">JAVA_SQL_TIME</span> <span class="o">=</span> <span class="mi">16</span><span class="p">;</span>
<span class="na">JAVA_SQL_TIMESTAMP</span> <span class="o">=</span> <span class="mi">17</span><span class="p">;</span>
<span class="na">JAVA_SQL_DATE</span> <span class="o">=</span> <span class="mi">18</span><span class="p">;</span>
<span class="na">JAVA_UTIL_DATE</span> <span class="o">=</span> <span class="mi">19</span><span class="p">;</span>
<span class="na">BYTE_STRING</span> <span class="o">=</span> <span class="mi">20</span><span class="p">;</span>
<span class="na">STRING</span> <span class="o">=</span> <span class="mi">21</span><span class="p">;</span>
<span class="na">NUMBER</span> <span class="o">=</span> <span class="mi">22</span><span class="p">;</span>
<span class="na">OBJECT</span> <span class="o">=</span> <span class="mi">23</span><span class="p">;</span>
<span class="na">NULL</span> <span class="o">=</span> <span class="mi">24</span><span class="p">;</span>
<span class="na">ARRAY</span> <span class="o">=</span> <span class="mi">27</span><span class="p">;</span>
<span class="na">STRUCT</span> <span class="o">=</span> <span class="mi">28</span><span class="p">;</span>
<span class="na">MULTISET</span> <span class="o">=</span> <span class="mi">29</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<h3 id="rpcmetadata">RpcMetadata</h3>
<p>This object contains assorted per-call/contextual metadata returned by the Avatica server.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">RpcMetadata</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">server_address</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">serverAddress</code> The <code class="highlighter-rouge">host:port</code> of the server which created this object.</p>
<h3 id="signature">Signature</h3>
<p>This object represents the result of preparing a Statement in the Avatica server.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">Signature</span> <span class="p">{</span>
<span class="k">repeated</span> <span class="n">ColumnMetaData</span> <span class="na">columns</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">sql</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="k">repeated</span> <span class="n">AvaticaParameter</span> <span class="na">parameters</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="n">CursorFactory</span> <span class="na">cursor_factory</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="n">StatementType</span> <span class="na">statementType</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">columns</code> An array of <a href="#columnmetadata">ColumnMetaData</a> objects denoting the schema of the result set.</p>
<p><code class="highlighter-rouge">sql</code> The SQL executed.</p>
<p><code class="highlighter-rouge">parameters</code> An array of <a href="#avaticaparameter">AvaticaParameter</a> objects denoting type-specific details.</p>
<p><code class="highlighter-rouge">cursor_factory</code> An <a href="#cursorfactory">CursorFactory</a> object representing the Java representation of the frame.</p>
<p><code class="highlighter-rouge">statementType</code> The type of the statement.</p>
<h3 id="statetype">StateType</h3>
<p>This enumeration denotes whether user-provided SQL or a DatabaseMetaData operation was used to create some ResultSet.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">enum</span> <span class="n">StateType</span> <span class="p">{</span>
<span class="na">SQL</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="na">METADATA</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<h3 id="statementhandle">StatementHandle</h3>
<p>This object encapsulates all of the information of a Statement created in the Avatica server.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">StatementHandle</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">connection_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">uint32</span> <span class="na">id</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="n">Signature</span> <span class="na">signature</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">connection_id</code> The identifier of the connection to which this statement belongs.</p>
<p><code class="highlighter-rouge">id</code> The identifier of the statement.</p>
<p><code class="highlighter-rouge">signature</code> A <a href="#signature">Signature</a> object for the statement.</p>
<h3 id="statementtype">StatementType</h3>
<p>This message represents what kind the Statement is.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">enum</span> <span class="n">StatementType</span> <span class="p">{</span>
<span class="na">SELECT</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="na">INSERT</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="na">UPDATE</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="na">DELETE</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="na">UPSERT</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="na">MERGE</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="na">OTHER_DML</span> <span class="o">=</span> <span class="mi">6</span><span class="p">;</span>
<span class="na">CREATE</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<span class="na">DROP</span> <span class="o">=</span> <span class="mi">8</span><span class="p">;</span>
<span class="na">ALTER</span> <span class="o">=</span> <span class="mi">9</span><span class="p">;</span>
<span class="na">OTHER_DDL</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
<span class="na">CALL</span> <span class="o">=</span> <span class="mi">11</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<h3 id="style">Style</h3>
<p>This enumeration represents the generic “class” of type for a value. Defined within <a href="#cursorfactory">CursorFactory</a>.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">enum</span> <span class="n">Style</span> <span class="p">{</span>
<span class="na">OBJECT</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="na">RECORD</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="na">RECORD_PROJECTION</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="na">ARRAY</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="na">LIST</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="na">MAP</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<h3 id="typedvalue">TypedValue</h3>
<p>This object encapsulates the type and value for a column in a row.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">TypedValue</span> <span class="p">{</span>
<span class="n">Rep</span> <span class="na">type</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">bool_value</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="kt">string</span> <span class="na">string_value</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="kt">sint64</span> <span class="na">number_value</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="kt">bytes</span> <span class="na">bytes_value</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
<span class="kt">double</span> <span class="na">double_value</span> <span class="o">=</span> <span class="mi">6</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">null</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<span class="k">repeated</span> <span class="n">TypedValue</span> <span class="na">array_value</span> <span class="o">=</span> <span class="mi">8</span><span class="p">;</span>
<span class="n">Rep</span> <span class="na">component_type</span> <span class="o">=</span> <span class="mi">9</span><span class="p">;</span>
<span class="kt">bool</span> <span class="na">implicitly_null</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">type</code> A name referring to which attribute is populated with the column’s value.</p>
<p><code class="highlighter-rouge">bool_value</code> A boolean value.</p>
<p><code class="highlighter-rouge">string_value</code> A character/string value.</p>
<p><code class="highlighter-rouge">number_value</code> A numeric value (non-<code class="highlighter-rouge">double</code>).</p>
<p><code class="highlighter-rouge">bytes_value</code> A byte-array value.</p>
<p><code class="highlighter-rouge">double_value</code> A <code class="highlighter-rouge">double</code> value.</p>
<p><code class="highlighter-rouge">null</code> A boolean which denotes if the value was null.</p>
<p><code class="highlighter-rouge">array_value</code> A repetition of TypedValue messages, each of which are an element of an array_value (recursive)</p>
<p><code class="highlighter-rouge">component_type</code> When this TypedValue represents an Array, this is the Array type’s representation.</p>
<p><code class="highlighter-rouge">implicitly_null</code> A boolean to differentiate between explicitly (user-set) and implicitly null (user un-set) values</p>
<p>The following chart documents how each <a href="#rep">Rep</a> value corresponds
to the attributes in this message:</p>
<table>
<tbody>
<tr>
<td><a href="#rep">Rep</a> Value</td>
<td><a href="#typedvalue">TypedValue</a> attribute</td>
<td>Description</td>
</tr>
<tr>
<td>PRIMITIVE_BOOLEAN</td>
<td><code class="highlighter-rouge">bool_value</code></td>
<td> </td>
</tr>
<tr>
<td>BOOLEAN</td>
<td><code class="highlighter-rouge">bool_value</code></td>
<td> </td>
</tr>
<tr>
<td>PRIMITIVE_BYTE</td>
<td><code class="highlighter-rouge">number_value</code></td>
<td>The numeric value of the <code class="highlighter-rouge">byte</code>.</td>
</tr>
<tr>
<td>BYTE</td>
<td><code class="highlighter-rouge">number_value</code></td>
<td> </td>
</tr>
<tr>
<td>PRIMITIVE_CHAR</td>
<td><code class="highlighter-rouge">string_value</code></td>
<td> </td>
</tr>
<tr>
<td>CHARACTER</td>
<td><code class="highlighter-rouge">string_value</code></td>
<td> </td>
</tr>
<tr>
<td>PRIMITIVE_SHORT</td>
<td><code class="highlighter-rouge">number_value</code></td>
<td> </td>
</tr>
<tr>
<td>SHORT</td>
<td><code class="highlighter-rouge">number_value</code></td>
<td> </td>
</tr>
<tr>
<td>PRIMITIVE_INT</td>
<td><code class="highlighter-rouge">number_value</code></td>
<td> </td>
</tr>
<tr>
<td>INTEGER</td>
<td><code class="highlighter-rouge">number_value</code></td>
<td> </td>
</tr>
<tr>
<td>PRIMITIVE_LONG</td>
<td><code class="highlighter-rouge">number_value</code></td>
<td> </td>
</tr>
<tr>
<td>LONG</td>
<td><code class="highlighter-rouge">number_value</code></td>
<td> </td>
</tr>
<tr>
<td>PRIMITIVE_FLOAT</td>
<td><code class="highlighter-rouge">number_value</code></td>
<td> </td>
</tr>
<tr>
<td>FLOAT</td>
<td><code class="highlighter-rouge">number_value</code></td>
<td>IEEE 754 floating-point “single format” bit layout.</td>
</tr>
<tr>
<td>PRIMITIVE_DOUBLE</td>
<td><code class="highlighter-rouge">number_value</code></td>
<td> </td>
</tr>
<tr>
<td>DOUBLE</td>
<td><code class="highlighter-rouge">number_value</code></td>
<td> </td>
</tr>
<tr>
<td>BIG_INTEGER</td>
<td><code class="highlighter-rouge">bytes_value</code></td>
<td>The two’s-complement representation of the BigInteger. See <code class="highlighter-rouge">BigInteger#toByteArray().</code></td>
</tr>
<tr>
<td>BIG_DECIMAL</td>
<td><code class="highlighter-rouge">string_value</code></td>
<td>A string-ified representation of the value. See <code class="highlighter-rouge">BigDecimal#toString()</code>.</td>
</tr>
<tr>
<td>JAVA_SQL_TIME</td>
<td><code class="highlighter-rouge">number_value</code></td>
<td>As an integer, milliseconds since midnight.</td>
</tr>
<tr>
<td>JAVA_SQL_DATE</td>
<td><code class="highlighter-rouge">number_value</code></td>
<td>As an integer, the number of days since the epoch.</td>
</tr>
<tr>
<td>JAVA_SQL_TIMESTAMP</td>
<td><code class="highlighter-rouge">number_value</code></td>
<td>As a long, milliseconds since the epoch.</td>
</tr>
<tr>
<td>JAVA_UTIL_DATE</td>
<td><code class="highlighter-rouge">number_value</code></td>
<td>As a long, milliseconds since the epoch.</td>
</tr>
<tr>
<td>BYTE_STRING</td>
<td><code class="highlighter-rouge">bytes_value</code></td>
<td> </td>
</tr>
<tr>
<td>STRING</td>
<td><code class="highlighter-rouge">string_value</code></td>
<td>This must be a UTF-8 string.</td>
</tr>
<tr>
<td>NUMBER</td>
<td><code class="highlighter-rouge">number_value</code></td>
<td>A general number, unknown what concrete type.</td>
</tr>
<tr>
<td>OBJECT</td>
<td><code class="highlighter-rouge">null</code></td>
<td>The only general Object we can serialize is “null”. Non-null OBJECT’s will throw an error.</td>
</tr>
<tr>
<td>NULL</td>
<td><code class="highlighter-rouge">null</code></td>
<td> </td>
</tr>
<tr>
<td>ARRAY</td>
<td>N/A</td>
<td>Unhandled.</td>
</tr>
<tr>
<td>STRUCT</td>
<td>N/A</td>
<td>Unhandled.</td>
</tr>
<tr>
<td>MULTISET</td>
<td>N/A</td>
<td>Unhandled.</td>
</tr>
</tbody>
</table>
<h3 id="updatebatch">UpdateBatch</h3>
<p>This is a message which serves as a wrapper around a collection of <a href="#typedvalue">TypedValue</a>’s.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">UpdateBatch</span> <span class="p">{</span>
<span class="k">repeated</span> <span class="n">TypedValue</span> <span class="na">parameter_values</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">parameter_values</code> A collection of parameter values for one SQL command update.</p>
<h3 id="wiremessage">WireMessage</h3>
<p>This message wraps all <code class="highlighter-rouge">Request</code>s and <code class="highlighter-rouge">Response</code>s.</p>
<figure class="highlight"><pre><code class="language-protobuf" data-lang="protobuf"><span class="kd">message</span> <span class="nc">WireMessage</span> <span class="p">{</span>
<span class="kt">string</span> <span class="na">name</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="kt">bytes</span> <span class="na">wrapped_message</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
<p><code class="highlighter-rouge">name</code> The Java class name of the wrapped message.</p>
<p><code class="highlighter-rouge">wrapped_message</code> A serialized representation of the wrapped message of the same type specified by <code class="highlighter-rouge">name</code>.</p>
<div class="section-nav">
<div class="left align-right">
<a href="/avatica/docs/json_reference.html" class="prev">Previous</a>
</div>
<div class="right align-left">
<a href="/avatica/docs/howto.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=""><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="current"><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>