| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183 |
- // 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.
- // Coding Conventions for this file:
- //
- // Structs/Enums/Unions
- // * Struct, Enum, and Union names begin with a "T",
- // and use a capital letter for each new word, with no underscores.
- // * All fields should be declared as either optional or required.
- //
- // Functions
- // * Function names start with a capital letter and have a capital letter for
- // each new word, with no underscores.
- // * Each function should take exactly one parameter, named TFunctionNameReq,
- // and should return either void or TFunctionNameResp. This convention allows
- // incremental updates.
- //
- // Services
- // * Service names begin with the letter "T", use a capital letter for each
- // new word (with no underscores), and end with the word "Service".
- namespace java org.apache.hive.service.cli.thrift
- namespace cpp apache.hive.service.cli.thrift
- // List of protocol versions. A new token should be
- // added to the end of this list every time a change is made.
- enum TProtocolVersion {
- HIVE_CLI_SERVICE_PROTOCOL_V1,
-
- // V2 adds support for asynchronous execution
- HIVE_CLI_SERVICE_PROTOCOL_V2,
- // V3 add varchar type, primitive type qualifiers
- HIVE_CLI_SERVICE_PROTOCOL_V3,
- // V4 add decimal precision/scale, char type
- HIVE_CLI_SERVICE_PROTOCOL_V4,
- // V5 adds error details when GetOperationStatus returns in error state
- HIVE_CLI_SERVICE_PROTOCOL_V5,
- // V6 uses binary type for binary payload (was string) and uses columnar result set
- HIVE_CLI_SERVICE_PROTOCOL_V6,
- // V7 adds support for delegation token based connection
- HIVE_CLI_SERVICE_PROTOCOL_V7
- }
- enum TTypeId {
- BOOLEAN_TYPE,
- TINYINT_TYPE,
- SMALLINT_TYPE,
- INT_TYPE,
- BIGINT_TYPE,
- FLOAT_TYPE,
- DOUBLE_TYPE,
- STRING_TYPE,
- TIMESTAMP_TYPE,
- BINARY_TYPE,
- ARRAY_TYPE,
- MAP_TYPE,
- STRUCT_TYPE,
- UNION_TYPE,
- USER_DEFINED_TYPE,
- DECIMAL_TYPE,
- NULL_TYPE,
- DATE_TYPE,
- VARCHAR_TYPE,
- CHAR_TYPE
- }
-
- const set<TTypeId> PRIMITIVE_TYPES = [
- TTypeId.BOOLEAN_TYPE,
- TTypeId.TINYINT_TYPE,
- TTypeId.SMALLINT_TYPE,
- TTypeId.INT_TYPE,
- TTypeId.BIGINT_TYPE,
- TTypeId.FLOAT_TYPE,
- TTypeId.DOUBLE_TYPE,
- TTypeId.STRING_TYPE,
- TTypeId.TIMESTAMP_TYPE,
- TTypeId.BINARY_TYPE,
- TTypeId.DECIMAL_TYPE,
- TTypeId.NULL_TYPE,
- TTypeId.DATE_TYPE,
- TTypeId.VARCHAR_TYPE,
- TTypeId.CHAR_TYPE
- ]
- const set<TTypeId> COMPLEX_TYPES = [
- TTypeId.ARRAY_TYPE
- TTypeId.MAP_TYPE
- TTypeId.STRUCT_TYPE
- TTypeId.UNION_TYPE
- TTypeId.USER_DEFINED_TYPE
- ]
- const set<TTypeId> COLLECTION_TYPES = [
- TTypeId.ARRAY_TYPE
- TTypeId.MAP_TYPE
- ]
- const map<TTypeId,string> TYPE_NAMES = {
- TTypeId.BOOLEAN_TYPE: "BOOLEAN",
- TTypeId.TINYINT_TYPE: "TINYINT",
- TTypeId.SMALLINT_TYPE: "SMALLINT",
- TTypeId.INT_TYPE: "INT",
- TTypeId.BIGINT_TYPE: "BIGINT",
- TTypeId.FLOAT_TYPE: "FLOAT",
- TTypeId.DOUBLE_TYPE: "DOUBLE",
- TTypeId.STRING_TYPE: "STRING",
- TTypeId.TIMESTAMP_TYPE: "TIMESTAMP",
- TTypeId.BINARY_TYPE: "BINARY",
- TTypeId.ARRAY_TYPE: "ARRAY",
- TTypeId.MAP_TYPE: "MAP",
- TTypeId.STRUCT_TYPE: "STRUCT",
- TTypeId.UNION_TYPE: "UNIONTYPE",
- TTypeId.DECIMAL_TYPE: "DECIMAL",
- TTypeId.NULL_TYPE: "NULL"
- TTypeId.DATE_TYPE: "DATE"
- TTypeId.VARCHAR_TYPE: "VARCHAR"
- TTypeId.CHAR_TYPE: "CHAR"
- }
- // Thrift does not support recursively defined types or forward declarations,
- // which makes it difficult to represent Hive's nested types.
- // To get around these limitations TTypeDesc employs a type list that maps
- // integer "pointers" to TTypeEntry objects. The following examples show
- // how different types are represented using this scheme:
- //
- // "INT":
- // TTypeDesc {
- // types = [
- // TTypeEntry.primitive_entry {
- // type = INT_TYPE
- // }
- // ]
- // }
- //
- // "ARRAY<INT>":
- // TTypeDesc {
- // types = [
- // TTypeEntry.array_entry {
- // object_type_ptr = 1
- // },
- // TTypeEntry.primitive_entry {
- // type = INT_TYPE
- // }
- // ]
- // }
- //
- // "MAP<INT,STRING>":
- // TTypeDesc {
- // types = [
- // TTypeEntry.map_entry {
- // key_type_ptr = 1
- // value_type_ptr = 2
- // },
- // TTypeEntry.primitive_entry {
- // type = INT_TYPE
- // },
- // TTypeEntry.primitive_entry {
- // type = STRING_TYPE
- // }
- // ]
- // }
- typedef i32 TTypeEntryPtr
- // Valid TTypeQualifiers key names
- const string CHARACTER_MAXIMUM_LENGTH = "characterMaximumLength"
- // Type qualifier key name for decimal
- const string PRECISION = "precision"
- const string SCALE = "scale"
- union TTypeQualifierValue {
- 1: optional i32 i32Value
- 2: optional string stringValue
- }
- // Type qualifiers for primitive type.
- struct TTypeQualifiers {
- 1: required map <string, TTypeQualifierValue> qualifiers
- }
- // Type entry for a primitive type.
- struct TPrimitiveTypeEntry {
- // The primitive type token. This must satisfy the condition
- // that type is in the PRIMITIVE_TYPES set.
- 1: required TTypeId type
- 2: optional TTypeQualifiers typeQualifiers
- }
- // Type entry for an ARRAY type.
- struct TArrayTypeEntry {
- 1: required TTypeEntryPtr objectTypePtr
- }
- // Type entry for a MAP type.
- struct TMapTypeEntry {
- 1: required TTypeEntryPtr keyTypePtr
- 2: required TTypeEntryPtr valueTypePtr
- }
- // Type entry for a STRUCT type.
- struct TStructTypeEntry {
- 1: required map<string, TTypeEntryPtr> nameToTypePtr
- }
- // Type entry for a UNIONTYPE type.
- struct TUnionTypeEntry {
- 1: required map<string, TTypeEntryPtr> nameToTypePtr
- }
- struct TUserDefinedTypeEntry {
- // The fully qualified name of the class implementing this type.
- 1: required string typeClassName
- }
- // We use a union here since Thrift does not support inheritance.
- union TTypeEntry {
- 1: TPrimitiveTypeEntry primitiveEntry
- 2: TArrayTypeEntry arrayEntry
- 3: TMapTypeEntry mapEntry
- 4: TStructTypeEntry structEntry
- 5: TUnionTypeEntry unionEntry
- 6: TUserDefinedTypeEntry userDefinedTypeEntry
- }
- // Type descriptor for columns.
- struct TTypeDesc {
- // The "top" type is always the first element of the list.
- // If the top type is an ARRAY, MAP, STRUCT, or UNIONTYPE
- // type, then subsequent elements represent nested types.
- 1: required list<TTypeEntry> types
- }
- // A result set column descriptor.
- struct TColumnDesc {
- // The name of the column
- 1: required string columnName
- // The type descriptor for this column
- 2: required TTypeDesc typeDesc
-
- // The ordinal position of this column in the schema
- 3: required i32 position
- 4: optional string comment
- }
- // Metadata used to describe the schema (column names, types, comments)
- // of result sets.
- struct TTableSchema {
- 1: required list<TColumnDesc> columns
- }
- // A Boolean column value.
- struct TBoolValue {
- // NULL if value is unset.
- 1: optional bool value
- }
- // A Byte column value.
- struct TByteValue {
- // NULL if value is unset.
- 1: optional byte value
- }
- // A signed, 16 bit column value.
- struct TI16Value {
- // NULL if value is unset
- 1: optional i16 value
- }
- // A signed, 32 bit column value
- struct TI32Value {
- // NULL if value is unset
- 1: optional i32 value
- }
- // A signed 64 bit column value
- struct TI64Value {
- // NULL if value is unset
- 1: optional i64 value
- }
- // A floating point 64 bit column value
- struct TDoubleValue {
- // NULL if value is unset
- 1: optional double value
- }
- struct TStringValue {
- // NULL if value is unset
- 1: optional string value
- }
- // A single column value in a result set.
- // Note that Hive's type system is richer than Thrift's,
- // so in some cases we have to map multiple Hive types
- // to the same Thrift type. On the client-side this is
- // disambiguated by looking at the Schema of the
- // result set.
- union TColumnValue {
- 1: TBoolValue boolVal // BOOLEAN
- 2: TByteValue byteVal // TINYINT
- 3: TI16Value i16Val // SMALLINT
- 4: TI32Value i32Val // INT
- 5: TI64Value i64Val // BIGINT, TIMESTAMP
- 6: TDoubleValue doubleVal // FLOAT, DOUBLE
- 7: TStringValue stringVal // STRING, LIST, MAP, STRUCT, UNIONTYPE, BINARY, DECIMAL, NULL
- }
- // Represents a row in a rowset.
- struct TRow {
- 1: required list<TColumnValue> colVals
- }
- struct TBoolColumn {
- 1: required list<bool> values
- 2: required binary nulls
- }
- struct TByteColumn {
- 1: required list<byte> values
- 2: required binary nulls
- }
- struct TI16Column {
- 1: required list<i16> values
- 2: required binary nulls
- }
- struct TI32Column {
- 1: required list<i32> values
- 2: required binary nulls
- }
- struct TI64Column {
- 1: required list<i64> values
- 2: required binary nulls
- }
- struct TDoubleColumn {
- 1: required list<double> values
- 2: required binary nulls
- }
- struct TStringColumn {
- 1: required list<string> values
- 2: required binary nulls
- }
- struct TBinaryColumn {
- 1: required list<binary> values
- 2: required binary nulls
- }
- // Note that Hive's type system is richer than Thrift's,
- // so in some cases we have to map multiple Hive types
- // to the same Thrift type. On the client-side this is
- // disambiguated by looking at the Schema of the
- // result set.
- union TColumn {
- 1: TBoolColumn boolVal // BOOLEAN
- 2: TByteColumn byteVal // TINYINT
- 3: TI16Column i16Val // SMALLINT
- 4: TI32Column i32Val // INT
- 5: TI64Column i64Val // BIGINT, TIMESTAMP
- 6: TDoubleColumn doubleVal // FLOAT, DOUBLE
- 7: TStringColumn stringVal // STRING, LIST, MAP, STRUCT, UNIONTYPE, DECIMAL, NULL
- 8: TBinaryColumn binaryVal // BINARY
- }
- // Represents a rowset
- struct TRowSet {
- // The starting row offset of this rowset.
- 1: required i64 startRowOffset
- 2: required list<TRow> rows
- 3: optional list<TColumn> columns
- }
- // The return status code contained in each response.
- enum TStatusCode {
- SUCCESS_STATUS,
- SUCCESS_WITH_INFO_STATUS,
- STILL_EXECUTING_STATUS,
- ERROR_STATUS,
- INVALID_HANDLE_STATUS
- }
- // The return status of a remote request
- struct TStatus {
- 1: required TStatusCode statusCode
- // If status is SUCCESS_WITH_INFO, info_msgs may be populated with
- // additional diagnostic information.
- 2: optional list<string> infoMessages
- // If status is ERROR, then the following fields may be set
- 3: optional string sqlState // as defined in the ISO/IEF CLI specification
- 4: optional i32 errorCode // internal error code
- 5: optional string errorMessage
- }
- // The state of an operation (i.e. a query or other
- // asynchronous operation that generates a result set)
- // on the server.
- enum TOperationState {
- // The operation has been initialized
- INITIALIZED_STATE,
- // The operation is running. In this state the result
- // set is not available.
- RUNNING_STATE,
- // The operation has completed. When an operation is in
- // this state its result set may be fetched.
- FINISHED_STATE,
- // The operation was canceled by a client
- CANCELED_STATE,
- // The operation was closed by a client
- CLOSED_STATE,
- // The operation failed due to an error
- ERROR_STATE,
- // The operation is in an unrecognized state
- UKNOWN_STATE,
- // The operation is in an pending state
- PENDING_STATE,
- }
- // A string identifier. This is interpreted literally.
- typedef string TIdentifier
- // A search pattern.
- //
- // Valid search pattern characters:
- // '_': Any single character.
- // '%': Any sequence of zero or more characters.
- // '\': Escape character used to include special characters,
- // e.g. '_', '%', '\'. If a '\' precedes a non-special
- // character it has no special meaning and is interpreted
- // literally.
- typedef string TPattern
- // A search pattern or identifier. Used as input
- // parameter for many of the catalog functions.
- typedef string TPatternOrIdentifier
- struct THandleIdentifier {
- // 16 byte globally unique identifier
- // This is the public ID of the handle and
- // can be used for reporting.
- 1: required binary guid,
- // 16 byte secret generated by the server
- // and used to verify that the handle is not
- // being hijacked by another user.
- 2: required binary secret,
- }
- // Client-side handle to persistent
- // session information on the server-side.
- struct TSessionHandle {
- 1: required THandleIdentifier sessionId
- }
- // The subtype of an OperationHandle.
- enum TOperationType {
- EXECUTE_STATEMENT,
- GET_TYPE_INFO,
- GET_CATALOGS,
- GET_SCHEMAS,
- GET_TABLES,
- GET_TABLE_TYPES,
- GET_COLUMNS,
- GET_FUNCTIONS,
- UNKNOWN,
- }
- // Client-side reference to a task running
- // asynchronously on the server.
- struct TOperationHandle {
- 1: required THandleIdentifier operationId
- 2: required TOperationType operationType
- // If hasResultSet = TRUE, then this operation
- // generates a result set that can be fetched.
- // Note that the result set may be empty.
- //
- // If hasResultSet = FALSE, then this operation
- // does not generate a result set, and calling
- // GetResultSetMetadata or FetchResults against
- // this OperationHandle will generate an error.
- 3: required bool hasResultSet
- // For operations that don't generate result sets,
- // modifiedRowCount is either:
- //
- // 1) The number of rows that were modified by
- // the DML operation (e.g. number of rows inserted,
- // number of rows deleted, etc).
- //
- // 2) 0 for operations that don't modify or add rows.
- //
- // 3) < 0 if the operation is capable of modifiying rows,
- // but Hive is unable to determine how many rows were
- // modified. For example, Hive's LOAD DATA command
- // doesn't generate row count information because
- // Hive doesn't inspect the data as it is loaded.
- //
- // modifiedRowCount is unset if the operation generates
- // a result set.
- 4: optional double modifiedRowCount
- }
- // OpenSession()
- //
- // Open a session (connection) on the server against
- // which operations may be executed.
- struct TOpenSessionReq {
- // The version of the HiveServer2 protocol that the client is using.
- 1: required TProtocolVersion client_protocol = TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V6
- // Username and password for authentication.
- // Depending on the authentication scheme being used,
- // this information may instead be provided by a lower
- // protocol layer, in which case these fields may be
- // left unset.
- 2: optional string username
- 3: optional string password
- // Configuration overlay which is applied when the session is
- // first created.
- 4: optional map<string, string> configuration
- }
- struct TOpenSessionResp {
- 1: required TStatus status
- // The protocol version that the server is using.
- 2: required TProtocolVersion serverProtocolVersion = TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V6
- // Session Handle
- 3: optional TSessionHandle sessionHandle
- // The configuration settings for this session.
- 4: optional map<string, string> configuration
- }
- // CloseSession()
- //
- // Closes the specified session and frees any resources
- // currently allocated to that session. Any open
- // operations in that session will be canceled.
- struct TCloseSessionReq {
- 1: required TSessionHandle sessionHandle
- }
- struct TCloseSessionResp {
- 1: required TStatus status
- }
- enum TGetInfoType {
- CLI_MAX_DRIVER_CONNECTIONS = 0,
- CLI_MAX_CONCURRENT_ACTIVITIES = 1,
- CLI_DATA_SOURCE_NAME = 2,
- CLI_FETCH_DIRECTION = 8,
- CLI_SERVER_NAME = 13,
- CLI_SEARCH_PATTERN_ESCAPE = 14,
- CLI_DBMS_NAME = 17,
- CLI_DBMS_VER = 18,
- CLI_ACCESSIBLE_TABLES = 19,
- CLI_ACCESSIBLE_PROCEDURES = 20,
- CLI_CURSOR_COMMIT_BEHAVIOR = 23,
- CLI_DATA_SOURCE_READ_ONLY = 25,
- CLI_DEFAULT_TXN_ISOLATION = 26,
- CLI_IDENTIFIER_CASE = 28,
- CLI_IDENTIFIER_QUOTE_CHAR = 29,
- CLI_MAX_COLUMN_NAME_LEN = 30,
- CLI_MAX_CURSOR_NAME_LEN = 31,
- CLI_MAX_SCHEMA_NAME_LEN = 32,
- CLI_MAX_CATALOG_NAME_LEN = 34,
- CLI_MAX_TABLE_NAME_LEN = 35,
- CLI_SCROLL_CONCURRENCY = 43,
- CLI_TXN_CAPABLE = 46,
- CLI_USER_NAME = 47,
- CLI_TXN_ISOLATION_OPTION = 72,
- CLI_INTEGRITY = 73,
- CLI_GETDATA_EXTENSIONS = 81,
- CLI_NULL_COLLATION = 85,
- CLI_ALTER_TABLE = 86,
- CLI_ORDER_BY_COLUMNS_IN_SELECT = 90,
- CLI_SPECIAL_CHARACTERS = 94,
- CLI_MAX_COLUMNS_IN_GROUP_BY = 97,
- CLI_MAX_COLUMNS_IN_INDEX = 98,
- CLI_MAX_COLUMNS_IN_ORDER_BY = 99,
- CLI_MAX_COLUMNS_IN_SELECT = 100,
- CLI_MAX_COLUMNS_IN_TABLE = 101,
- CLI_MAX_INDEX_SIZE = 102,
- CLI_MAX_ROW_SIZE = 104,
- CLI_MAX_STATEMENT_LEN = 105,
- CLI_MAX_TABLES_IN_SELECT = 106,
- CLI_MAX_USER_NAME_LEN = 107,
- CLI_OJ_CAPABILITIES = 115,
- CLI_XOPEN_CLI_YEAR = 10000,
- CLI_CURSOR_SENSITIVITY = 10001,
- CLI_DESCRIBE_PARAMETER = 10002,
- CLI_CATALOG_NAME = 10003,
- CLI_COLLATION_SEQ = 10004,
- CLI_MAX_IDENTIFIER_LEN = 10005,
- }
- union TGetInfoValue {
- 1: string stringValue
- 2: i16 smallIntValue
- 3: i32 integerBitmask
- 4: i32 integerFlag
- 5: i32 binaryValue
- 6: i64 lenValue
- }
- // GetInfo()
- //
- // This function is based on ODBC's CLIGetInfo() function.
- // The function returns general information about the data source
- // using the same keys as ODBC.
- struct TGetInfoReq {
- // The sesssion to run this request against
- 1: required TSessionHandle sessionHandle
- 2: required TGetInfoType infoType
- }
- struct TGetInfoResp {
- 1: required TStatus status
- 2: required TGetInfoValue infoValue
- }
- // ExecuteStatement()
- //
- // Execute a statement.
- // The returned OperationHandle can be used to check on the
- // status of the statement, and to fetch results once the
- // statement has finished executing.
- struct TExecuteStatementReq {
- // The session to execute the statement against
- 1: required TSessionHandle sessionHandle
- // The statement to be executed (DML, DDL, SET, etc)
- 2: required string statement
- // Configuration properties that are overlayed on top of the
- // the existing session configuration before this statement
- // is executed. These properties apply to this statement
- // only and will not affect the subsequent state of the Session.
- 3: optional map<string, string> confOverlay
-
- // Execute asynchronously when runAsync is true
- 4: optional bool runAsync = false
- }
- struct TExecuteStatementResp {
- 1: required TStatus status
- 2: optional TOperationHandle operationHandle
- }
- // GetTypeInfo()
- //
- // Get information about types supported by the HiveServer instance.
- // The information is returned as a result set which can be fetched
- // using the OperationHandle provided in the response.
- //
- // Refer to the documentation for ODBC's CLIGetTypeInfo function for
- // the format of the result set.
- struct TGetTypeInfoReq {
- // The session to run this request against.
- 1: required TSessionHandle sessionHandle
- }
- struct TGetTypeInfoResp {
- 1: required TStatus status
- 2: optional TOperationHandle operationHandle
- }
- // GetCatalogs()
- //
- // Returns the list of catalogs (databases)
- // Results are ordered by TABLE_CATALOG
- //
- // Resultset columns :
- // col1
- // name: TABLE_CAT
- // type: STRING
- // desc: Catalog name. NULL if not applicable.
- //
- struct TGetCatalogsReq {
- // Session to run this request against
- 1: required TSessionHandle sessionHandle
- }
- struct TGetCatalogsResp {
- 1: required TStatus status
- 2: optional TOperationHandle operationHandle
- }
- // GetSchemas()
- //
- // Retrieves the schema names available in this database.
- // The results are ordered by TABLE_CATALOG and TABLE_SCHEM.
- // col1
- // name: TABLE_SCHEM
- // type: STRING
- // desc: schema name
- // col2
- // name: TABLE_CATALOG
- // type: STRING
- // desc: catalog name
- struct TGetSchemasReq {
- // Session to run this request against
- 1: required TSessionHandle sessionHandle
- // Name of the catalog. Must not contain a search pattern.
- 2: optional TIdentifier catalogName
- // schema name or pattern
- 3: optional TPatternOrIdentifier schemaName
- }
- struct TGetSchemasResp {
- 1: required TStatus status
- 2: optional TOperationHandle operationHandle
- }
- // GetTables()
- //
- // Returns a list of tables with catalog, schema, and table
- // type information. The information is returned as a result
- // set which can be fetched using the OperationHandle
- // provided in the response.
- // Results are ordered by TABLE_TYPE, TABLE_CAT, TABLE_SCHEM, and TABLE_NAME
- //
- // Result Set Columns:
- //
- // col1
- // name: TABLE_CAT
- // type: STRING
- // desc: Catalog name. NULL if not applicable.
- //
- // col2
- // name: TABLE_SCHEM
- // type: STRING
- // desc: Schema name.
- //
- // col3
- // name: TABLE_NAME
- // type: STRING
- // desc: Table name.
- //
- // col4
- // name: TABLE_TYPE
- // type: STRING
- // desc: The table type, e.g. "TABLE", "VIEW", etc.
- //
- // col5
- // name: REMARKS
- // type: STRING
- // desc: Comments about the table
- //
- struct TGetTablesReq {
- // Session to run this request against
- 1: required TSessionHandle sessionHandle
- // Name of the catalog or a search pattern.
- 2: optional TPatternOrIdentifier catalogName
- // Name of the schema or a search pattern.
- 3: optional TPatternOrIdentifier schemaName
- // Name of the table or a search pattern.
- 4: optional TPatternOrIdentifier tableName
- // List of table types to match
- // e.g. "TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY",
- // "LOCAL TEMPORARY", "ALIAS", "SYNONYM", etc.
- 5: optional list<string> tableTypes
- }
- struct TGetTablesResp {
- 1: required TStatus status
- 2: optional TOperationHandle operationHandle
- }
- // GetTableTypes()
- //
- // Returns the table types available in this database.
- // The results are ordered by table type.
- //
- // col1
- // name: TABLE_TYPE
- // type: STRING
- // desc: Table type name.
- struct TGetTableTypesReq {
- // Session to run this request against
- 1: required TSessionHandle sessionHandle
- }
- struct TGetTableTypesResp {
- 1: required TStatus status
- 2: optional TOperationHandle operationHandle
- }
- // GetColumns()
- //
- // Returns a list of columns in the specified tables.
- // The information is returned as a result set which can be fetched
- // using the OperationHandle provided in the response.
- // Results are ordered by TABLE_CAT, TABLE_SCHEM, TABLE_NAME,
- // and ORDINAL_POSITION.
- //
- // Result Set Columns are the same as those for the ODBC CLIColumns
- // function.
- //
- struct TGetColumnsReq {
- // Session to run this request against
- 1: required TSessionHandle sessionHandle
- // Name of the catalog. Must not contain a search pattern.
- 2: optional TIdentifier catalogName
- // Schema name or search pattern
- 3: optional TPatternOrIdentifier schemaName
- // Table name or search pattern
- 4: optional TPatternOrIdentifier tableName
- // Column name or search pattern
- 5: optional TPatternOrIdentifier columnName
- }
- struct TGetColumnsResp {
- 1: required TStatus status
- 2: optional TOperationHandle operationHandle
- }
- // GetFunctions()
- //
- // Returns a list of functions supported by the data source. The
- // behavior of this function matches
- // java.sql.DatabaseMetaData.getFunctions() both in terms of
- // inputs and outputs.
- //
- // Result Set Columns:
- //
- // col1
- // name: FUNCTION_CAT
- // type: STRING
- // desc: Function catalog (may be null)
- //
- // col2
- // name: FUNCTION_SCHEM
- // type: STRING
- // desc: Function schema (may be null)
- //
- // col3
- // name: FUNCTION_NAME
- // type: STRING
- // desc: Function name. This is the name used to invoke the function.
- //
- // col4
- // name: REMARKS
- // type: STRING
- // desc: Explanatory comment on the function.
- //
- // col5
- // name: FUNCTION_TYPE
- // type: SMALLINT
- // desc: Kind of function. One of:
- // * functionResultUnknown - Cannot determine if a return value or a table
- // will be returned.
- // * functionNoTable - Does not a return a table.
- // * functionReturnsTable - Returns a table.
- //
- // col6
- // name: SPECIFIC_NAME
- // type: STRING
- // desc: The name which uniquely identifies this function within its schema.
- // In this case this is the fully qualified class name of the class
- // that implements this function.
- //
- struct TGetFunctionsReq {
- // Session to run this request against
- 1: required TSessionHandle sessionHandle
- // A catalog name; must match the catalog name as it is stored in the
- // database; "" retrieves those without a catalog; null means
- // that the catalog name should not be used to narrow the search.
- 2: optional TIdentifier catalogName
- // A schema name pattern; must match the schema name as it is stored
- // in the database; "" retrieves those without a schema; null means
- // that the schema name should not be used to narrow the search.
- 3: optional TPatternOrIdentifier schemaName
- // A function name pattern; must match the function name as it is stored
- // in the database.
- 4: required TPatternOrIdentifier functionName
- }
- struct TGetFunctionsResp {
- 1: required TStatus status
- 2: optional TOperationHandle operationHandle
- }
-
- // GetOperationStatus()
- //
- // Get the status of an operation running on the server.
- struct TGetOperationStatusReq {
- // Session to run this request against
- 1: required TOperationHandle operationHandle
- }
- struct TGetOperationStatusResp {
- 1: required TStatus status
- 2: optional TOperationState operationState
- // If operationState is ERROR_STATE, then the following fields may be set
- // sqlState as defined in the ISO/IEF CLI specification
- 3: optional string sqlState
- // Internal error code
- 4: optional i32 errorCode
- // Error message
- 5: optional string errorMessage
- }
- // CancelOperation()
- //
- // Cancels processing on the specified operation handle and
- // frees any resources which were allocated.
- struct TCancelOperationReq {
- // Operation to cancel
- 1: required TOperationHandle operationHandle
- }
- struct TCancelOperationResp {
- 1: required TStatus status
- }
- // CloseOperation()
- //
- // Given an operation in the FINISHED, CANCELED,
- // or ERROR states, CloseOperation() will free
- // all of the resources which were allocated on
- // the server to service the operation.
- struct TCloseOperationReq {
- 1: required TOperationHandle operationHandle
- }
- struct TCloseOperationResp {
- 1: required TStatus status
- }
- // GetResultSetMetadata()
- //
- // Retrieves schema information for the specified operation
- struct TGetResultSetMetadataReq {
- // Operation for which to fetch result set schema information
- 1: required TOperationHandle operationHandle
- }
- struct TGetResultSetMetadataResp {
- 1: required TStatus status
- 2: optional TTableSchema schema
- }
- enum TFetchOrientation {
- // Get the next rowset. The fetch offset is ignored.
- FETCH_NEXT,
- // Get the previous rowset. The fetch offset is ignored.
- // NOT SUPPORTED
- FETCH_PRIOR,
- // Return the rowset at the given fetch offset relative
- // to the curren rowset.
- // NOT SUPPORTED
- FETCH_RELATIVE,
- // Return the rowset at the specified fetch offset.
- // NOT SUPPORTED
- FETCH_ABSOLUTE,
- // Get the first rowset in the result set.
- FETCH_FIRST,
- // Get the last rowset in the result set.
- // NOT SUPPORTED
- FETCH_LAST
- }
- // FetchResults()
- //
- // Fetch rows from the server corresponding to
- // a particular OperationHandle.
- struct TFetchResultsReq {
- // Operation from which to fetch results.
- 1: required TOperationHandle operationHandle
- // The fetch orientation. For V1 this must be either
- // FETCH_NEXT or FETCH_FIRST. Defaults to FETCH_NEXT.
- 2: required TFetchOrientation orientation = TFetchOrientation.FETCH_NEXT
-
- // Max number of rows that should be returned in
- // the rowset.
- 3: required i64 maxRows
- // The type of a fetch results request. 0 represents Query output. 1 represents Log
- 4: optional i16 fetchType = 0
- }
- struct TFetchResultsResp {
- 1: required TStatus status
- // TRUE if there are more rows left to fetch from the server.
- 2: optional bool hasMoreRows
- // The rowset. This is optional so that we have the
- // option in the future of adding alternate formats for
- // representing result set data, e.g. delimited strings,
- // binary encoded, etc.
- 3: optional TRowSet results
- }
- // GetDelegationToken()
- // Retrieve delegation token for the current user
- struct TGetDelegationTokenReq {
- // session handle
- 1: required TSessionHandle sessionHandle
- // userid for the proxy user
- 2: required string owner
- // designated renewer userid
- 3: required string renewer
- }
- struct TGetDelegationTokenResp {
- // status of the request
- 1: required TStatus status
- // delegation token string
- 2: optional string delegationToken
- }
- // CancelDelegationToken()
- // Cancel the given delegation token
- struct TCancelDelegationTokenReq {
- // session handle
- 1: required TSessionHandle sessionHandle
- // delegation token to cancel
- 2: required string delegationToken
- }
- struct TCancelDelegationTokenResp {
- // status of the request
- 1: required TStatus status
- }
- // RenewDelegationToken()
- // Renew the given delegation token
- struct TRenewDelegationTokenReq {
- // session handle
- 1: required TSessionHandle sessionHandle
- // delegation token to renew
- 2: required string delegationToken
- }
- struct TRenewDelegationTokenResp {
- // status of the request
- 1: required TStatus status
- }
- // GetLog()
- //
- // Fetch operation log from the server corresponding to
- // a particular OperationHandle.
- struct TGetLogReq {
- // Operation whose log is requested
- 1: required TOperationHandle operationHandle
- }
- struct TGetLogResp {
- 1: required TStatus status
- 2: required string log
- }
- service TCLIService {
- TOpenSessionResp OpenSession(1:TOpenSessionReq req);
- TCloseSessionResp CloseSession(1:TCloseSessionReq req);
- TGetInfoResp GetInfo(1:TGetInfoReq req);
- TExecuteStatementResp ExecuteStatement(1:TExecuteStatementReq req);
- TGetTypeInfoResp GetTypeInfo(1:TGetTypeInfoReq req);
- TGetCatalogsResp GetCatalogs(1:TGetCatalogsReq req);
- TGetSchemasResp GetSchemas(1:TGetSchemasReq req);
- TGetTablesResp GetTables(1:TGetTablesReq req);
- TGetTableTypesResp GetTableTypes(1:TGetTableTypesReq req);
- TGetColumnsResp GetColumns(1:TGetColumnsReq req);
- TGetFunctionsResp GetFunctions(1:TGetFunctionsReq req);
- TGetOperationStatusResp GetOperationStatus(1:TGetOperationStatusReq req);
-
- TCancelOperationResp CancelOperation(1:TCancelOperationReq req);
- TCloseOperationResp CloseOperation(1:TCloseOperationReq req);
- TGetResultSetMetadataResp GetResultSetMetadata(1:TGetResultSetMetadataReq req);
- TFetchResultsResp FetchResults(1:TFetchResultsReq req);
- TGetDelegationTokenResp GetDelegationToken(1:TGetDelegationTokenReq req);
- TCancelDelegationTokenResp CancelDelegationToken(1:TCancelDelegationTokenReq req);
- TRenewDelegationTokenResp RenewDelegationToken(1:TRenewDelegationTokenReq req);
- TGetLogResp GetLog(1:TGetLogReq req);
- }
|