blob: 04d0a857caba7e950b60b8c0e9681f571233b4c4 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to you under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
syntax = "proto3";
option java_package = "org.apache.calcite.avatica.proto";
// Details about a connection
message ConnectionProperties {
bool is_dirty = 1;
bool auto_commit = 2;
bool has_auto_commit = 7; // field is a Boolean, need to discern null and default value
bool read_only = 3;
bool has_read_only = 8; // field is a Boolean, need to discern null and default value
uint32 transaction_isolation = 4;
string catalog = 5;
string schema = 6;
}
// Statement handle
message StatementHandle {
string connection_id = 1;
uint32 id = 2;
Signature signature = 3;
}
// Results of preparing a statement
message Signature {
repeated ColumnMetaData columns = 1;
string sql = 2;
repeated AvaticaParameter parameters = 3;
CursorFactory cursor_factory = 4;
StatementType statementType = 5;
}
// Has to be consistent with Meta.StatementType
enum StatementType {
SELECT = 0;
INSERT = 1;
UPDATE = 2;
DELETE = 3;
UPSERT = 4;
MERGE = 5;
OTHER_DML = 6;
CREATE = 7;
DROP = 8;
ALTER = 9;
OTHER_DDL = 10;
CALL = 11;
}
message ColumnMetaData {
uint32 ordinal = 1;
bool auto_increment = 2;
bool case_sensitive = 3;
bool searchable = 4;
bool currency = 5;
uint32 nullable = 6;
bool signed = 7;
uint32 display_size = 8;
string label = 9;
string column_name = 10;
string schema_name = 11;
uint32 precision = 12;
uint32 scale = 13;
string table_name = 14;
string catalog_name = 15;
bool read_only = 16;
bool writable = 17;
bool definitely_writable = 18;
string column_class_name = 19;
AvaticaType type = 20;
}
enum Rep {
PRIMITIVE_BOOLEAN = 0;
PRIMITIVE_BYTE = 1;
PRIMITIVE_CHAR = 2;
PRIMITIVE_SHORT = 3;
PRIMITIVE_INT = 4;
PRIMITIVE_LONG = 5;
PRIMITIVE_FLOAT = 6;
PRIMITIVE_DOUBLE = 7;
BOOLEAN = 8;
BYTE = 9;
CHARACTER = 10;
SHORT = 11;
INTEGER = 12;
LONG = 13;
FLOAT = 14;
DOUBLE = 15;
BIG_INTEGER = 25;
BIG_DECIMAL = 26;
JAVA_SQL_TIME = 16;
JAVA_SQL_TIMESTAMP = 17;
JAVA_SQL_DATE = 18;
JAVA_UTIL_DATE = 19;
BYTE_STRING = 20;
STRING = 21;
NUMBER = 22;
OBJECT = 23;
NULL = 24;
ARRAY = 27;
STRUCT = 28;
MULTISET = 29;
}
// Base class for a column type
message AvaticaType {
uint32 id = 1;
string name = 2;
Rep rep = 3;
repeated ColumnMetaData columns = 4; // Only present when name = STRUCT
AvaticaType component = 5; // Only present when name = ARRAY
}
// Metadata for a parameter
message AvaticaParameter {
bool signed = 1;
uint32 precision = 2;
uint32 scale = 3;
uint32 parameter_type = 4;
string type_name = 5;
string class_name = 6;
string name = 7;
}
// Information necessary to convert an Iterable into a Calcite Cursor
message CursorFactory {
enum Style {
OBJECT = 0;
RECORD = 1;
RECORD_PROJECTION = 2;
ARRAY = 3;
LIST = 4;
MAP = 5;
}
Style style = 1;
string class_name = 2;
repeated string field_names = 3;
}
// A collection of rows
message Frame {
uint64 offset = 1;
bool done = 2;
repeated Row rows = 3;
}
// A row is a collection of values
message Row {
repeated ColumnValue value = 1;
}
// Database property, list of functions the database provides for a certain operation
message DatabaseProperty {
string name = 1;
repeated string functions = 2;
}
// Message which encapsulates another message to support a single RPC endpoint
message WireMessage {
string name = 1;
bytes wrapped_message = 2;
}
// A value might be a TypedValue or an Array of TypedValue's
message ColumnValue {
repeated TypedValue value = 1; // deprecated, use array_value or scalar_value
repeated TypedValue array_value = 2;
bool has_array_value = 3; // Is an array value set?
TypedValue scalar_value = 4;
}
// Generic wrapper to support any SQL type. Struct-like to work around no polymorphism construct.
message TypedValue {
Rep type = 1; // The actual type that was serialized in the general attribute below
bool bool_value = 2; // boolean
string string_value = 3; // char/varchar
sint64 number_value = 4; // var-len encoding lets us shove anything from byte to long
// includes numeric types and date/time types.
bytes bytes_value = 5; // binary/varbinary
double double_value = 6; // big numbers
bool null = 7; // a null object
repeated TypedValue array_value = 8; // The Array
Rep component_type = 9; // If an Array, the representation for the array values
bool implicitly_null = 10; // Differentiate between explicitly null (user-set) and implicitly null
// (un-set by the user)
}
// The severity of some unexpected outcome to an operation.
// Protobuf enum values must be unique across all other enums
enum Severity {
UNKNOWN_SEVERITY = 0;
FATAL_SEVERITY = 1;
ERROR_SEVERITY = 2;
WARNING_SEVERITY = 3;
}
// Enumeration corresponding to DatabaseMetaData operations
enum MetaDataOperation {
GET_ATTRIBUTES = 0;
GET_BEST_ROW_IDENTIFIER = 1;
GET_CATALOGS = 2;
GET_CLIENT_INFO_PROPERTIES = 3;
GET_COLUMN_PRIVILEGES = 4;
GET_COLUMNS = 5;
GET_CROSS_REFERENCE = 6;
GET_EXPORTED_KEYS = 7;
GET_FUNCTION_COLUMNS = 8;
GET_FUNCTIONS = 9;
GET_IMPORTED_KEYS = 10;
GET_INDEX_INFO = 11;
GET_PRIMARY_KEYS = 12;
GET_PROCEDURE_COLUMNS = 13;
GET_PROCEDURES = 14;
GET_PSEUDO_COLUMNS = 15;
GET_SCHEMAS = 16;
GET_SCHEMAS_WITH_ARGS = 17;
GET_SUPER_TABLES = 18;
GET_SUPER_TYPES = 19;
GET_TABLE_PRIVILEGES = 20;
GET_TABLES = 21;
GET_TABLE_TYPES = 22;
GET_TYPE_INFO = 23;
GET_UDTS = 24;
GET_VERSION_COLUMNS = 25;
}
// Represents the breadth of arguments to DatabaseMetaData functions
message MetaDataOperationArgument {
enum ArgumentType {
STRING = 0;
BOOL = 1;
INT = 2;
REPEATED_STRING = 3;
REPEATED_INT = 4;
NULL = 5;
}
string string_value = 1;
bool bool_value = 2;
sint32 int_value = 3;
repeated string string_array_values = 4;
repeated sint32 int_array_values = 5;
ArgumentType type = 6;
}
enum StateType {
SQL = 0;
METADATA = 1;
}
message QueryState {
StateType type = 1;
string sql = 2;
MetaDataOperation op = 3;
repeated MetaDataOperationArgument args = 4;
bool has_args = 5;
bool has_sql = 6;
bool has_op = 7;
}