HIVE-12442: Refactor/repackage HiveServer2's Thrift code so that it can be used in the tasks (Rohit Dholakia reviewed by Vaibhav Gumashta)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/3a1c4b57 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/3a1c4b57 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/3a1c4b57 Branch: refs/heads/master Commit: 3a1c4b57fbbdf1f3c4aada7ca8393aa688f13f7b Parents: 327bcaf Author: Vaibhav Gumashta <[email protected]> Authored: Mon Jan 11 00:21:42 2016 -0800 Committer: Vaibhav Gumashta <[email protected]> Committed: Mon Jan 11 00:21:42 2016 -0800 ---------------------------------------------------------------------- bin/ext/hiveserver2.sh | 2 +- bin/ext/metastore.sh | 2 +- .../cli/session/TestHiveSessionImpl.java | 2 +- .../cli/thrift/TestThriftHttpCLIService.java | 4 +- jdbc/pom.xml | 5 + .../org/apache/hive/jdbc/HiveConnection.java | 24 +- .../apache/hive/jdbc/HiveDatabaseMetaData.java | 39 +- .../apache/hive/jdbc/HivePreparedStatement.java | 4 +- .../apache/hive/jdbc/HiveQueryResultSet.java | 44 +- .../apache/hive/jdbc/HiveResultSetMetaData.java | 1 + .../org/apache/hive/jdbc/HiveStatement.java | 28 +- .../java/org/apache/hive/jdbc/JdbcColumn.java | 10 +- jdbc/src/java/org/apache/hive/jdbc/Utils.java | 4 +- .../org/apache/hive/jdbc/HiveStatementTest.java | 4 +- packaging/pom.xml | 5 + pom.xml | 1 + service-rpc/if/TCLIService.thrift | 1174 ++ service-rpc/pom.xml | 111 + .../src/gen/thrift/gen-cpp/TCLIService.cpp | 7315 ++++++++ .../src/gen/thrift/gen-cpp/TCLIService.h | 2564 +++ .../thrift/gen-cpp/TCLIService_constants.cpp | 72 + .../gen/thrift/gen-cpp/TCLIService_constants.h | 31 + .../gen-cpp/TCLIService_server.skeleton.cpp | 134 + .../gen/thrift/gen-cpp/TCLIService_types.cpp | 9231 +++++++++ .../src/gen/thrift/gen-cpp/TCLIService_types.h | 4141 +++++ .../service/rpc/thrift/TArrayTypeEntry.java | 387 + .../hive/service/rpc/thrift/TBinaryColumn.java | 548 + .../hive/service/rpc/thrift/TBoolColumn.java | 548 + .../hive/service/rpc/thrift/TBoolValue.java | 390 + .../hive/service/rpc/thrift/TByteColumn.java | 548 + .../hive/service/rpc/thrift/TByteValue.java | 390 + .../hive/service/rpc/thrift/TCLIService.java | 16422 +++++++++++++++++ .../rpc/thrift/TCLIServiceConstants.java | 106 + .../rpc/thrift/TCancelDelegationTokenReq.java | 495 + .../rpc/thrift/TCancelDelegationTokenResp.java | 394 + .../service/rpc/thrift/TCancelOperationReq.java | 394 + .../rpc/thrift/TCancelOperationResp.java | 394 + .../service/rpc/thrift/TCloseOperationReq.java | 394 + .../service/rpc/thrift/TCloseOperationResp.java | 394 + .../service/rpc/thrift/TCloseSessionReq.java | 394 + .../service/rpc/thrift/TCloseSessionResp.java | 394 + .../apache/hive/service/rpc/thrift/TColumn.java | 736 + .../hive/service/rpc/thrift/TColumnDesc.java | 704 + .../hive/service/rpc/thrift/TColumnValue.java | 675 + .../hive/service/rpc/thrift/TDoubleColumn.java | 548 + .../hive/service/rpc/thrift/TDoubleValue.java | 390 + .../rpc/thrift/TExecuteStatementReq.java | 762 + .../rpc/thrift/TExecuteStatementResp.java | 509 + .../service/rpc/thrift/TFetchOrientation.java | 57 + .../service/rpc/thrift/TFetchResultsReq.java | 714 + .../service/rpc/thrift/TFetchResultsResp.java | 612 + .../service/rpc/thrift/TGetCatalogsReq.java | 394 + .../service/rpc/thrift/TGetCatalogsResp.java | 509 + .../hive/service/rpc/thrift/TGetColumnsReq.java | 822 + .../service/rpc/thrift/TGetColumnsResp.java | 509 + .../rpc/thrift/TGetDelegationTokenReq.java | 596 + .../rpc/thrift/TGetDelegationTokenResp.java | 504 + .../service/rpc/thrift/TGetFunctionsReq.java | 711 + .../service/rpc/thrift/TGetFunctionsResp.java | 509 + .../hive/service/rpc/thrift/TGetInfoReq.java | 507 + .../hive/service/rpc/thrift/TGetInfoResp.java | 497 + .../hive/service/rpc/thrift/TGetInfoType.java | 180 + .../hive/service/rpc/thrift/TGetInfoValue.java | 597 + .../rpc/thrift/TGetOperationStatusReq.java | 394 + .../rpc/thrift/TGetOperationStatusResp.java | 831 + .../rpc/thrift/TGetResultSetMetadataReq.java | 394 + .../rpc/thrift/TGetResultSetMetadataResp.java | 509 + .../hive/service/rpc/thrift/TGetSchemasReq.java | 610 + .../service/rpc/thrift/TGetSchemasResp.java | 509 + .../service/rpc/thrift/TGetTableTypesReq.java | 394 + .../service/rpc/thrift/TGetTableTypesResp.java | 509 + .../hive/service/rpc/thrift/TGetTablesReq.java | 871 + .../hive/service/rpc/thrift/TGetTablesResp.java | 509 + .../service/rpc/thrift/TGetTypeInfoReq.java | 394 + .../service/rpc/thrift/TGetTypeInfoResp.java | 509 + .../service/rpc/thrift/THandleIdentifier.java | 508 + .../hive/service/rpc/thrift/TI16Column.java | 548 + .../hive/service/rpc/thrift/TI16Value.java | 390 + .../hive/service/rpc/thrift/TI32Column.java | 548 + .../hive/service/rpc/thrift/TI32Value.java | 390 + .../hive/service/rpc/thrift/TI64Column.java | 548 + .../hive/service/rpc/thrift/TI64Value.java | 390 + .../hive/service/rpc/thrift/TMapTypeEntry.java | 482 + .../service/rpc/thrift/TOpenSessionReq.java | 778 + .../service/rpc/thrift/TOpenSessionResp.java | 783 + .../service/rpc/thrift/TOperationHandle.java | 709 + .../service/rpc/thrift/TOperationState.java | 63 + .../hive/service/rpc/thrift/TOperationType.java | 66 + .../service/rpc/thrift/TPrimitiveTypeEntry.java | 516 + .../service/rpc/thrift/TProtocolVersion.java | 63 + .../rpc/thrift/TRenewDelegationTokenReq.java | 495 + .../rpc/thrift/TRenewDelegationTokenResp.java | 394 + .../apache/hive/service/rpc/thrift/TRow.java | 443 + .../apache/hive/service/rpc/thrift/TRowSet.java | 706 + .../hive/service/rpc/thrift/TSessionHandle.java | 394 + .../apache/hive/service/rpc/thrift/TStatus.java | 875 + .../hive/service/rpc/thrift/TStatusCode.java | 54 + .../hive/service/rpc/thrift/TStringColumn.java | 548 + .../hive/service/rpc/thrift/TStringValue.java | 393 + .../service/rpc/thrift/TStructTypeEntry.java | 452 + .../hive/service/rpc/thrift/TTableSchema.java | 443 + .../hive/service/rpc/thrift/TTypeDesc.java | 443 + .../hive/service/rpc/thrift/TTypeEntry.java | 614 + .../apache/hive/service/rpc/thrift/TTypeId.java | 105 + .../service/rpc/thrift/TTypeQualifierValue.java | 365 + .../service/rpc/thrift/TTypeQualifiers.java | 454 + .../service/rpc/thrift/TUnionTypeEntry.java | 452 + .../rpc/thrift/TUserDefinedTypeEntry.java | 389 + .../src/gen/thrift/gen-php/TCLIService.php | 4140 +++++ service-rpc/src/gen/thrift/gen-php/Types.php | 9038 +++++++++ .../gen-py/TCLIService/TCLIService-remote | 220 + .../thrift/gen-py/TCLIService/TCLIService.py | 3643 ++++ .../gen/thrift/gen-py/TCLIService/__init__.py | 1 + .../gen/thrift/gen-py/TCLIService/constants.py | 67 + .../src/gen/thrift/gen-py/TCLIService/ttypes.py | 6857 +++++++ .../src/gen/thrift/gen-rb/t_c_l_i_service.rb | 1050 ++ .../thrift/gen-rb/t_c_l_i_service_constants.rb | 72 + .../gen/thrift/gen-rb/t_c_l_i_service_types.rb | 1763 ++ service/if/TCLIService.thrift | 1174 -- service/pom.xml | 39 +- service/src/gen/thrift/gen-cpp/TCLIService.cpp | 7315 -------- service/src/gen/thrift/gen-cpp/TCLIService.h | 2564 --- .../thrift/gen-cpp/TCLIService_constants.cpp | 72 - .../gen/thrift/gen-cpp/TCLIService_constants.h | 31 - .../gen-cpp/TCLIService_server.skeleton.cpp | 134 - .../gen/thrift/gen-cpp/TCLIService_types.cpp | 9231 --------- .../src/gen/thrift/gen-cpp/TCLIService_types.h | 4141 ----- service/src/gen/thrift/gen-cpp/ThriftHive.cpp | 3544 ---- service/src/gen/thrift/gen-cpp/ThriftHive.h | 1224 -- .../gen-cpp/ThriftHive_server.skeleton.cpp | 84 - .../thrift/gen-cpp/hive_service_constants.cpp | 17 - .../gen/thrift/gen-cpp/hive_service_constants.h | 24 - .../gen/thrift/gen-cpp/hive_service_types.cpp | 351 - .../src/gen/thrift/gen-cpp/hive_service_types.h | 176 - .../hadoop/hive/service/HiveClusterStatus.java | 901 - .../hive/service/HiveServerException.java | 601 - .../hadoop/hive/service/JobTrackerState.java | 45 - .../apache/hadoop/hive/service/ThriftHive.java | 7784 -------- .../service/cli/thrift/TArrayTypeEntry.java | 387 - .../hive/service/cli/thrift/TBinaryColumn.java | 548 - .../hive/service/cli/thrift/TBoolColumn.java | 548 - .../hive/service/cli/thrift/TBoolValue.java | 390 - .../hive/service/cli/thrift/TByteColumn.java | 548 - .../hive/service/cli/thrift/TByteValue.java | 390 - .../hive/service/cli/thrift/TCLIService.java | 16422 ----------------- .../cli/thrift/TCLIServiceConstants.java | 106 - .../cli/thrift/TCancelDelegationTokenReq.java | 495 - .../cli/thrift/TCancelDelegationTokenResp.java | 394 - .../service/cli/thrift/TCancelOperationReq.java | 394 - .../cli/thrift/TCancelOperationResp.java | 394 - .../service/cli/thrift/TCloseOperationReq.java | 394 - .../service/cli/thrift/TCloseOperationResp.java | 394 - .../service/cli/thrift/TCloseSessionReq.java | 394 - .../service/cli/thrift/TCloseSessionResp.java | 394 - .../apache/hive/service/cli/thrift/TColumn.java | 736 - .../hive/service/cli/thrift/TColumnDesc.java | 704 - .../hive/service/cli/thrift/TColumnValue.java | 675 - .../hive/service/cli/thrift/TDoubleColumn.java | 548 - .../hive/service/cli/thrift/TDoubleValue.java | 390 - .../cli/thrift/TExecuteStatementReq.java | 762 - .../cli/thrift/TExecuteStatementResp.java | 509 - .../service/cli/thrift/TFetchOrientation.java | 57 - .../service/cli/thrift/TFetchResultsReq.java | 714 - .../service/cli/thrift/TFetchResultsResp.java | 612 - .../service/cli/thrift/TGetCatalogsReq.java | 394 - .../service/cli/thrift/TGetCatalogsResp.java | 509 - .../hive/service/cli/thrift/TGetColumnsReq.java | 822 - .../service/cli/thrift/TGetColumnsResp.java | 509 - .../cli/thrift/TGetDelegationTokenReq.java | 596 - .../cli/thrift/TGetDelegationTokenResp.java | 504 - .../service/cli/thrift/TGetFunctionsReq.java | 711 - .../service/cli/thrift/TGetFunctionsResp.java | 509 - .../hive/service/cli/thrift/TGetInfoReq.java | 507 - .../hive/service/cli/thrift/TGetInfoResp.java | 497 - .../hive/service/cli/thrift/TGetInfoType.java | 180 - .../hive/service/cli/thrift/TGetInfoValue.java | 597 - .../cli/thrift/TGetOperationStatusReq.java | 394 - .../cli/thrift/TGetOperationStatusResp.java | 831 - .../cli/thrift/TGetResultSetMetadataReq.java | 394 - .../cli/thrift/TGetResultSetMetadataResp.java | 509 - .../hive/service/cli/thrift/TGetSchemasReq.java | 610 - .../service/cli/thrift/TGetSchemasResp.java | 509 - .../service/cli/thrift/TGetTableTypesReq.java | 394 - .../service/cli/thrift/TGetTableTypesResp.java | 509 - .../hive/service/cli/thrift/TGetTablesReq.java | 871 - .../hive/service/cli/thrift/TGetTablesResp.java | 509 - .../service/cli/thrift/TGetTypeInfoReq.java | 394 - .../service/cli/thrift/TGetTypeInfoResp.java | 509 - .../service/cli/thrift/THandleIdentifier.java | 508 - .../hive/service/cli/thrift/TI16Column.java | 548 - .../hive/service/cli/thrift/TI16Value.java | 390 - .../hive/service/cli/thrift/TI32Column.java | 548 - .../hive/service/cli/thrift/TI32Value.java | 390 - .../hive/service/cli/thrift/TI64Column.java | 548 - .../hive/service/cli/thrift/TI64Value.java | 390 - .../hive/service/cli/thrift/TMapTypeEntry.java | 482 - .../service/cli/thrift/TOpenSessionReq.java | 778 - .../service/cli/thrift/TOpenSessionResp.java | 783 - .../service/cli/thrift/TOperationHandle.java | 709 - .../service/cli/thrift/TOperationState.java | 63 - .../hive/service/cli/thrift/TOperationType.java | 66 - .../service/cli/thrift/TPrimitiveTypeEntry.java | 516 - .../service/cli/thrift/TProtocolVersion.java | 63 - .../cli/thrift/TRenewDelegationTokenReq.java | 495 - .../cli/thrift/TRenewDelegationTokenResp.java | 394 - .../apache/hive/service/cli/thrift/TRow.java | 443 - .../apache/hive/service/cli/thrift/TRowSet.java | 706 - .../hive/service/cli/thrift/TSessionHandle.java | 394 - .../apache/hive/service/cli/thrift/TStatus.java | 875 - .../hive/service/cli/thrift/TStatusCode.java | 54 - .../hive/service/cli/thrift/TStringColumn.java | 548 - .../hive/service/cli/thrift/TStringValue.java | 393 - .../service/cli/thrift/TStructTypeEntry.java | 452 - .../hive/service/cli/thrift/TTableSchema.java | 443 - .../hive/service/cli/thrift/TTypeDesc.java | 443 - .../hive/service/cli/thrift/TTypeEntry.java | 614 - .../apache/hive/service/cli/thrift/TTypeId.java | 105 - .../service/cli/thrift/TTypeQualifierValue.java | 365 - .../service/cli/thrift/TTypeQualifiers.java | 454 - .../service/cli/thrift/TUnionTypeEntry.java | 452 - .../cli/thrift/TUserDefinedTypeEntry.java | 389 - service/src/gen/thrift/gen-php/TCLIService.php | 4140 ----- service/src/gen/thrift/gen-php/ThriftHive.php | 1943 -- service/src/gen/thrift/gen-php/Types.php | 338 - .../gen-py/TCLIService/TCLIService-remote | 220 - .../thrift/gen-py/TCLIService/TCLIService.py | 3643 ---- .../gen/thrift/gen-py/TCLIService/__init__.py | 1 - .../gen/thrift/gen-py/TCLIService/constants.py | 67 - .../src/gen/thrift/gen-py/TCLIService/ttypes.py | 6857 ------- service/src/gen/thrift/gen-py/__init__.py | 0 .../gen-py/hive_service/ThriftHive-remote | 1172 -- .../thrift/gen-py/hive_service/ThriftHive.py | 1674 -- .../gen/thrift/gen-py/hive_service/__init__.py | 1 - .../gen/thrift/gen-py/hive_service/constants.py | 11 - .../gen/thrift/gen-py/hive_service/ttypes.py | 260 - .../gen/thrift/gen-rb/hive_service_constants.rb | 9 - .../src/gen/thrift/gen-rb/hive_service_types.rb | 68 - .../src/gen/thrift/gen-rb/t_c_l_i_service.rb | 1050 -- .../thrift/gen-rb/t_c_l_i_service_constants.rb | 72 - .../gen/thrift/gen-rb/t_c_l_i_service_types.rb | 1763 -- service/src/gen/thrift/gen-rb/thrift_hive.rb | 555 - .../apache/hive/service/AbstractService.java | 2 +- .../apache/hive/service/BreakableService.java | 1 - .../apache/hive/service/CompositeService.java | 2 +- .../org/apache/hive/service/CookieSigner.java | 8 +- .../apache/hive/service/ServiceOperations.java | 2 +- .../apache/hive/service/auth/HttpAuthUtils.java | 4 +- .../hive/service/auth/KerberosSaslHelper.java | 5 +- .../auth/LdapAuthenticationProviderImpl.java | 12 +- .../auth/PamAuthenticationProviderImpl.java | 1 + .../hive/service/auth/PlainSaslHelper.java | 3 +- .../hive/service/auth/PlainSaslServer.java | 1 + .../service/auth/TSetIpAddressProcessor.java | 4 +- .../service/auth/TSubjectAssumingTransport.java | 1 + .../org/apache/hive/service/cli/CLIService.java | 6 +- .../org/apache/hive/service/cli/Column.java | 19 +- .../apache/hive/service/cli/ColumnBasedSet.java | 6 +- .../hive/service/cli/ColumnDescriptor.java | 2 +- .../apache/hive/service/cli/ColumnValue.java | 16 +- .../hive/service/cli/FetchOrientation.java | 2 +- .../apache/hive/service/cli/GetInfoType.java | 2 +- .../apache/hive/service/cli/GetInfoValue.java | 2 +- .../org/apache/hive/service/cli/Handle.java | 2 +- .../hive/service/cli/HandleIdentifier.java | 2 +- .../hive/service/cli/HiveSQLException.java | 8 +- .../apache/hive/service/cli/ICLIService.java | 3 - .../hive/service/cli/OperationHandle.java | 4 +- .../apache/hive/service/cli/OperationState.java | 2 +- .../apache/hive/service/cli/OperationType.java | 2 +- .../apache/hive/service/cli/RowBasedSet.java | 6 +- .../org/apache/hive/service/cli/RowSet.java | 2 +- .../apache/hive/service/cli/RowSetFactory.java | 6 +- .../apache/hive/service/cli/SessionHandle.java | 4 +- .../apache/hive/service/cli/TableSchema.java | 4 +- .../java/org/apache/hive/service/cli/Type.java | 2 +- .../apache/hive/service/cli/TypeDescriptor.java | 6 +- .../apache/hive/service/cli/TypeQualifiers.java | 6 +- .../cli/operation/ClassicTableTypeMapping.java | 12 +- .../cli/operation/GetColumnsOperation.java | 1 - .../cli/operation/GetFunctionsOperation.java | 1 - .../cli/operation/GetSchemasOperation.java | 8 - .../cli/operation/HiveCommandOperation.java | 2 +- .../cli/operation/HiveTableTypeMapping.java | 5 +- .../hive/service/cli/operation/Operation.java | 10 +- .../service/cli/session/HiveSessionBase.java | 6 +- .../service/cli/session/HiveSessionImpl.java | 6 +- .../cli/session/HiveSessionImplwithUGI.java | 6 +- .../service/cli/session/SessionManager.java | 2 +- .../thrift/RetryingThriftCLIServiceClient.java | 43 +- .../service/cli/thrift/ThriftCLIService.java | 47 +- .../cli/thrift/ThriftCLIServiceClient.java | 56 +- .../cli/thrift/ThriftHttpCLIService.java | 3 +- .../service/cli/thrift/ThriftHttpServlet.java | 7 +- .../server/ThreadWithGarbageCleanup.java | 4 +- .../hive/service/cli/TestHiveSQLException.java | 4 +- .../session/TestPluggableHiveSessionImpl.java | 2 +- spark-client/pom.xml | 5 + 297 files changed, 107850 insertions(+), 119375 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/3a1c4b57/bin/ext/hiveserver2.sh ---------------------------------------------------------------------- diff --git a/bin/ext/hiveserver2.sh b/bin/ext/hiveserver2.sh index 42d3d79..1f02bb4 100644 --- a/bin/ext/hiveserver2.sh +++ b/bin/ext/hiveserver2.sh @@ -21,7 +21,7 @@ hiveserver2() { if $cygwin; then HIVE_LIB=`cygpath -w "$HIVE_LIB"` fi - JAR=${HIVE_LIB}/hive-service-*.jar + JAR=${HIVE_LIB}/hive-service-[0-9].*.jar exec $HADOOP jar $JAR $CLASS $HIVE_OPTS "$@" } http://git-wip-us.apache.org/repos/asf/hive/blob/3a1c4b57/bin/ext/metastore.sh ---------------------------------------------------------------------- diff --git a/bin/ext/metastore.sh b/bin/ext/metastore.sh index 22b2d5d..095e6e2 100644 --- a/bin/ext/metastore.sh +++ b/bin/ext/metastore.sh @@ -22,7 +22,7 @@ metastore() { if $cygwin; then HIVE_LIB=`cygpath -w "$HIVE_LIB"` fi - JAR=${HIVE_LIB}/hive-service-*.jar + JAR=${HIVE_LIB}/hive-metastore-*.jar # hadoop 20 or newer - skip the aux_jars option and hiveconf http://git-wip-us.apache.org/repos/asf/hive/blob/3a1c4b57/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestHiveSessionImpl.java ---------------------------------------------------------------------- diff --git a/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestHiveSessionImpl.java b/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestHiveSessionImpl.java index 8a32a07..4b23385 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestHiveSessionImpl.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestHiveSessionImpl.java @@ -23,7 +23,7 @@ import org.apache.hive.service.cli.HiveSQLException; import org.apache.hive.service.cli.OperationHandle; import org.apache.hive.service.cli.operation.ExecuteStatementOperation; import org.apache.hive.service.cli.operation.OperationManager; -import org.apache.hive.service.cli.thrift.TProtocolVersion; +import org.apache.hive.service.rpc.thrift.TProtocolVersion; import org.junit.Assert; import org.junit.Test; import org.mockito.Mockito; http://git-wip-us.apache.org/repos/asf/hive/blob/3a1c4b57/itests/hive-unit/src/test/java/org/apache/hive/service/cli/thrift/TestThriftHttpCLIService.java ---------------------------------------------------------------------- diff --git a/itests/hive-unit/src/test/java/org/apache/hive/service/cli/thrift/TestThriftHttpCLIService.java b/itests/hive-unit/src/test/java/org/apache/hive/service/cli/thrift/TestThriftHttpCLIService.java index b1e53a6..3ed6dd8 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/service/cli/thrift/TestThriftHttpCLIService.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/service/cli/thrift/TestThriftHttpCLIService.java @@ -30,6 +30,8 @@ import org.apache.hadoop.hive.conf.HiveConf.ConfVars; import org.apache.hive.jdbc.HttpBasicAuthInterceptor; import org.apache.hive.service.auth.HiveAuthFactory; import org.apache.hive.service.auth.HiveAuthFactory.AuthTypes; +import org.apache.hive.service.rpc.thrift.TCLIService; +import org.apache.hive.service.rpc.thrift.TOpenSessionReq; import org.apache.http.HttpException; import org.apache.http.HttpRequest; import org.apache.http.client.CookieStore; @@ -236,4 +238,4 @@ public class TestThriftHttpCLIService extends ThriftCLIServiceTest { assertTrue(h.contains("key2:value2")); } } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/hive/blob/3a1c4b57/jdbc/pom.xml ---------------------------------------------------------------------- diff --git a/jdbc/pom.xml b/jdbc/pom.xml index da6c291..f87ab59 100644 --- a/jdbc/pom.xml +++ b/jdbc/pom.xml @@ -66,6 +66,11 @@ <artifactId>hive-shims</artifactId> <version>${project.version}</version> </dependency> + <dependency> + <groupId>org.apache.hive</groupId> + <artifactId>hive-service-rpc</artifactId> + <version>${project.version}</version> + </dependency> <!-- inter-project --> <dependency> <groupId>org.apache.httpcomponents</groupId> http://git-wip-us.apache.org/repos/asf/hive/blob/3a1c4b57/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java ---------------------------------------------------------------------- diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java index 31ad1f1..c3a17c1 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java @@ -24,18 +24,18 @@ import org.apache.hive.service.auth.KerberosSaslHelper; import org.apache.hive.service.auth.PlainSaslHelper; import org.apache.hive.service.auth.SaslQOP; import org.apache.hive.service.cli.thrift.EmbeddedThriftBinaryCLIService; -import org.apache.hive.service.cli.thrift.TCLIService; -import org.apache.hive.service.cli.thrift.TCancelDelegationTokenReq; -import org.apache.hive.service.cli.thrift.TCancelDelegationTokenResp; -import org.apache.hive.service.cli.thrift.TCloseSessionReq; -import org.apache.hive.service.cli.thrift.TGetDelegationTokenReq; -import org.apache.hive.service.cli.thrift.TGetDelegationTokenResp; -import org.apache.hive.service.cli.thrift.TOpenSessionReq; -import org.apache.hive.service.cli.thrift.TOpenSessionResp; -import org.apache.hive.service.cli.thrift.TProtocolVersion; -import org.apache.hive.service.cli.thrift.TRenewDelegationTokenReq; -import org.apache.hive.service.cli.thrift.TRenewDelegationTokenResp; -import org.apache.hive.service.cli.thrift.TSessionHandle; +import org.apache.hive.service.rpc.thrift.TCLIService; +import org.apache.hive.service.rpc.thrift.TCancelDelegationTokenReq; +import org.apache.hive.service.rpc.thrift.TCancelDelegationTokenResp; +import org.apache.hive.service.rpc.thrift.TCloseSessionReq; +import org.apache.hive.service.rpc.thrift.TGetDelegationTokenReq; +import org.apache.hive.service.rpc.thrift.TGetDelegationTokenResp; +import org.apache.hive.service.rpc.thrift.TOpenSessionReq; +import org.apache.hive.service.rpc.thrift.TOpenSessionResp; +import org.apache.hive.service.rpc.thrift.TProtocolVersion; +import org.apache.hive.service.rpc.thrift.TRenewDelegationTokenReq; +import org.apache.hive.service.rpc.thrift.TRenewDelegationTokenResp; +import org.apache.hive.service.rpc.thrift.TSessionHandle; import org.apache.http.HttpRequestInterceptor; import org.apache.http.HttpResponse; import org.apache.http.client.CookieStore; http://git-wip-us.apache.org/repos/asf/hive/blob/3a1c4b57/jdbc/src/java/org/apache/hive/jdbc/HiveDatabaseMetaData.java ---------------------------------------------------------------------- diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveDatabaseMetaData.java b/jdbc/src/java/org/apache/hive/jdbc/HiveDatabaseMetaData.java index a73f443..7e54d1f 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveDatabaseMetaData.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveDatabaseMetaData.java @@ -29,25 +29,26 @@ import java.util.jar.Attributes; import org.apache.hadoop.hive.metastore.TableType; import org.apache.hive.service.cli.GetInfoType; -import org.apache.hive.service.cli.thrift.TCLIService; -import org.apache.hive.service.cli.thrift.TGetCatalogsReq; -import org.apache.hive.service.cli.thrift.TGetCatalogsResp; -import org.apache.hive.service.cli.thrift.TGetColumnsReq; -import org.apache.hive.service.cli.thrift.TGetColumnsResp; -import org.apache.hive.service.cli.thrift.TGetFunctionsReq; -import org.apache.hive.service.cli.thrift.TGetFunctionsResp; -import org.apache.hive.service.cli.thrift.TGetInfoReq; -import org.apache.hive.service.cli.thrift.TGetInfoResp; -import org.apache.hive.service.cli.thrift.TGetInfoType; -import org.apache.hive.service.cli.thrift.TGetSchemasReq; -import org.apache.hive.service.cli.thrift.TGetSchemasResp; -import org.apache.hive.service.cli.thrift.TGetTableTypesReq; -import org.apache.hive.service.cli.thrift.TGetTableTypesResp; -import org.apache.hive.service.cli.thrift.TGetTablesReq; -import org.apache.hive.service.cli.thrift.TGetTablesResp; -import org.apache.hive.service.cli.thrift.TGetTypeInfoReq; -import org.apache.hive.service.cli.thrift.TGetTypeInfoResp; -import org.apache.hive.service.cli.thrift.TSessionHandle; +import org.apache.hive.service.rpc.thrift.TCLIService; +import org.apache.hive.service.rpc.thrift.TCLIService.Iface; +import org.apache.hive.service.rpc.thrift.TGetCatalogsReq; +import org.apache.hive.service.rpc.thrift.TGetCatalogsResp; +import org.apache.hive.service.rpc.thrift.TGetColumnsReq; +import org.apache.hive.service.rpc.thrift.TGetColumnsResp; +import org.apache.hive.service.rpc.thrift.TGetFunctionsReq; +import org.apache.hive.service.rpc.thrift.TGetFunctionsResp; +import org.apache.hive.service.rpc.thrift.TGetInfoReq; +import org.apache.hive.service.rpc.thrift.TGetInfoResp; +import org.apache.hive.service.rpc.thrift.TGetInfoType; +import org.apache.hive.service.rpc.thrift.TGetSchemasReq; +import org.apache.hive.service.rpc.thrift.TGetSchemasResp; +import org.apache.hive.service.rpc.thrift.TGetTableTypesReq; +import org.apache.hive.service.rpc.thrift.TGetTableTypesResp; +import org.apache.hive.service.rpc.thrift.TGetTablesReq; +import org.apache.hive.service.rpc.thrift.TGetTablesResp; +import org.apache.hive.service.rpc.thrift.TGetTypeInfoReq; +import org.apache.hive.service.rpc.thrift.TGetTypeInfoResp; +import org.apache.hive.service.rpc.thrift.TSessionHandle; import org.apache.thrift.TException; /** http://git-wip-us.apache.org/repos/asf/hive/blob/3a1c4b57/jdbc/src/java/org/apache/hive/jdbc/HivePreparedStatement.java ---------------------------------------------------------------------- diff --git a/jdbc/src/java/org/apache/hive/jdbc/HivePreparedStatement.java b/jdbc/src/java/org/apache/hive/jdbc/HivePreparedStatement.java index c28b7d6..705a32a 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HivePreparedStatement.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HivePreparedStatement.java @@ -43,8 +43,8 @@ import java.util.Calendar; import java.util.HashMap; import java.util.Scanner; -import org.apache.hive.service.cli.thrift.TCLIService; -import org.apache.hive.service.cli.thrift.TSessionHandle; +import org.apache.hive.service.rpc.thrift.TCLIService; +import org.apache.hive.service.rpc.thrift.TSessionHandle; /** * HivePreparedStatement. http://git-wip-us.apache.org/repos/asf/hive/blob/3a1c4b57/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java ---------------------------------------------------------------------- diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java b/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java index 245c6a3..8f67209 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java @@ -18,42 +18,42 @@ package org.apache.hive.jdbc; -import static org.apache.hive.service.cli.thrift.TCLIServiceConstants.TYPE_NAMES; +import static org.apache.hive.service.rpc.thrift.TCLIServiceConstants.TYPE_NAMES; import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; -import java.sql.Statement; import java.sql.SQLException; +import java.sql.Statement; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.concurrent.locks.ReentrantLock; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hive.service.cli.RowSet; import org.apache.hive.service.cli.RowSetFactory; import org.apache.hive.service.cli.TableSchema; -import org.apache.hive.service.cli.thrift.TCLIService; -import org.apache.hive.service.cli.thrift.TCLIServiceConstants; -import org.apache.hive.service.cli.thrift.TCloseOperationReq; -import org.apache.hive.service.cli.thrift.TCloseOperationResp; -import org.apache.hive.service.cli.thrift.TColumnDesc; -import org.apache.hive.service.cli.thrift.TFetchOrientation; -import org.apache.hive.service.cli.thrift.TFetchResultsReq; -import org.apache.hive.service.cli.thrift.TFetchResultsResp; -import org.apache.hive.service.cli.thrift.TGetResultSetMetadataReq; -import org.apache.hive.service.cli.thrift.TGetResultSetMetadataResp; -import org.apache.hive.service.cli.thrift.TOperationHandle; -import org.apache.hive.service.cli.thrift.TPrimitiveTypeEntry; -import org.apache.hive.service.cli.thrift.TProtocolVersion; -import org.apache.hive.service.cli.thrift.TRowSet; -import org.apache.hive.service.cli.thrift.TSessionHandle; -import org.apache.hive.service.cli.thrift.TTableSchema; -import org.apache.hive.service.cli.thrift.TTypeQualifierValue; -import org.apache.hive.service.cli.thrift.TTypeQualifiers; +import org.apache.hive.service.rpc.thrift.TCLIService; +import org.apache.hive.service.rpc.thrift.TCLIServiceConstants; +import org.apache.hive.service.rpc.thrift.TCloseOperationReq; +import org.apache.hive.service.rpc.thrift.TCloseOperationResp; +import org.apache.hive.service.rpc.thrift.TColumnDesc; +import org.apache.hive.service.rpc.thrift.TFetchOrientation; +import org.apache.hive.service.rpc.thrift.TFetchResultsReq; +import org.apache.hive.service.rpc.thrift.TFetchResultsResp; +import org.apache.hive.service.rpc.thrift.TGetResultSetMetadataReq; +import org.apache.hive.service.rpc.thrift.TGetResultSetMetadataResp; +import org.apache.hive.service.rpc.thrift.TOperationHandle; +import org.apache.hive.service.rpc.thrift.TPrimitiveTypeEntry; +import org.apache.hive.service.rpc.thrift.TProtocolVersion; +import org.apache.hive.service.rpc.thrift.TRowSet; +import org.apache.hive.service.rpc.thrift.TSessionHandle; +import org.apache.hive.service.rpc.thrift.TTableSchema; +import org.apache.hive.service.rpc.thrift.TTypeQualifierValue; +import org.apache.hive.service.rpc.thrift.TTypeQualifiers; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * HiveQueryResultSet. http://git-wip-us.apache.org/repos/asf/hive/blob/3a1c4b57/jdbc/src/java/org/apache/hive/jdbc/HiveResultSetMetaData.java ---------------------------------------------------------------------- diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveResultSetMetaData.java b/jdbc/src/java/org/apache/hive/jdbc/HiveResultSetMetaData.java index aa6f58a..16a0894 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveResultSetMetaData.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveResultSetMetaData.java @@ -21,6 +21,7 @@ package org.apache.hive.jdbc; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.List; + import org.apache.hive.service.cli.Type; /** http://git-wip-us.apache.org/repos/asf/hive/blob/3a1c4b57/jdbc/src/java/org/apache/hive/jdbc/HiveStatement.java ---------------------------------------------------------------------- diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveStatement.java b/jdbc/src/java/org/apache/hive/jdbc/HiveStatement.java index 3f9024a..b4dba44 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveStatement.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveStatement.java @@ -20,20 +20,20 @@ package org.apache.hive.jdbc; import org.apache.hive.service.cli.RowSet; import org.apache.hive.service.cli.RowSetFactory; -import org.apache.hive.service.cli.thrift.TCLIService; -import org.apache.hive.service.cli.thrift.TCancelOperationReq; -import org.apache.hive.service.cli.thrift.TCancelOperationResp; -import org.apache.hive.service.cli.thrift.TCloseOperationReq; -import org.apache.hive.service.cli.thrift.TCloseOperationResp; -import org.apache.hive.service.cli.thrift.TExecuteStatementReq; -import org.apache.hive.service.cli.thrift.TExecuteStatementResp; -import org.apache.hive.service.cli.thrift.TFetchOrientation; -import org.apache.hive.service.cli.thrift.TFetchResultsReq; -import org.apache.hive.service.cli.thrift.TFetchResultsResp; -import org.apache.hive.service.cli.thrift.TGetOperationStatusReq; -import org.apache.hive.service.cli.thrift.TGetOperationStatusResp; -import org.apache.hive.service.cli.thrift.TOperationHandle; -import org.apache.hive.service.cli.thrift.TSessionHandle; +import org.apache.hive.service.rpc.thrift.TCLIService; +import org.apache.hive.service.rpc.thrift.TCancelOperationReq; +import org.apache.hive.service.rpc.thrift.TCancelOperationResp; +import org.apache.hive.service.rpc.thrift.TCloseOperationReq; +import org.apache.hive.service.rpc.thrift.TCloseOperationResp; +import org.apache.hive.service.rpc.thrift.TExecuteStatementReq; +import org.apache.hive.service.rpc.thrift.TExecuteStatementResp; +import org.apache.hive.service.rpc.thrift.TFetchOrientation; +import org.apache.hive.service.rpc.thrift.TFetchResultsReq; +import org.apache.hive.service.rpc.thrift.TFetchResultsResp; +import org.apache.hive.service.rpc.thrift.TGetOperationStatusReq; +import org.apache.hive.service.rpc.thrift.TGetOperationStatusResp; +import org.apache.hive.service.rpc.thrift.TOperationHandle; +import org.apache.hive.service.rpc.thrift.TSessionHandle; import org.slf4j.Logger; import org.slf4j.LoggerFactory; http://git-wip-us.apache.org/repos/asf/hive/blob/3a1c4b57/jdbc/src/java/org/apache/hive/jdbc/JdbcColumn.java ---------------------------------------------------------------------- diff --git a/jdbc/src/java/org/apache/hive/jdbc/JdbcColumn.java b/jdbc/src/java/org/apache/hive/jdbc/JdbcColumn.java index a941f3d..691fd0e 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/JdbcColumn.java +++ b/jdbc/src/java/org/apache/hive/jdbc/JdbcColumn.java @@ -18,17 +18,17 @@ package org.apache.hive.jdbc; -import org.apache.hadoop.hive.common.type.HiveIntervalDayTime; -import org.apache.hadoop.hive.common.type.HiveIntervalYearMonth; -import org.apache.hadoop.hive.serde.serdeConstants; -import org.apache.hive.service.cli.Type; - import java.math.BigInteger; import java.sql.Date; import java.sql.SQLException; import java.sql.Timestamp; import java.sql.Types; +import org.apache.hadoop.hive.common.type.HiveIntervalDayTime; +import org.apache.hadoop.hive.common.type.HiveIntervalYearMonth; +import org.apache.hadoop.hive.serde.serdeConstants; +import org.apache.hive.service.cli.Type; + /** * Column metadata. http://git-wip-us.apache.org/repos/asf/hive/blob/3a1c4b57/jdbc/src/java/org/apache/hive/jdbc/Utils.java ---------------------------------------------------------------------- diff --git a/jdbc/src/java/org/apache/hive/jdbc/Utils.java b/jdbc/src/java/org/apache/hive/jdbc/Utils.java index c9fbe1f..b27e7bf 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/Utils.java +++ b/jdbc/src/java/org/apache/hive/jdbc/Utils.java @@ -30,8 +30,8 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.hive.service.cli.HiveSQLException; -import org.apache.hive.service.cli.thrift.TStatus; -import org.apache.hive.service.cli.thrift.TStatusCode; +import org.apache.hive.service.rpc.thrift.TStatus; +import org.apache.hive.service.rpc.thrift.TStatusCode; import org.apache.http.client.CookieStore; import org.apache.http.cookie.Cookie; import org.slf4j.Logger; http://git-wip-us.apache.org/repos/asf/hive/blob/3a1c4b57/jdbc/src/test/org/apache/hive/jdbc/HiveStatementTest.java ---------------------------------------------------------------------- diff --git a/jdbc/src/test/org/apache/hive/jdbc/HiveStatementTest.java b/jdbc/src/test/org/apache/hive/jdbc/HiveStatementTest.java index 1acdb4c..3ccd5df 100644 --- a/jdbc/src/test/org/apache/hive/jdbc/HiveStatementTest.java +++ b/jdbc/src/test/org/apache/hive/jdbc/HiveStatementTest.java @@ -17,11 +17,11 @@ */ package org.apache.hive.jdbc; -import org.junit.Test; +import static org.junit.Assert.assertEquals; import java.sql.SQLException; -import static org.junit.Assert.assertEquals; +import org.junit.Test; public class HiveStatementTest { http://git-wip-us.apache.org/repos/asf/hive/blob/3a1c4b57/packaging/pom.xml ---------------------------------------------------------------------- diff --git a/packaging/pom.xml b/packaging/pom.xml index 9ad3bde..4ebd386 100644 --- a/packaging/pom.xml +++ b/packaging/pom.xml @@ -121,6 +121,11 @@ </dependency> <dependency> <groupId>org.apache.hive</groupId> + <artifactId>hive-service-rpc</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.hive</groupId> <artifactId>hive-service</artifactId> <version>${project.version}</version> </dependency> http://git-wip-us.apache.org/repos/asf/hive/blob/3a1c4b57/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index f64d363..848432c 100644 --- a/pom.xml +++ b/pom.xml @@ -47,6 +47,7 @@ <module>orc</module> <module>ql</module> <module>serde</module> + <module>service-rpc</module> <module>service</module> <module>llap-server</module> <module>llap-client</module> http://git-wip-us.apache.org/repos/asf/hive/blob/3a1c4b57/service-rpc/if/TCLIService.thrift ---------------------------------------------------------------------- diff --git a/service-rpc/if/TCLIService.thrift b/service-rpc/if/TCLIService.thrift new file mode 100644 index 0000000..0aa9d13 --- /dev/null +++ b/service-rpc/if/TCLIService.thrift @@ -0,0 +1,1174 @@ +// 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.rpc.thrift +namespace cpp apache.hive.service.rpc.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 + + // V8 adds support for interval types + HIVE_CLI_SERVICE_PROTOCOL_V8 +} + +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, + INTERVAL_YEAR_MONTH_TYPE, + INTERVAL_DAY_TIME_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, + TTypeId.INTERVAL_YEAR_MONTH_TYPE, + TTypeId.INTERVAL_DAY_TIME_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" + TTypeId.INTERVAL_YEAR_MONTH_TYPE: "INTERVAL_YEAR_MONTH" + TTypeId.INTERVAL_DAY_TIME_TYPE: "INTERVAL_DAY_TIME" +} + +// 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, INTERVAL_YEAR_MONTH, INTERVAL_DAY_TIME +} + +// 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_V8 + + // 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_V8 + + // 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 +} + +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); +} http://git-wip-us.apache.org/repos/asf/hive/blob/3a1c4b57/service-rpc/pom.xml ---------------------------------------------------------------------- diff --git a/service-rpc/pom.xml b/service-rpc/pom.xml new file mode 100644 index 0000000..6df90d5 --- /dev/null +++ b/service-rpc/pom.xml @@ -0,0 +1,111 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed 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. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.hive</groupId> + <artifactId>hive</artifactId> + <version>2.1.0-SNAPSHOT</version> + <relativePath>../pom.xml</relativePath> + </parent> + + <artifactId>hive-service-rpc</artifactId> + <packaging>jar</packaging> + <name>Hive Service RPC</name> + + <properties> + <hive.path.to.root>..</hive.path.to.root> + </properties> + + <dependencies> + <!-- inter-project --> + <dependency> + <groupId>commons-codec</groupId> + <artifactId>commons-codec</artifactId> + <version>${commons-codec.version}</version> + </dependency> + <dependency> + <groupId>commons-cli</groupId> + <artifactId>commons-cli</artifactId> + <version>${commons-cli.version}</version> + </dependency> + <dependency> + <groupId>tomcat</groupId> + <artifactId>jasper-compiler</artifactId> + <version>${jasper.version}</version> + </dependency> + <dependency> + <groupId>tomcat</groupId> + <artifactId>jasper-runtime</artifactId> + <version>${jasper.version}</version> + </dependency> + <dependency> + <groupId>org.apache.thrift</groupId> + <artifactId>libfb303</artifactId> + <version>${libfb303.version}</version> + </dependency> + <dependency> + <groupId>org.apache.thrift</groupId> + <artifactId>libthrift</artifactId> + <version>${libthrift.version}</version> + </dependency> + <!-- test inter-project --> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>${junit.version}</version> + <scope>test</scope> + </dependency> + </dependencies> + + <build> + <sourceDirectory>${basedir}/src/java</sourceDirectory> + <testSourceDirectory>${basedir}/src/test</testSourceDirectory> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>add-source</id> + <phase>generate-sources</phase> + <goals> + <goal>add-source</goal> + </goals> + <configuration> + <sources> + <source>src/gen/thrift/gen-javabean</source> + </sources> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>test-jar</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + +</project>
