Protocol Buffers Reference
Avatica also supports Protocol Buffers 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.
Other notable structural differences to JSON include the addition of a
WireMessage
message which is used to identify the type of the wrapped message
returned by the server (synonymous with request
or response
attribute on the
JSON messages) and a change to TypedValue
containing an Object
value to
a collection of optional strongly-typed values (as protobuf does not natively
support an Object
type that is unwrapped at runtime).
Unless otherwise specified with use of the required
modifier, all fields in
all protocol buffer messages are optional
by default.
Index
Requests
- CatalogsRequest
- CloseConnectionRequest
- CloseStatementRequest
- ColumnsRequest
- CommitRequest
- ConnectionSyncRequest
- CreateStatementRequest
- DatabasePropertyRequest
- ExecuteBatchRequest
- ExecuteRequest
- FetchRequest
- OpenConnectionRequest
- PrepareAndExecuteBatchRequest
- PrepareAndExecuteRequest
- PrepareRequest
- RollbackRequest
- SchemasRequest
- SyncResultsRequest
- TableTypesRequest
- TablesRequest
- TypeInfoRequest
Responses
- CloseConnectionResponse
- CloseStatementResponse
- CommitResponse
- ConnectionSyncResponse
- CreateStatementResponse
- DatabasePropertyResponse
- ErrorResponse
- ExecuteBatchResponse
- ExecuteResponse
- FetchResponse
- OpenConnectionResponse
- PrepareResponse
- ResultSetResponse
- RollbackResponse
- SyncResultsResponse
Miscellaneous
- AvaticaParameter
- AvaticaSeverity
- AvaticaType
- ColumnMetaData
- ColumnValue
- ConnectionProperties
- CursorFactory
- DatabaseProperty
- Frame
- QueryState
- Rep
- Row
- RpcMetadata
- Signature
- StateType
- StatementHandle
- StatementType
- Style
- TypedValue
- UpdateBatch
- WireMessage
Requests
The collection of all protobuf objects accepted as requests to Avatica. All request
objects should be wrapped in a WireMessage
before being sent to Avatica.
CatalogsRequest
This request is used to fetch the available catalog names in the database.
connection_id
The identifier for the connection to use.
CloseConnectionRequest
This request is used to close the Connection object in the Avatica server identified by the given IDs.
connection_id
The identifier of the connection to close.
CloseStatementRequest
This request is used to close the Statement object in the Avatica server identified by the given IDs.
connection_id
The identifier of the connection to which the statement belongs.
statement_id
The identifier of the statement to close.
ColumnsRequest
This request is used to fetch columns in the database given some optional filtering criteria.
catalog
The name of a catalog to limit returned columns.
schema_pattern
A Java Pattern against schemas to limit returned columns.
table_name_pattern
A Java Pattern against table names to limit returned columns.
column_name_pattern
A Java Pattern against column names to limit returned columns.
connection_id
The identifier of the connection which to use to fetch the columns.
has_catalog
A boolean denoting if catalog
was set.
has_schema_pattern
A boolean denoting if schema_pattern
was set.
has_table_name_pattern
A boolean denoting if table_name_pattern
was set.
has_column_name_pattern
A boolean denoting if column_name_pattern
was set.
CommitRequest
This request is used to issue a commit
on the Connection in the Avatica server identified by the given ID.
connection_id
The identifier of the connection on which to invoke commit.
ConnectionSyncRequest
This request is used to ensure that the client and server have a consistent view of the database properties.
connection_id
The identifier of the connection to synchronize.
conn_props
A ConnectionProperties object to synchronize between the client and server.
CreateStatementRequest
This request is used to create a new Statement in the Avatica server.
connection_id
The identifier of the connection to use in creating a statement.
DatabasePropertyRequest
This request is used to fetch all database properties.
connection_id
The identifier of the connection to use when fetching the database properties.
ExecuteBatchRequest
This request is used to execute a batch of updates against a PreparedStatement.
connection_id
A string which refers to a connection.
statement_id
An integer which refers to a statement.
updates
A list of UpdateBatch’s; the batch of updates.
ExecuteRequest
This request is used to execute a PreparedStatement, optionally with values to bind to the parameters in the Statement.
statementHandle
A StatementHandle object.
parameter_values
The TypedValue for each parameter on the prepared statement.
deprecated_first_frame_max_size
Deprecated, use first_frame_max_size
instead. Previously, the maximum number of rows returned in the response.
has_parameter_values
A boolean which denotes if the user set a value for the parameter_values
field.
first_frame_max_size
The maximum number of rows to return in the first Frame
.
FetchRequest
This request is used to fetch a batch of rows from a Statement previously created.
connection_id
The identifier of the connection to use.
statement_id
The identifier of the statement created using the above connection.
offset
The positional offset into a result set to fetch.
fetch_match_row_count
The maximum number of rows to return in the response to this request. Negative means no limit. Deprecated, use frame_max_size
.
frame_max_size
The maximum number of rows to return in the response. Negative means no limit.
OpenConnectionRequest
This request is used to open a new Connection in the Avatica server.
connection_id
The identifier of the connection to open in the server.
info
A Map containing properties to include when creating the Connection.
PrepareAndExecuteBatchRequest
This request is used as short-hand to create a Statement and execute a batch of updates against that Statement.
connection_id
The identifier for the connection to use.
statement_id
The identifier for the statement created by the above connection to use.
sql_commands
A list of SQL commands to execute; a batch.
PrepareAndExecuteRequest
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.
connection_id
The identifier for the connection to use.
statement_id
The identifier for the statement created by the above connection to use.
sql
A SQL statement
max_row_count
The maximum number of rows returned in the response. Deprecated, use max_rows_total
.
max_rows_total
The maximum number of rows which this query should return (over all Frame
s).
first_frame_max_size
The maximum number of rows which should be included in the first Frame
in the ExecuteResponse
.
PrepareRequest
This request is used to create create a new Statement with the given query in the Avatica server.
connection_id
The identifier for the connection to use.
sql
A SQL statement
max_row_count
The maximum number of rows returned in the response. Deprecated, use max_rows_total
instead.
max_rows_total
The maximum number of rows returned for the query in total.
SyncResultsRequest
This request is used to reset a ResultSet’s iterator to a specific offset in the Avatica server.
connection_id
The identifier for the connection to use.
statement_id
The identifier for the statement to use.
state
The QueryState object.
offset
The offset into the ResultSet to seek to.
RollbackRequest
This request is used to issue a rollback
on the Connection in the Avatica server identified by the given ID.
connection_id
The identifier for the connection on which to invoke rollback.
SchemasRequest
This request is used to fetch the schemas matching the provided criteria in the database.
catalog
The name of the catalog to fetch the schema from.
schema_pattern
A Java pattern of schemas to fetch.
connection_id
The identifier for the connection to fetch schemas from.
has_catalog
A boolean denoting if catalog
was set.
has_schema_pattern
A boolean denoting if schema_pattern
was set.
TableTypesRequest
This request is used to fetch the table types available in this database.
connection_id
The identifier of the connection to fetch the table types from.
TablesRequest
This request is used to fetch the tables available in this database filtered by the provided criteria.
catalog
The name of a catalog to restrict fetched tables.
schema_pattern
A Java Pattern representing schemas to include in fetched tables.
table_name_pattern
A Java Pattern representing table names to include in fetched tables.
type_list
A list of table types used to restrict fetched tables.
has_type_list
A boolean which denotes if the field type_list
was provided.
connection_id
The identifier of the connection to fetch the tables from.
has_catalog
A boolean denoting if catalog
was set.
has_schema_pattern
A boolean denoting if schema_pattern
was set.
has_table_name_pattern
A boolean denoting if table_name_pattern
was set.
TypeInfoRequest
This request is used to fetch the types available in this database.
connection_id
The identifier of the connection to fetch the types from.
Responses
The collection of all protobuf objects accepted as requests to Avatica. All response
objects will be wrapped in a WireMessage
before being returned from Avatica.
CloseConnectionResponse
A response to the CloseConnectionRequest.
metadata
Server metadata about this call.
CloseStatementResponse
A response to the CloseStatementRequest.
metadata
Server metadata about this call.
CommitResponse
A response to the CommitRequest.
There are no attributes on this Response.
ConnectionSyncResponse
A response to the ConnectionSyncRequest. Properties included in the response are those of the Connection in the Avatica server.
conn_props
The ConnectionProperties that were synchronized.
metadata
Server metadata about this call.
CreateStatementResponse
A response to the CreateStatementRequest. The ID of the statement
that was created is included in the response. Clients will use this statement_id
in subsequent calls.
connection_id
The identifier for the connection used to create the statement.
statement_id
The identifier for the created statement.
metadata
Server metadata about this call.
DatabasePropertyResponse
A response to the DatabasePropertyRequest. See DatabaseProperty for information on the available property keys.
props
A collection of DatabaseProperty’s.
metadata
Server metadata about this call.
ErrorResponse
A response when an error was caught executing a request. Any request may return this response.
exceptions
A list of stringified Java StackTraces.
has_exceptions
A boolean which denotes the presence of exceptions
.
error_message
A human-readable error message.
error_code
A numeric code for this error.
sql_state
A five character alphanumeric code for this error.
severity
An AvaticaSeverity object which denotes how critical the error is.
metadata
Server metadata about this call.
ExecuteBatchResponse
A response to the ExecuteBatchRequest and PrepareAndExecuteBatchRequest.
connection_id
The ID referring to the connection that was used.
statment_id
The ID referring to the statement that was used.
update_counts
An array of integer values corresponding to the update count for each update in the batch.
missing_statement
A boolean which denotes if the request failed due to a missing statement.
metadata
Server metadata about this call.
ExecuteResponse
A response to the ExecuteRequest which contains the results for a metadata query.
results
An array of ResultSetResponses.
missing_statement
A boolean which denotes if the request failed due to a missing statement.
metadata
Server metadata about this call.
FetchResponse
A response to the FetchRequest which contains the request for the query.
frame
A Frame containing the results of the fetch.
missing_statement
A boolean which denotes if the request failed due to a missing Statement.
missing_results
A boolean which denotes if the request failed due to a missing ResultSet.
metadata
Server metadata about this call.
OpenConnectionResponse
A response to the OpenConnectionRequest. The ID for the connection that the client should use in subsequent calls was provided by the client in the request.
metadata
Server metadata about this call.
PrepareResponse
A response to the PrepareRequest. This response includes a StatementHandle which clients must use to fetch the results from the Statement.
statement
A StatementHandle object.
metadata
Server metadata about this call.
ResultSetResponse
A response which contains the results and type details from a query.
connection_id
The identifier for the connection used to generate this response.
statement_id
The identifier for the statement used to generate this response.
own_statement
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.
signature
A nested object Signature. This field will only be present for queries that return data.
first_frame
A optional nested object Frame
update_count
A number which is always -1
for normal result sets. Any other value denotes a “dummy” result set
that only contains this count and no additional data.
metadata
Server metadata about this call.
RollbackResponse
A response to the RollBackRequest.
There are no attributes on this Response.
SyncResultsResponse
A response to the SyncResultsRequest. When moreResults
is true, a FetchRequest
should be issued to get the next batch of records. When missingStatement
is true, the statement must be re-created using PrepareRequest
or the appropriate Request for a DDL request (e.g. CatalogsRequest or SchemasRequest).
more_results
A boolean which denotes if results exist for the ResultSet being “synced” per the request.
missing_statement
A boolean which denotes if the statement for the ResultSet still exists.
metadata
Server metadata about this call.
Miscellaneous
AvaticaParameter
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.
signed
A boolean denoting whether the column is a signed numeric.
precision
The maximum numeric precision supported by this column.
scale
The maximum numeric scale supported by this column.
parameter_type
An integer corresponding to the JDBC Types class denoting the column’s type.
type_name
The JDBC type name for this column.
class_name
The Java class backing the JDBC type for this column.
name
The name of the column.
AvaticaSeverity
This enumeration describes the various levels of concern for an error in the Avatica server.
AvaticaType
This object describes a simple or complex type for a column. Complex types will contain
additional information in the component
or columns
attribute which describe the nested
types of the complex parent type.
type
One of: scalar
, array
, struct
.
id
A numeric value corresponding to the type of the object per the JDBC Types class.
name
The readable name of the JDBC type.
rep
A nested Rep object used by Avatica to hold additional type information.
columns
For STRUCT
types, a list of the columns contained in that STRUCT
.
component
For ARRAY
types, the type of the elements contained in that ARRAY
.
ColumnMetaData
This object represents the JDBC ResultSetMetaData for a column.
ordinal
A positional offset number.
auto_increment
A boolean denoting whether the column is automatically incremented.
case_sensitive
A boolean denoting whether the column is case sensitive.
searchable
A boolean denoting whether this column supports all WHERE search clauses.
currency
A boolean denoting whether this column represents currency.
nullable
A number denoting whether this column supports null values.
- 0 = No null values are allowed
- 1 = Null values are allowed
- 2 = It is unknown if null values are allowed
signed
A boolean denoting whether the column is a signed numeric.
display_size
The character width of the column.
label
A description for this column.
column_name
The name of the column.
schema_name
The schema to which this column belongs.
precision
The maximum numeric precision supported by this column.
scale
The maximum numeric scale supported by this column.
table_name
The name of the table to which this column belongs.
catalog_name
The name of the catalog to which this column belongs.
type
A nested AvaticaType representing the type of the column.
read_only
A boolean denoting whether the column is read-only.
writable
A boolean denoting whether the column is possible to be updated.
definitely_writable
A boolean denoting whether the column definitely can be updated.
column_class_name
The name of the Java class backing the column’s type.
ConnectionProperties
This object represents the properties for a given JDBC Connection.
is_dirty
A boolean denoting if the properties have been altered. This field should not be present as it
never and will be removed from the protocol in future releases.
auto_commit
A boolean denoting if autoCommit is enabled for transactions.
has_auto_commit
A boolean denoting if auto_commit
was set.
read_only
A boolean denoting if a JDBC connection is read-only.
has_read_only
A boolean denoting if read_only
was set.
transaction_isolation
An integer which denotes the level of transactions isolation per the JDBC
specification. This value is analogous to the values defined in java.sql.Connection
.
- 0 = Transactions are not supported
- 1 = Dirty reads, non-repeatable reads and phantom reads may occur.
- 2 = Dirty reads are prevented, but non-repeatable reads and phantom reads may occur.
- 4 = Dirty reads and non-repeatable reads are prevented, but phantom reads may occur.
- 8 = Dirty reads, non-repeatable reads, and phantom reads are all prevented.
catalog
The name of a catalog to use when fetching connection properties.
schema
The name of the schema to use when fetching connection properties.
CursorFactory
This object represents the information required to cast untyped objects into the necessary type for some results.
style
A string denoting the Style of the contained objects.
class_name
The name of the for RECORD
or RECORD_PROJECTION
.
DatabaseProperty
This object represents the exposed database properties for a Connection through the Avatica server.
name
The name of the database property.
functions
A collection of values for the property.
Frame
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.
offset
The starting position of these rows
in the encompassing result set.
done
A boolean denoting whether more results exist for this result set.
rows
A collection of Rows.
Row
This object represents a row in a relational database table.
value
A collection of ColumnValues, the columns in the row.
ColumnValue
value
The pre Calcite-1.6 means of serializing TypedValues. Not used anymore.
array_value
The value of this column if it is an array (not a scalar).
has_array_value
Should be set to true if array_value
is set.
scalar_value
The value of this column if it is a scalar (not an array).
QueryState
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.
type
A StateType object denoting what type of operation backs the ResultSet for this query.
sql
The SQL statement which created the ResultSet for this query. Required if the type
is SQL
.
op
The DML operation which created the ResultSet for this query. Required if the type
is METADATA
.
args
The arguments to the invoked DML operation. Required if the type
is METADATA
.
has_args
A boolean which denotes if the field args
is provided.
has_sql
A boolean which denotes if the field sql
is provided.
has_op
A boolean which denotes if the field op
is provided.
Rep
This enumeration represents the concrete Java type for some value.
RpcMetadata
This object contains assorted per-call/contextual metadata returned by the Avatica server.
serverAddress
The host:port
of the server which created this object.
Signature
This object represents the result of preparing a Statement in the Avatica server.
columns
An array of ColumnMetaData objects denoting the schema of the result set.
sql
The SQL executed.
parameters
An array of AvaticaParameter objects denoting type-specific details.
cursor_factory
An CursorFactory object representing the Java representation of the frame.
statementType
The type of the statement.
StateType
This enumeration denotes whether user-provided SQL or a DatabaseMetaData operation was used to create some ResultSet.
StatementHandle
This object encapsulates all of the information of a Statement created in the Avatica server.
connection_id
The identifier of the connection to which this statement belongs.
id
The identifier of the statement.
signature
A Signature object for the statement.
StatementType
This message represents what kind the Statement is.
Style
This enumeration represents the generic “class” of type for a value. Defined within CursorFactory.
TypedValue
This object encapsulates the type and value for a column in a row.
type
A name referring to which attribute is populated with the column’s value.
bool_value
A boolean value.
string_value
A character/string value.
number_value
A numeric value (non-double
).
bytes_value
A byte-array value.
double_value
A double
value.
null
A boolean which denotes if the value was null.
array_value
A repetition of TypedValue messages, each of which are an element of an array_value (recursive)
component_type
When this TypedValue represents an Array, this is the Array type’s representation.
implicitly_null
A boolean to differentiate between explicitly (user-set) and implicitly null (user un-set) values
The following chart documents how each Rep value corresponds to the attributes in this message:
Rep Value | TypedValue attribute | Description |
PRIMITIVE_BOOLEAN | bool_value |
|
BOOLEAN | bool_value |
|
PRIMITIVE_BYTE | number_value |
The numeric value of the byte . |
BYTE | number_value |
|
PRIMITIVE_CHAR | string_value |
|
CHARACTER | string_value |
|
PRIMITIVE_SHORT | number_value |
|
SHORT | number_value |
|
PRIMITIVE_INT | number_value |
|
INTEGER | number_value |
|
PRIMITIVE_LONG | number_value |
|
LONG | number_value |
|
PRIMITIVE_FLOAT | number_value |
|
FLOAT | number_value |
IEEE 754 floating-point “single format” bit layout. |
PRIMITIVE_DOUBLE | number_value |
|
DOUBLE | number_value |
|
BIG_INTEGER | bytes_value |
The two’s-complement representation of the BigInteger. See BigInteger#toByteArray(). |
BIG_DECIMAL | string_value |
A string-ified representation of the value. See BigDecimal#toString() . |
JAVA_SQL_TIME | number_value |
As an integer, milliseconds since midnight. |
JAVA_SQL_DATE | number_value |
As an integer, the number of days since the epoch. |
JAVA_SQL_TIMESTAMP | number_value |
As a long, milliseconds since the epoch. |
JAVA_UTIL_DATE | number_value |
As a long, milliseconds since the epoch. |
BYTE_STRING | bytes_value |
|
STRING | string_value |
This must be a UTF-8 string. |
NUMBER | number_value |
A general number, unknown what concrete type. |
OBJECT | null |
The only general Object we can serialize is “null”. Non-null OBJECT’s will throw an error. |
NULL | null |
|
ARRAY | N/A | Unhandled. |
STRUCT | N/A | Unhandled. |
MULTISET | N/A | Unhandled. |
UpdateBatch
This is a message which serves as a wrapper around a collection of TypedValue’s.
parameter_values
A collection of parameter values for one SQL command update.
WireMessage
This message wraps all Request
s and Response
s.
name
The Java class name of the wrapped message.
wrapped_message
A serialized representation of the wrapped message of the same type specified by name
.