From fd6eece33706d71ba357cd660f1e9c3123c64cab Mon Sep 17 00:00:00 2001 From: Yash Date: Tue, 29 Oct 2024 18:33:47 +0530 Subject: [PATCH 1/9] add base for dataframe support --- dataframe_test.py | 36 ++++++++ e6data_python_connector/__init__.py | 4 +- e6data_python_connector/e6data_grpc.py | 86 +++++++++++++++++++ .../server/e6x_engine_pb2.py | 15 +++- .../server/e6x_engine_pb2.pyi | 26 ++++++ .../server/e6x_engine_pb2_grpc.py | 66 ++++++++++++++ e6x_engine.proto | 25 ++++++ 7 files changed, 253 insertions(+), 5 deletions(-) create mode 100644 dataframe_test.py diff --git a/dataframe_test.py b/dataframe_test.py new file mode 100644 index 0000000..8d0b950 --- /dev/null +++ b/dataframe_test.py @@ -0,0 +1,36 @@ +from unittest import TestCase +from e6data_python_connector import Connection + +import logging + +logging.getLogger(__name__) +logging.basicConfig(level=logging.DEBUG) + +class TestDataFrame(TestCase): + def setUp(self) -> None: + self._host = "127.0.0.1" + self._catalog = "demogluecatalog" + self._database = "tpcds_1000_delta" + logging.debug('Trying to connect to engine') + self.e6x_connection = Connection( + host=self._host, + port=9001, + username='limbad@e6x.io', + password='Dummy@123', + database=self._database, + catalog=self._catalog + ) + logging.debug('Successfully connect to engine.') + + def disconnect(self): + self.e6x_connection.close() + self.assertFalse(self.e6x_connection.check_connection()) + + def tearDown(self) -> None: + self.disconnect() + + def test_table_creation(self): + self._dataframe = self.e6x_connection.dataframe('') + rows = self._dataframe.show() + print(rows) + diff --git a/e6data_python_connector/__init__.py b/e6data_python_connector/__init__.py index b581537..619c6b5 100644 --- a/e6data_python_connector/__init__.py +++ b/e6data_python_connector/__init__.py @@ -1,3 +1,3 @@ -from e6data_python_connector.e6data_grpc import Connection, Cursor +from e6data_python_connector.e6data_grpc import Connection, Cursor, DataFrame -__all__ = ['Connection', 'Cursor'] +__all__ = ['Connection', 'Cursor','DataFrame'] diff --git a/e6data_python_connector/e6data_grpc.py b/e6data_python_connector/e6data_grpc.py index 52da3b4..0032f93 100644 --- a/e6data_python_connector/e6data_grpc.py +++ b/e6data_python_connector/e6data_grpc.py @@ -533,6 +533,9 @@ def cursor(self, catalog_name=None, db_name=None): """ return Cursor(self, database=db_name, catalog_name=catalog_name) + def dataframe(self, parquet_path): + return DataFrame(self, file_path=parquet_path) + def rollback(self): """ Rolls back the current transaction. @@ -1032,6 +1035,89 @@ def explain_analyse(self): ) +class DataFrame: + + def __init__(self, connection: Connection, file_path): + self.connection = connection + self._file_path = file_path + self._engine_ip = '127.0.0.1' + self._sessionId = 'abc' + self._is_metadata_updated = False + self._query_id = None + self._data = None + self._batch = None + self.create_dataframe() + + def create_dataframe(self): + client = self.connection.client + + create_dataframe_request = e6x_engine_pb2.DataFrameRequest( + parquetFilePath=self._file_path, + catalog=self.connection.catalog_name, + schema=self.connection.database + ) + + create_dataframe_response = client.createDataFrame( + create_dataframe_request + ) + self._query_id = create_dataframe_response.queryId + + def show(self): + self._execute() + return self._fetchall() + + def _execute(self): + client = self.connection.client + execute_dataframe_request = e6x_engine_pb2.ExecuteDataFrameRequest( + queryId=self._query_id + ) + execute_dataframe_response = client.executeDataFrame( + execute_dataframe_request + ) + + def _update_meta_data(self): + result_meta_data_request = e6x_engine_pb2.GetResultMetadataRequest( + engineIP=self._engine_ip, + sessionId=self._sessionId, + queryId=self._query_id + ) + get_result_metadata_response = self.connection.client.getResultMetadata( + result_meta_data_request, + ) + buffer = BytesIO(get_result_metadata_response.resultMetaData) + self._rowcount, self._query_columns_description = get_query_columns_info(buffer) + self._is_metadata_updated = True + + def _fetch_batch(self): + client = self.connection.client + get_next_result_batch_request = e6x_engine_pb2.GetNextResultBatchRequest( + engineIP=self._engine_ip, + sessionId=self._sessionId, + queryId=self._query_id + ) + get_next_result_batch_response = client.getNextResultBatch( + get_next_result_batch_request, + ) + buffer = get_next_result_batch_response.resultBatch + if not self._is_metadata_updated: + self._update_meta_data() + if not buffer or len(buffer) == 0: + return None + # one batch retrieves the predefined set of rows + return read_rows_from_chunk(self._query_columns_description, buffer) + + def _fetchall(self): + self._data = list() + while True: + rows = self._fetch_batch() + if rows is None: + break + self._data = self._data + rows + rows = self._data + self._data = None + return rows + + def poll(self, get_progress_update=True): """Poll for and return the raw status data provided by the Hive Thrift REST API. :returns: ``ttypes.TGetOperationStatusResp`` diff --git a/e6data_python_connector/server/e6x_engine_pb2.py b/e6data_python_connector/server/e6x_engine_pb2.py index 756dbd5..be9ae38 100644 --- a/e6data_python_connector/server/e6x_engine_pb2.py +++ b/e6data_python_connector/server/e6x_engine_pb2.py @@ -13,12 +13,13 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10\x65\x36x_engine.proto\"2\n\nGFieldInfo\x12\x11\n\tfieldName\x18\x01 \x01(\t\x12\x11\n\tfieldType\x18\x02 \x01(\t\"A\n\x13\x46\x61iledSchemaElement\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0e\n\x06reason\x18\x03 \x01(\t\"P\n\x16GetAddCatalogsResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\x12&\n\x08\x66\x61ilures\x18\x02 \x03(\x0b\x32\x14.FailedSchemaElement\"2\n\x0f\x43\x61talogResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tisDefault\x18\x02 \x01(\x08\"<\n\x0eParameterValue\x12\r\n\x05index\x18\x01 \x01(\x11\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\"D\n\x0c\x43learRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x0f\n\rClearResponse\"J\n\x12\x43\x61ncelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x15\n\x13\x43\x61ncelQueryResponse\"F\n\x0e\x45xplainRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\"\n\x0f\x45xplainResponse\x12\x0f\n\x07\x65xplain\x18\x01 \x01(\t\"Y\n\rDryRunRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\"%\n\x0e\x44ryRunResponse\x12\x13\n\x0b\x64ryrunValue\x18\x01 \x01(\t\"l\n\x0f\x44ryRunRequestV2\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x05 \x01(\t\"M\n\x15\x45xplainAnalyzeRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"m\n\x16\x45xplainAnalyzeResponse\x12\x16\n\x0e\x65xplainAnalyze\x18\x01 \x01(\t\x12\x10\n\x08isCached\x18\x02 \x01(\x08\x12\x13\n\x0bparsingTime\x18\x03 \x01(\x12\x12\x14\n\x0cqueueingTime\x18\x04 \x01(\x12\"b\n\x17PrepareStatementRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x13\n\x0bqueryString\x18\x03 \x01(\t\x12\x0f\n\x07quoting\x18\x04 \x01(\t\"u\n\x19PrepareStatementV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07quoting\x18\x05 \x01(\t\"=\n\x18PrepareStatementResponse\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\"@\n\x0eUserAccessInfo\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x10\n\x08userName\x18\x02 \x01(\t\x12\x0e\n\x06tokens\x18\x03 \x03(\t\"g\n\x17\x45xecuteStatementRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\"\x8a\x01\n\x19\x45xecuteStatementV2Request\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\x12\x1f\n\x06params\x18\x05 \x03(\x0b\x32\x0f.ParameterValue\"\x1a\n\x18\x45xecuteStatementResponse\"O\n\x17GetNextResultRowRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"-\n\x18GetNextResultRowResponse\x12\x11\n\tresultRow\x18\x02 \x01(\x0c\"w\n\x19GetNextResultBatchRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\tasRowData\x18\x04 \x01(\x08H\x00\x88\x01\x01\x42\x0c\n\n_asRowData\"1\n\x1aGetNextResultBatchResponse\x12\x13\n\x0bresultBatch\x18\x02 \x01(\x0c\"P\n\x18GetResultMetadataRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"3\n\x19GetResultMetadataResponse\x12\x16\n\x0eresultMetaData\x18\x01 \x01(\x0c\"5\n\x13\x41uthenticateRequest\x12\x0c\n\x04user\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\")\n\x14\x41uthenticateResponse\x12\x11\n\tsessionId\x18\x01 \x01(\t\"5\n\x10GetTablesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\"H\n\x12GetTablesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\"#\n\x11GetTablesResponse\x12\x0e\n\x06tables\x18\x01 \x03(\t\"*\n\x15GetSchemaNamesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"=\n\x17GetSchemaNamesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\")\n\x16GetSchemaNamesResponse\x12\x0f\n\x07schemas\x18\x01 \x03(\t\"E\n\x11GetColumnsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\"X\n\x13GetColumnsV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x04 \x01(\t\"4\n\x12GetColumnsResponse\x12\x1e\n\tfieldInfo\x18\x01 \x03(\x0b\x32\x0b.GFieldInfo\"E\n\rStatusRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"2\n\x0eStatusResponse\x12\x0e\n\x06status\x18\x02 \x01(\x08\x12\x10\n\x08rowCount\x18\x03 \x01(\x12\"5\n\x12\x41\x64\x64\x43\x61talogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0c\n\x04json\x18\x02 \x01(\t\"#\n\x12UpdateUsersRequest\x12\r\n\x05users\x18\x01 \x01(\x0c\"\x15\n\x13UpdateUsersResponse\"3\n\x0fSetPropsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\r\n\x05props\x18\x02 \x01(\t\"\x12\n\x10SetPropsResponse\"*\n\x15GetAddCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x15\n\x13\x41\x64\x64\x43\x61talogsResponse\"\x15\n\x13GetCatalogesRequest\"B\n\x14GetCatalogesResponse\x12*\n\x10\x63\x61talogResponses\x18\x01 \x03(\x0b\x32\x10.CatalogResponse\"+\n\x16RefreshCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x19\n\x17RefreshCatalogsResponse\"X\n\x12RemoteChunkRequest\x12\x17\n\x0foriginalQueryId\x18\x01 \x01(\t\x12\x15\n\rremoteQueryId\x18\x02 \x01(\t\x12\x12\n\nsQueryHash\x18\x03 \x01(\t\"3\n\x13RemoteChunkResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\r\n\x05\x63hunk\x18\x02 \x01(\x0c\"Q\n\x19\x43learOrCancelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x1c\n\x1a\x43learOrCancelQueryResponse2\xaa\x0e\n\x12QueryEngineService\x12&\n\x05\x63lear\x12\r.ClearRequest\x1a\x0e.ClearResponse\x12\x38\n\x0b\x63\x61ncelQuery\x12\x13.CancelQueryRequest\x1a\x14.CancelQueryResponse\x12M\n\x12\x63learOrCancelQuery\x12\x1a.ClearOrCancelQueryRequest\x1a\x1b.ClearOrCancelQueryResponse\x12,\n\x07\x65xplain\x12\x0f.ExplainRequest\x1a\x10.ExplainResponse\x12)\n\x06\x64ryRun\x12\x0e.DryRunRequest\x1a\x0f.DryRunResponse\x12-\n\x08\x64ryRunV2\x12\x10.DryRunRequestV2\x1a\x0f.DryRunResponse\x12\x41\n\x0e\x65xplainAnalyze\x12\x16.ExplainAnalyzeRequest\x1a\x17.ExplainAnalyzeResponse\x12G\n\x10prepareStatement\x12\x18.PrepareStatementRequest\x1a\x19.PrepareStatementResponse\x12K\n\x12prepareStatementV2\x12\x1a.PrepareStatementV2Request\x1a\x19.PrepareStatementResponse\x12G\n\x10\x65xecuteStatement\x12\x18.ExecuteStatementRequest\x1a\x19.ExecuteStatementResponse\x12K\n\x12\x65xecuteStatementV2\x12\x1a.ExecuteStatementV2Request\x1a\x19.ExecuteStatementResponse\x12G\n\x10getNextResultRow\x12\x18.GetNextResultRowRequest\x1a\x19.GetNextResultRowResponse\x12M\n\x12getNextResultBatch\x12\x1a.GetNextResultBatchRequest\x1a\x1b.GetNextResultBatchResponse\x12J\n\x11getResultMetadata\x12\x19.GetResultMetadataRequest\x1a\x1a.GetResultMetadataResponse\x12;\n\x0c\x61uthenticate\x12\x14.AuthenticateRequest\x1a\x15.AuthenticateResponse\x12\x32\n\tgetTables\x12\x11.GetTablesRequest\x1a\x12.GetTablesResponse\x12\x36\n\x0bgetTablesV2\x12\x13.GetTablesV2Request\x1a\x12.GetTablesResponse\x12\x41\n\x0egetSchemaNames\x12\x16.GetSchemaNamesRequest\x1a\x17.GetSchemaNamesResponse\x12\x45\n\x10getSchemaNamesV2\x12\x18.GetSchemaNamesV2Request\x1a\x17.GetSchemaNamesResponse\x12\x35\n\ngetColumns\x12\x12.GetColumnsRequest\x1a\x13.GetColumnsResponse\x12\x39\n\x0cgetColumnsV2\x12\x14.GetColumnsV2Request\x1a\x13.GetColumnsResponse\x12\x38\n\x0bupdateUsers\x12\x13.UpdateUsersRequest\x1a\x14.UpdateUsersResponse\x12/\n\x08setProps\x12\x10.SetPropsRequest\x1a\x11.SetPropsResponse\x12)\n\x06status\x12\x0e.StatusRequest\x1a\x0f.StatusResponse\x12\x38\n\x0b\x61\x64\x64\x43\x61talogs\x12\x13.AddCatalogsRequest\x1a\x14.AddCatalogsResponse\x12I\n\x16getAddCatalogsResponse\x12\x16.GetAddCatalogsRequest\x1a\x17.GetAddCatalogsResponse\x12;\n\x0cgetCataloges\x12\x14.GetCatalogesRequest\x1a\x15.GetCatalogesResponse\x12\x45\n\x18getNextRemoteCachedChunk\x12\x13.RemoteChunkRequest\x1a\x14.RemoteChunkResponse\x12\x44\n\x0frefreshCatalogs\x12\x17.RefreshCatalogsRequest\x1a\x18.RefreshCatalogsResponseB\x02P\x01\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10\x65\x36x_engine.proto\"2\n\nGFieldInfo\x12\x11\n\tfieldName\x18\x01 \x01(\t\x12\x11\n\tfieldType\x18\x02 \x01(\t\"A\n\x13\x46\x61iledSchemaElement\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0e\n\x06reason\x18\x03 \x01(\t\"P\n\x16GetAddCatalogsResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\x12&\n\x08\x66\x61ilures\x18\x02 \x03(\x0b\x32\x14.FailedSchemaElement\"2\n\x0f\x43\x61talogResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tisDefault\x18\x02 \x01(\x08\"<\n\x0eParameterValue\x12\r\n\x05index\x18\x01 \x01(\x11\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\"D\n\x0c\x43learRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x0f\n\rClearResponse\"J\n\x12\x43\x61ncelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x15\n\x13\x43\x61ncelQueryResponse\"F\n\x0e\x45xplainRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\"\n\x0f\x45xplainResponse\x12\x0f\n\x07\x65xplain\x18\x01 \x01(\t\"Y\n\rDryRunRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\"%\n\x0e\x44ryRunResponse\x12\x13\n\x0b\x64ryrunValue\x18\x01 \x01(\t\"l\n\x0f\x44ryRunRequestV2\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x05 \x01(\t\"M\n\x15\x45xplainAnalyzeRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"m\n\x16\x45xplainAnalyzeResponse\x12\x16\n\x0e\x65xplainAnalyze\x18\x01 \x01(\t\x12\x10\n\x08isCached\x18\x02 \x01(\x08\x12\x13\n\x0bparsingTime\x18\x03 \x01(\x12\x12\x14\n\x0cqueueingTime\x18\x04 \x01(\x12\"b\n\x17PrepareStatementRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x13\n\x0bqueryString\x18\x03 \x01(\t\x12\x0f\n\x07quoting\x18\x04 \x01(\t\"u\n\x19PrepareStatementV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07quoting\x18\x05 \x01(\t\"=\n\x18PrepareStatementResponse\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\"@\n\x0eUserAccessInfo\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x10\n\x08userName\x18\x02 \x01(\t\x12\x0e\n\x06tokens\x18\x03 \x03(\t\"g\n\x17\x45xecuteStatementRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\"\x8a\x01\n\x19\x45xecuteStatementV2Request\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\x12\x1f\n\x06params\x18\x05 \x03(\x0b\x32\x0f.ParameterValue\"\x1a\n\x18\x45xecuteStatementResponse\"O\n\x17GetNextResultRowRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"-\n\x18GetNextResultRowResponse\x12\x11\n\tresultRow\x18\x02 \x01(\x0c\"w\n\x19GetNextResultBatchRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\tasRowData\x18\x04 \x01(\x08H\x00\x88\x01\x01\x42\x0c\n\n_asRowData\"1\n\x1aGetNextResultBatchResponse\x12\x13\n\x0bresultBatch\x18\x02 \x01(\x0c\"P\n\x18GetResultMetadataRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"3\n\x19GetResultMetadataResponse\x12\x16\n\x0eresultMetaData\x18\x01 \x01(\x0c\"5\n\x13\x41uthenticateRequest\x12\x0c\n\x04user\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\")\n\x14\x41uthenticateResponse\x12\x11\n\tsessionId\x18\x01 \x01(\t\"5\n\x10GetTablesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\"H\n\x12GetTablesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\"#\n\x11GetTablesResponse\x12\x0e\n\x06tables\x18\x01 \x03(\t\"*\n\x15GetSchemaNamesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"=\n\x17GetSchemaNamesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\")\n\x16GetSchemaNamesResponse\x12\x0f\n\x07schemas\x18\x01 \x03(\t\"E\n\x11GetColumnsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\"X\n\x13GetColumnsV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x04 \x01(\t\"4\n\x12GetColumnsResponse\x12\x1e\n\tfieldInfo\x18\x01 \x03(\x0b\x32\x0b.GFieldInfo\"E\n\rStatusRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"2\n\x0eStatusResponse\x12\x0e\n\x06status\x18\x02 \x01(\x08\x12\x10\n\x08rowCount\x18\x03 \x01(\x12\"5\n\x12\x41\x64\x64\x43\x61talogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0c\n\x04json\x18\x02 \x01(\t\"#\n\x12UpdateUsersRequest\x12\r\n\x05users\x18\x01 \x01(\x0c\"\x15\n\x13UpdateUsersResponse\"3\n\x0fSetPropsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\r\n\x05props\x18\x02 \x01(\t\"\x12\n\x10SetPropsResponse\"*\n\x15GetAddCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x15\n\x13\x41\x64\x64\x43\x61talogsResponse\"\x15\n\x13GetCatalogesRequest\"B\n\x14GetCatalogesResponse\x12*\n\x10\x63\x61talogResponses\x18\x01 \x03(\x0b\x32\x10.CatalogResponse\"+\n\x16RefreshCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x19\n\x17RefreshCatalogsResponse\"X\n\x12RemoteChunkRequest\x12\x17\n\x0foriginalQueryId\x18\x01 \x01(\t\x12\x15\n\rremoteQueryId\x18\x02 \x01(\t\x12\x12\n\nsQueryHash\x18\x03 \x01(\t\"3\n\x13RemoteChunkResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\r\n\x05\x63hunk\x18\x02 \x01(\x0c\"Q\n\x19\x43learOrCancelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x1c\n\x1a\x43learOrCancelQueryResponse\"L\n\x10\x44\x61taFrameRequest\x12\x17\n\x0fparquetFilePath\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\"$\n\x11\x44\x61taFrameResponse\x12\x0f\n\x07queryId\x18\x01 \x01(\t\"*\n\x17\x45xecuteDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\"\x1a\n\x18\x45xecuteDataFrameResponse2\xad\x0f\n\x12QueryEngineService\x12&\n\x05\x63lear\x12\r.ClearRequest\x1a\x0e.ClearResponse\x12\x38\n\x0b\x63\x61ncelQuery\x12\x13.CancelQueryRequest\x1a\x14.CancelQueryResponse\x12M\n\x12\x63learOrCancelQuery\x12\x1a.ClearOrCancelQueryRequest\x1a\x1b.ClearOrCancelQueryResponse\x12,\n\x07\x65xplain\x12\x0f.ExplainRequest\x1a\x10.ExplainResponse\x12)\n\x06\x64ryRun\x12\x0e.DryRunRequest\x1a\x0f.DryRunResponse\x12-\n\x08\x64ryRunV2\x12\x10.DryRunRequestV2\x1a\x0f.DryRunResponse\x12\x41\n\x0e\x65xplainAnalyze\x12\x16.ExplainAnalyzeRequest\x1a\x17.ExplainAnalyzeResponse\x12G\n\x10prepareStatement\x12\x18.PrepareStatementRequest\x1a\x19.PrepareStatementResponse\x12K\n\x12prepareStatementV2\x12\x1a.PrepareStatementV2Request\x1a\x19.PrepareStatementResponse\x12G\n\x10\x65xecuteStatement\x12\x18.ExecuteStatementRequest\x1a\x19.ExecuteStatementResponse\x12K\n\x12\x65xecuteStatementV2\x12\x1a.ExecuteStatementV2Request\x1a\x19.ExecuteStatementResponse\x12G\n\x10getNextResultRow\x12\x18.GetNextResultRowRequest\x1a\x19.GetNextResultRowResponse\x12M\n\x12getNextResultBatch\x12\x1a.GetNextResultBatchRequest\x1a\x1b.GetNextResultBatchResponse\x12J\n\x11getResultMetadata\x12\x19.GetResultMetadataRequest\x1a\x1a.GetResultMetadataResponse\x12;\n\x0c\x61uthenticate\x12\x14.AuthenticateRequest\x1a\x15.AuthenticateResponse\x12\x32\n\tgetTables\x12\x11.GetTablesRequest\x1a\x12.GetTablesResponse\x12\x36\n\x0bgetTablesV2\x12\x13.GetTablesV2Request\x1a\x12.GetTablesResponse\x12\x41\n\x0egetSchemaNames\x12\x16.GetSchemaNamesRequest\x1a\x17.GetSchemaNamesResponse\x12\x45\n\x10getSchemaNamesV2\x12\x18.GetSchemaNamesV2Request\x1a\x17.GetSchemaNamesResponse\x12\x35\n\ngetColumns\x12\x12.GetColumnsRequest\x1a\x13.GetColumnsResponse\x12\x39\n\x0cgetColumnsV2\x12\x14.GetColumnsV2Request\x1a\x13.GetColumnsResponse\x12\x38\n\x0bupdateUsers\x12\x13.UpdateUsersRequest\x1a\x14.UpdateUsersResponse\x12/\n\x08setProps\x12\x10.SetPropsRequest\x1a\x11.SetPropsResponse\x12)\n\x06status\x12\x0e.StatusRequest\x1a\x0f.StatusResponse\x12\x38\n\x0b\x61\x64\x64\x43\x61talogs\x12\x13.AddCatalogsRequest\x1a\x14.AddCatalogsResponse\x12I\n\x16getAddCatalogsResponse\x12\x16.GetAddCatalogsRequest\x1a\x17.GetAddCatalogsResponse\x12;\n\x0cgetCataloges\x12\x14.GetCatalogesRequest\x1a\x15.GetCatalogesResponse\x12\x45\n\x18getNextRemoteCachedChunk\x12\x13.RemoteChunkRequest\x1a\x14.RemoteChunkResponse\x12\x44\n\x0frefreshCatalogs\x12\x17.RefreshCatalogsRequest\x1a\x18.RefreshCatalogsResponse\x12\x38\n\x0f\x63reateDataFrame\x12\x11.DataFrameRequest\x1a\x12.DataFrameResponse\x12G\n\x10\x65xecuteDataFrame\x12\x18.ExecuteDataFrameRequest\x1a\x19.ExecuteDataFrameResponseB\x02P\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'e6x_engine_pb2', _globals) if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'P\001' _globals['_GFIELDINFO']._serialized_start=20 @@ -135,6 +136,14 @@ _globals['_CLEARORCANCELQUERYREQUEST']._serialized_end=3510 _globals['_CLEARORCANCELQUERYRESPONSE']._serialized_start=3512 _globals['_CLEARORCANCELQUERYRESPONSE']._serialized_end=3540 - _globals['_QUERYENGINESERVICE']._serialized_start=3543 - _globals['_QUERYENGINESERVICE']._serialized_end=5377 + _globals['_DATAFRAMEREQUEST']._serialized_start=3542 + _globals['_DATAFRAMEREQUEST']._serialized_end=3618 + _globals['_DATAFRAMERESPONSE']._serialized_start=3620 + _globals['_DATAFRAMERESPONSE']._serialized_end=3656 + _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_start=3658 + _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_end=3700 + _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_start=3702 + _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_end=3728 + _globals['_QUERYENGINESERVICE']._serialized_start=3731 + _globals['_QUERYENGINESERVICE']._serialized_end=5696 # @@protoc_insertion_point(module_scope) diff --git a/e6data_python_connector/server/e6x_engine_pb2.pyi b/e6data_python_connector/server/e6x_engine_pb2.pyi index 90c6bc0..7f1974a 100644 --- a/e6data_python_connector/server/e6x_engine_pb2.pyi +++ b/e6data_python_connector/server/e6x_engine_pb2.pyi @@ -466,3 +466,29 @@ class ClearOrCancelQueryRequest(_message.Message): class ClearOrCancelQueryResponse(_message.Message): __slots__ = [] def __init__(self) -> None: ... + +class DataFrameRequest(_message.Message): + __slots__ = ["parquetFilePath", "catalog", "schema"] + PARQUETFILEPATH_FIELD_NUMBER: _ClassVar[int] + CATALOG_FIELD_NUMBER: _ClassVar[int] + SCHEMA_FIELD_NUMBER: _ClassVar[int] + parquetFilePath: str + catalog: str + schema: str + def __init__(self, parquetFilePath: _Optional[str] = ..., catalog: _Optional[str] = ..., schema: _Optional[str] = ...) -> None: ... + +class DataFrameResponse(_message.Message): + __slots__ = ["queryId"] + QUERYID_FIELD_NUMBER: _ClassVar[int] + queryId: str + def __init__(self, queryId: _Optional[str] = ...) -> None: ... + +class ExecuteDataFrameRequest(_message.Message): + __slots__ = ["queryId"] + QUERYID_FIELD_NUMBER: _ClassVar[int] + queryId: str + def __init__(self, queryId: _Optional[str] = ...) -> None: ... + +class ExecuteDataFrameResponse(_message.Message): + __slots__ = [] + def __init__(self) -> None: ... diff --git a/e6data_python_connector/server/e6x_engine_pb2_grpc.py b/e6data_python_connector/server/e6x_engine_pb2_grpc.py index 4b3fbf3..85a41dd 100644 --- a/e6data_python_connector/server/e6x_engine_pb2_grpc.py +++ b/e6data_python_connector/server/e6x_engine_pb2_grpc.py @@ -159,6 +159,16 @@ def __init__(self, channel): request_serializer=e6x__engine__pb2.RefreshCatalogsRequest.SerializeToString, response_deserializer=e6x__engine__pb2.RefreshCatalogsResponse.FromString, ) + self.createDataFrame = channel.unary_unary( + '/QueryEngineService/createDataFrame', + request_serializer=e6x__engine__pb2.DataFrameRequest.SerializeToString, + response_deserializer=e6x__engine__pb2.DataFrameResponse.FromString, + ) + self.executeDataFrame = channel.unary_unary( + '/QueryEngineService/executeDataFrame', + request_serializer=e6x__engine__pb2.ExecuteDataFrameRequest.SerializeToString, + response_deserializer=e6x__engine__pb2.ExecuteDataFrameResponse.FromString, + ) class QueryEngineServiceServicer(object): @@ -339,6 +349,18 @@ def refreshCatalogs(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def createDataFrame(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def executeDataFrame(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_QueryEngineServiceServicer_to_server(servicer, server): rpc_method_handlers = { @@ -487,6 +509,16 @@ def add_QueryEngineServiceServicer_to_server(servicer, server): request_deserializer=e6x__engine__pb2.RefreshCatalogsRequest.FromString, response_serializer=e6x__engine__pb2.RefreshCatalogsResponse.SerializeToString, ), + 'createDataFrame': grpc.unary_unary_rpc_method_handler( + servicer.createDataFrame, + request_deserializer=e6x__engine__pb2.DataFrameRequest.FromString, + response_serializer=e6x__engine__pb2.DataFrameResponse.SerializeToString, + ), + 'executeDataFrame': grpc.unary_unary_rpc_method_handler( + servicer.executeDataFrame, + request_deserializer=e6x__engine__pb2.ExecuteDataFrameRequest.FromString, + response_serializer=e6x__engine__pb2.ExecuteDataFrameResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'QueryEngineService', rpc_method_handlers) @@ -989,3 +1021,37 @@ def refreshCatalogs(request, e6x__engine__pb2.RefreshCatalogsResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def createDataFrame(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/QueryEngineService/createDataFrame', + e6x__engine__pb2.DataFrameRequest.SerializeToString, + e6x__engine__pb2.DataFrameResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def executeDataFrame(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/QueryEngineService/executeDataFrame', + e6x__engine__pb2.ExecuteDataFrameRequest.SerializeToString, + e6x__engine__pb2.ExecuteDataFrameResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/e6x_engine.proto b/e6x_engine.proto index d2b30b5..6356762 100644 --- a/e6x_engine.proto +++ b/e6x_engine.proto @@ -297,6 +297,27 @@ message ClearOrCancelQueryRequest{ message ClearOrCancelQueryResponse{ } +// DataFrame + +message DataFrameRequest +{ + string parquetFilePath = 1; + string catalog = 2; + string schema = 3; +} + +message DataFrameResponse +{ + string queryId = 1; +} + +message ExecuteDataFrameRequest +{ + string queryId = 1; +} + +message ExecuteDataFrameResponse {} + service QueryEngineService { rpc clear(ClearRequest) returns (ClearResponse); @@ -355,4 +376,8 @@ service QueryEngineService { rpc getNextRemoteCachedChunk(RemoteChunkRequest) returns (RemoteChunkResponse); rpc refreshCatalogs(RefreshCatalogsRequest) returns (RefreshCatalogsResponse); + + rpc createDataFrame(DataFrameRequest) returns (DataFrameResponse); + + rpc executeDataFrame(ExecuteDataFrameRequest) returns (ExecuteDataFrameResponse); } \ No newline at end of file From 41496aef925f908b95776a5647479f92813162ce Mon Sep 17 00:00:00 2001 From: Yash Date: Tue, 12 Nov 2024 19:53:27 +0530 Subject: [PATCH 2/9] add projection support in dataframe --- dataframe_test.py | 10 ++-- e6data_python_connector/e6data_grpc.py | 49 ++++++++++++++----- .../server/e6x_engine_pb2.py | 26 +++++----- .../server/e6x_engine_pb2.pyi | 32 +++++++++--- .../server/e6x_engine_pb2_grpc.py | 45 ++++++++++++++--- e6x_engine.proto | 20 ++++++-- 6 files changed, 141 insertions(+), 41 deletions(-) diff --git a/dataframe_test.py b/dataframe_test.py index 8d0b950..c94bf4a 100644 --- a/dataframe_test.py +++ b/dataframe_test.py @@ -8,7 +8,7 @@ class TestDataFrame(TestCase): def setUp(self) -> None: - self._host = "127.0.0.1" + self._host = "localhost" self._catalog = "demogluecatalog" self._database = "tpcds_1000_delta" logging.debug('Trying to connect to engine') @@ -30,7 +30,11 @@ def tearDown(self) -> None: self.disconnect() def test_table_creation(self): - self._dataframe = self.e6x_connection.dataframe('') + self._dataframe = self.e6x_connection.load_parquet('') + self._dataframe.select('col1','col1','colN') + rows = self._dataframe.show() - print(rows) + + for row in rows: + print(row) diff --git a/e6data_python_connector/e6data_grpc.py b/e6data_python_connector/e6data_grpc.py index 0032f93..2875d05 100644 --- a/e6data_python_connector/e6data_grpc.py +++ b/e6data_python_connector/e6data_grpc.py @@ -533,7 +533,7 @@ def cursor(self, catalog_name=None, db_name=None): """ return Cursor(self, database=db_name, catalog_name=catalog_name) - def dataframe(self, parquet_path): + def load_parquet(self, parquet_path): return DataFrame(self, file_path=parquet_path) def rollback(self): @@ -555,6 +555,10 @@ def client(self): """ return self._client + @property + def host(self): + return self._host + class Cursor(DBAPICursor): """ @@ -1040,21 +1044,23 @@ class DataFrame: def __init__(self, connection: Connection, file_path): self.connection = connection self._file_path = file_path - self._engine_ip = '127.0.0.1' - self._sessionId = 'abc' + self._engine_ip = connection.host + self._sessionId = connection.get_session_id self._is_metadata_updated = False self._query_id = None self._data = None self._batch = None - self.create_dataframe() + self._create_dataframe() - def create_dataframe(self): + def _create_dataframe(self): client = self.connection.client - create_dataframe_request = e6x_engine_pb2.DataFrameRequest( + create_dataframe_request = e6x_engine_pb2.CreateDataFrameRequest( parquetFilePath=self._file_path, catalog=self.connection.catalog_name, - schema=self.connection.database + schema=self.connection.database, + sessionId=self._sessionId, + engineIP=self._engine_ip ) create_dataframe_response = client.createDataFrame( @@ -1062,14 +1068,33 @@ def create_dataframe(self): ) self._query_id = create_dataframe_response.queryId + def select(self, *fields): + projection_fields = [] + for field in fields: + projection_fields.append(field) + + client = self.connection.client + projection_on_dataframe_request = e6x_engine_pb2.ProjectionOnDataFrameRequest( + queryId=self._query_id, + sessionId=self._sessionId, + field=projection_fields + ) + + projection_on_dataframe_response = client.projectionOnDataFrame( + projection_on_dataframe_request + ) + + return self + def show(self): - self._execute() - return self._fetchall() + self.execute() + return self.fetchall() - def _execute(self): + def execute(self): client = self.connection.client execute_dataframe_request = e6x_engine_pb2.ExecuteDataFrameRequest( - queryId=self._query_id + queryId=self._query_id, + sessionId=self._sessionId ) execute_dataframe_response = client.executeDataFrame( execute_dataframe_request @@ -1106,7 +1131,7 @@ def _fetch_batch(self): # one batch retrieves the predefined set of rows return read_rows_from_chunk(self._query_columns_description, buffer) - def _fetchall(self): + def fetchall(self): self._data = list() while True: rows = self._fetch_batch() diff --git a/e6data_python_connector/server/e6x_engine_pb2.py b/e6data_python_connector/server/e6x_engine_pb2.py index be9ae38..121efd4 100644 --- a/e6data_python_connector/server/e6x_engine_pb2.py +++ b/e6data_python_connector/server/e6x_engine_pb2.py @@ -13,7 +13,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10\x65\x36x_engine.proto\"2\n\nGFieldInfo\x12\x11\n\tfieldName\x18\x01 \x01(\t\x12\x11\n\tfieldType\x18\x02 \x01(\t\"A\n\x13\x46\x61iledSchemaElement\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0e\n\x06reason\x18\x03 \x01(\t\"P\n\x16GetAddCatalogsResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\x12&\n\x08\x66\x61ilures\x18\x02 \x03(\x0b\x32\x14.FailedSchemaElement\"2\n\x0f\x43\x61talogResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tisDefault\x18\x02 \x01(\x08\"<\n\x0eParameterValue\x12\r\n\x05index\x18\x01 \x01(\x11\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\"D\n\x0c\x43learRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x0f\n\rClearResponse\"J\n\x12\x43\x61ncelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x15\n\x13\x43\x61ncelQueryResponse\"F\n\x0e\x45xplainRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\"\n\x0f\x45xplainResponse\x12\x0f\n\x07\x65xplain\x18\x01 \x01(\t\"Y\n\rDryRunRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\"%\n\x0e\x44ryRunResponse\x12\x13\n\x0b\x64ryrunValue\x18\x01 \x01(\t\"l\n\x0f\x44ryRunRequestV2\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x05 \x01(\t\"M\n\x15\x45xplainAnalyzeRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"m\n\x16\x45xplainAnalyzeResponse\x12\x16\n\x0e\x65xplainAnalyze\x18\x01 \x01(\t\x12\x10\n\x08isCached\x18\x02 \x01(\x08\x12\x13\n\x0bparsingTime\x18\x03 \x01(\x12\x12\x14\n\x0cqueueingTime\x18\x04 \x01(\x12\"b\n\x17PrepareStatementRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x13\n\x0bqueryString\x18\x03 \x01(\t\x12\x0f\n\x07quoting\x18\x04 \x01(\t\"u\n\x19PrepareStatementV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07quoting\x18\x05 \x01(\t\"=\n\x18PrepareStatementResponse\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\"@\n\x0eUserAccessInfo\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x10\n\x08userName\x18\x02 \x01(\t\x12\x0e\n\x06tokens\x18\x03 \x03(\t\"g\n\x17\x45xecuteStatementRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\"\x8a\x01\n\x19\x45xecuteStatementV2Request\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\x12\x1f\n\x06params\x18\x05 \x03(\x0b\x32\x0f.ParameterValue\"\x1a\n\x18\x45xecuteStatementResponse\"O\n\x17GetNextResultRowRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"-\n\x18GetNextResultRowResponse\x12\x11\n\tresultRow\x18\x02 \x01(\x0c\"w\n\x19GetNextResultBatchRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\tasRowData\x18\x04 \x01(\x08H\x00\x88\x01\x01\x42\x0c\n\n_asRowData\"1\n\x1aGetNextResultBatchResponse\x12\x13\n\x0bresultBatch\x18\x02 \x01(\x0c\"P\n\x18GetResultMetadataRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"3\n\x19GetResultMetadataResponse\x12\x16\n\x0eresultMetaData\x18\x01 \x01(\x0c\"5\n\x13\x41uthenticateRequest\x12\x0c\n\x04user\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\")\n\x14\x41uthenticateResponse\x12\x11\n\tsessionId\x18\x01 \x01(\t\"5\n\x10GetTablesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\"H\n\x12GetTablesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\"#\n\x11GetTablesResponse\x12\x0e\n\x06tables\x18\x01 \x03(\t\"*\n\x15GetSchemaNamesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"=\n\x17GetSchemaNamesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\")\n\x16GetSchemaNamesResponse\x12\x0f\n\x07schemas\x18\x01 \x03(\t\"E\n\x11GetColumnsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\"X\n\x13GetColumnsV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x04 \x01(\t\"4\n\x12GetColumnsResponse\x12\x1e\n\tfieldInfo\x18\x01 \x03(\x0b\x32\x0b.GFieldInfo\"E\n\rStatusRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"2\n\x0eStatusResponse\x12\x0e\n\x06status\x18\x02 \x01(\x08\x12\x10\n\x08rowCount\x18\x03 \x01(\x12\"5\n\x12\x41\x64\x64\x43\x61talogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0c\n\x04json\x18\x02 \x01(\t\"#\n\x12UpdateUsersRequest\x12\r\n\x05users\x18\x01 \x01(\x0c\"\x15\n\x13UpdateUsersResponse\"3\n\x0fSetPropsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\r\n\x05props\x18\x02 \x01(\t\"\x12\n\x10SetPropsResponse\"*\n\x15GetAddCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x15\n\x13\x41\x64\x64\x43\x61talogsResponse\"\x15\n\x13GetCatalogesRequest\"B\n\x14GetCatalogesResponse\x12*\n\x10\x63\x61talogResponses\x18\x01 \x03(\x0b\x32\x10.CatalogResponse\"+\n\x16RefreshCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x19\n\x17RefreshCatalogsResponse\"X\n\x12RemoteChunkRequest\x12\x17\n\x0foriginalQueryId\x18\x01 \x01(\t\x12\x15\n\rremoteQueryId\x18\x02 \x01(\t\x12\x12\n\nsQueryHash\x18\x03 \x01(\t\"3\n\x13RemoteChunkResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\r\n\x05\x63hunk\x18\x02 \x01(\x0c\"Q\n\x19\x43learOrCancelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x1c\n\x1a\x43learOrCancelQueryResponse\"L\n\x10\x44\x61taFrameRequest\x12\x17\n\x0fparquetFilePath\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\"$\n\x11\x44\x61taFrameResponse\x12\x0f\n\x07queryId\x18\x01 \x01(\t\"*\n\x17\x45xecuteDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\"\x1a\n\x18\x45xecuteDataFrameResponse2\xad\x0f\n\x12QueryEngineService\x12&\n\x05\x63lear\x12\r.ClearRequest\x1a\x0e.ClearResponse\x12\x38\n\x0b\x63\x61ncelQuery\x12\x13.CancelQueryRequest\x1a\x14.CancelQueryResponse\x12M\n\x12\x63learOrCancelQuery\x12\x1a.ClearOrCancelQueryRequest\x1a\x1b.ClearOrCancelQueryResponse\x12,\n\x07\x65xplain\x12\x0f.ExplainRequest\x1a\x10.ExplainResponse\x12)\n\x06\x64ryRun\x12\x0e.DryRunRequest\x1a\x0f.DryRunResponse\x12-\n\x08\x64ryRunV2\x12\x10.DryRunRequestV2\x1a\x0f.DryRunResponse\x12\x41\n\x0e\x65xplainAnalyze\x12\x16.ExplainAnalyzeRequest\x1a\x17.ExplainAnalyzeResponse\x12G\n\x10prepareStatement\x12\x18.PrepareStatementRequest\x1a\x19.PrepareStatementResponse\x12K\n\x12prepareStatementV2\x12\x1a.PrepareStatementV2Request\x1a\x19.PrepareStatementResponse\x12G\n\x10\x65xecuteStatement\x12\x18.ExecuteStatementRequest\x1a\x19.ExecuteStatementResponse\x12K\n\x12\x65xecuteStatementV2\x12\x1a.ExecuteStatementV2Request\x1a\x19.ExecuteStatementResponse\x12G\n\x10getNextResultRow\x12\x18.GetNextResultRowRequest\x1a\x19.GetNextResultRowResponse\x12M\n\x12getNextResultBatch\x12\x1a.GetNextResultBatchRequest\x1a\x1b.GetNextResultBatchResponse\x12J\n\x11getResultMetadata\x12\x19.GetResultMetadataRequest\x1a\x1a.GetResultMetadataResponse\x12;\n\x0c\x61uthenticate\x12\x14.AuthenticateRequest\x1a\x15.AuthenticateResponse\x12\x32\n\tgetTables\x12\x11.GetTablesRequest\x1a\x12.GetTablesResponse\x12\x36\n\x0bgetTablesV2\x12\x13.GetTablesV2Request\x1a\x12.GetTablesResponse\x12\x41\n\x0egetSchemaNames\x12\x16.GetSchemaNamesRequest\x1a\x17.GetSchemaNamesResponse\x12\x45\n\x10getSchemaNamesV2\x12\x18.GetSchemaNamesV2Request\x1a\x17.GetSchemaNamesResponse\x12\x35\n\ngetColumns\x12\x12.GetColumnsRequest\x1a\x13.GetColumnsResponse\x12\x39\n\x0cgetColumnsV2\x12\x14.GetColumnsV2Request\x1a\x13.GetColumnsResponse\x12\x38\n\x0bupdateUsers\x12\x13.UpdateUsersRequest\x1a\x14.UpdateUsersResponse\x12/\n\x08setProps\x12\x10.SetPropsRequest\x1a\x11.SetPropsResponse\x12)\n\x06status\x12\x0e.StatusRequest\x1a\x0f.StatusResponse\x12\x38\n\x0b\x61\x64\x64\x43\x61talogs\x12\x13.AddCatalogsRequest\x1a\x14.AddCatalogsResponse\x12I\n\x16getAddCatalogsResponse\x12\x16.GetAddCatalogsRequest\x1a\x17.GetAddCatalogsResponse\x12;\n\x0cgetCataloges\x12\x14.GetCatalogesRequest\x1a\x15.GetCatalogesResponse\x12\x45\n\x18getNextRemoteCachedChunk\x12\x13.RemoteChunkRequest\x1a\x14.RemoteChunkResponse\x12\x44\n\x0frefreshCatalogs\x12\x17.RefreshCatalogsRequest\x1a\x18.RefreshCatalogsResponse\x12\x38\n\x0f\x63reateDataFrame\x12\x11.DataFrameRequest\x1a\x12.DataFrameResponse\x12G\n\x10\x65xecuteDataFrame\x12\x18.ExecuteDataFrameRequest\x1a\x19.ExecuteDataFrameResponseB\x02P\x01\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10\x65\x36x_engine.proto\"2\n\nGFieldInfo\x12\x11\n\tfieldName\x18\x01 \x01(\t\x12\x11\n\tfieldType\x18\x02 \x01(\t\"A\n\x13\x46\x61iledSchemaElement\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0e\n\x06reason\x18\x03 \x01(\t\"P\n\x16GetAddCatalogsResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\x12&\n\x08\x66\x61ilures\x18\x02 \x03(\x0b\x32\x14.FailedSchemaElement\"2\n\x0f\x43\x61talogResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tisDefault\x18\x02 \x01(\x08\"<\n\x0eParameterValue\x12\r\n\x05index\x18\x01 \x01(\x11\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\"D\n\x0c\x43learRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x0f\n\rClearResponse\"J\n\x12\x43\x61ncelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x15\n\x13\x43\x61ncelQueryResponse\"F\n\x0e\x45xplainRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\"\n\x0f\x45xplainResponse\x12\x0f\n\x07\x65xplain\x18\x01 \x01(\t\"Y\n\rDryRunRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\"%\n\x0e\x44ryRunResponse\x12\x13\n\x0b\x64ryrunValue\x18\x01 \x01(\t\"l\n\x0f\x44ryRunRequestV2\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x05 \x01(\t\"M\n\x15\x45xplainAnalyzeRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"m\n\x16\x45xplainAnalyzeResponse\x12\x16\n\x0e\x65xplainAnalyze\x18\x01 \x01(\t\x12\x10\n\x08isCached\x18\x02 \x01(\x08\x12\x13\n\x0bparsingTime\x18\x03 \x01(\x12\x12\x14\n\x0cqueueingTime\x18\x04 \x01(\x12\"b\n\x17PrepareStatementRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x13\n\x0bqueryString\x18\x03 \x01(\t\x12\x0f\n\x07quoting\x18\x04 \x01(\t\"u\n\x19PrepareStatementV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07quoting\x18\x05 \x01(\t\"=\n\x18PrepareStatementResponse\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\"@\n\x0eUserAccessInfo\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x10\n\x08userName\x18\x02 \x01(\t\x12\x0e\n\x06tokens\x18\x03 \x03(\t\"g\n\x17\x45xecuteStatementRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\"\x8a\x01\n\x19\x45xecuteStatementV2Request\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\x12\x1f\n\x06params\x18\x05 \x03(\x0b\x32\x0f.ParameterValue\"\x1a\n\x18\x45xecuteStatementResponse\"O\n\x17GetNextResultRowRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"-\n\x18GetNextResultRowResponse\x12\x11\n\tresultRow\x18\x02 \x01(\x0c\"w\n\x19GetNextResultBatchRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\tasRowData\x18\x04 \x01(\x08H\x00\x88\x01\x01\x42\x0c\n\n_asRowData\"1\n\x1aGetNextResultBatchResponse\x12\x13\n\x0bresultBatch\x18\x02 \x01(\x0c\"P\n\x18GetResultMetadataRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"3\n\x19GetResultMetadataResponse\x12\x16\n\x0eresultMetaData\x18\x01 \x01(\x0c\"5\n\x13\x41uthenticateRequest\x12\x0c\n\x04user\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\")\n\x14\x41uthenticateResponse\x12\x11\n\tsessionId\x18\x01 \x01(\t\"5\n\x10GetTablesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\"H\n\x12GetTablesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\"#\n\x11GetTablesResponse\x12\x0e\n\x06tables\x18\x01 \x03(\t\"*\n\x15GetSchemaNamesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"=\n\x17GetSchemaNamesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\")\n\x16GetSchemaNamesResponse\x12\x0f\n\x07schemas\x18\x01 \x03(\t\"E\n\x11GetColumnsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\"X\n\x13GetColumnsV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x04 \x01(\t\"4\n\x12GetColumnsResponse\x12\x1e\n\tfieldInfo\x18\x01 \x03(\x0b\x32\x0b.GFieldInfo\"E\n\rStatusRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"2\n\x0eStatusResponse\x12\x0e\n\x06status\x18\x02 \x01(\x08\x12\x10\n\x08rowCount\x18\x03 \x01(\x12\"5\n\x12\x41\x64\x64\x43\x61talogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0c\n\x04json\x18\x02 \x01(\t\"#\n\x12UpdateUsersRequest\x12\r\n\x05users\x18\x01 \x01(\x0c\"\x15\n\x13UpdateUsersResponse\"3\n\x0fSetPropsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\r\n\x05props\x18\x02 \x01(\t\"\x12\n\x10SetPropsResponse\"*\n\x15GetAddCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x15\n\x13\x41\x64\x64\x43\x61talogsResponse\"\x15\n\x13GetCatalogesRequest\"B\n\x14GetCatalogesResponse\x12*\n\x10\x63\x61talogResponses\x18\x01 \x03(\x0b\x32\x10.CatalogResponse\"+\n\x16RefreshCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x19\n\x17RefreshCatalogsResponse\"X\n\x12RemoteChunkRequest\x12\x17\n\x0foriginalQueryId\x18\x01 \x01(\t\x12\x15\n\rremoteQueryId\x18\x02 \x01(\t\x12\x12\n\nsQueryHash\x18\x03 \x01(\t\"3\n\x13RemoteChunkResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\r\n\x05\x63hunk\x18\x02 \x01(\x0c\"Q\n\x19\x43learOrCancelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x1c\n\x1a\x43learOrCancelQueryResponse\"w\n\x16\x43reateDataFrameRequest\x12\x17\n\x0fparquetFilePath\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x11\n\tsessionId\x18\x04 \x01(\t\x12\x10\n\x08\x65ngineIP\x18\x05 \x01(\t\"*\n\x17\x43reateDataFrameResponse\x12\x0f\n\x07queryId\x18\x01 \x01(\t\"Q\n\x1cProjectionOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\r\n\x05\x66ield\x18\x03 \x03(\t\"\x1f\n\x1dProjectionOnDataFrameResponse\"=\n\x17\x45xecuteDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\"\x1a\n\x18\x45xecuteDataFrameResponse2\x91\x10\n\x12QueryEngineService\x12&\n\x05\x63lear\x12\r.ClearRequest\x1a\x0e.ClearResponse\x12\x38\n\x0b\x63\x61ncelQuery\x12\x13.CancelQueryRequest\x1a\x14.CancelQueryResponse\x12M\n\x12\x63learOrCancelQuery\x12\x1a.ClearOrCancelQueryRequest\x1a\x1b.ClearOrCancelQueryResponse\x12,\n\x07\x65xplain\x12\x0f.ExplainRequest\x1a\x10.ExplainResponse\x12)\n\x06\x64ryRun\x12\x0e.DryRunRequest\x1a\x0f.DryRunResponse\x12-\n\x08\x64ryRunV2\x12\x10.DryRunRequestV2\x1a\x0f.DryRunResponse\x12\x41\n\x0e\x65xplainAnalyze\x12\x16.ExplainAnalyzeRequest\x1a\x17.ExplainAnalyzeResponse\x12G\n\x10prepareStatement\x12\x18.PrepareStatementRequest\x1a\x19.PrepareStatementResponse\x12K\n\x12prepareStatementV2\x12\x1a.PrepareStatementV2Request\x1a\x19.PrepareStatementResponse\x12G\n\x10\x65xecuteStatement\x12\x18.ExecuteStatementRequest\x1a\x19.ExecuteStatementResponse\x12K\n\x12\x65xecuteStatementV2\x12\x1a.ExecuteStatementV2Request\x1a\x19.ExecuteStatementResponse\x12G\n\x10getNextResultRow\x12\x18.GetNextResultRowRequest\x1a\x19.GetNextResultRowResponse\x12M\n\x12getNextResultBatch\x12\x1a.GetNextResultBatchRequest\x1a\x1b.GetNextResultBatchResponse\x12J\n\x11getResultMetadata\x12\x19.GetResultMetadataRequest\x1a\x1a.GetResultMetadataResponse\x12;\n\x0c\x61uthenticate\x12\x14.AuthenticateRequest\x1a\x15.AuthenticateResponse\x12\x32\n\tgetTables\x12\x11.GetTablesRequest\x1a\x12.GetTablesResponse\x12\x36\n\x0bgetTablesV2\x12\x13.GetTablesV2Request\x1a\x12.GetTablesResponse\x12\x41\n\x0egetSchemaNames\x12\x16.GetSchemaNamesRequest\x1a\x17.GetSchemaNamesResponse\x12\x45\n\x10getSchemaNamesV2\x12\x18.GetSchemaNamesV2Request\x1a\x17.GetSchemaNamesResponse\x12\x35\n\ngetColumns\x12\x12.GetColumnsRequest\x1a\x13.GetColumnsResponse\x12\x39\n\x0cgetColumnsV2\x12\x14.GetColumnsV2Request\x1a\x13.GetColumnsResponse\x12\x38\n\x0bupdateUsers\x12\x13.UpdateUsersRequest\x1a\x14.UpdateUsersResponse\x12/\n\x08setProps\x12\x10.SetPropsRequest\x1a\x11.SetPropsResponse\x12)\n\x06status\x12\x0e.StatusRequest\x1a\x0f.StatusResponse\x12\x38\n\x0b\x61\x64\x64\x43\x61talogs\x12\x13.AddCatalogsRequest\x1a\x14.AddCatalogsResponse\x12I\n\x16getAddCatalogsResponse\x12\x16.GetAddCatalogsRequest\x1a\x17.GetAddCatalogsResponse\x12;\n\x0cgetCataloges\x12\x14.GetCatalogesRequest\x1a\x15.GetCatalogesResponse\x12\x45\n\x18getNextRemoteCachedChunk\x12\x13.RemoteChunkRequest\x1a\x14.RemoteChunkResponse\x12\x44\n\x0frefreshCatalogs\x12\x17.RefreshCatalogsRequest\x1a\x18.RefreshCatalogsResponse\x12\x44\n\x0f\x63reateDataFrame\x12\x17.CreateDataFrameRequest\x1a\x18.CreateDataFrameResponse\x12V\n\x15projectionOnDataFrame\x12\x1d.ProjectionOnDataFrameRequest\x1a\x1e.ProjectionOnDataFrameResponse\x12G\n\x10\x65xecuteDataFrame\x12\x18.ExecuteDataFrameRequest\x1a\x19.ExecuteDataFrameResponseB\x02P\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -136,14 +136,18 @@ _globals['_CLEARORCANCELQUERYREQUEST']._serialized_end=3510 _globals['_CLEARORCANCELQUERYRESPONSE']._serialized_start=3512 _globals['_CLEARORCANCELQUERYRESPONSE']._serialized_end=3540 - _globals['_DATAFRAMEREQUEST']._serialized_start=3542 - _globals['_DATAFRAMEREQUEST']._serialized_end=3618 - _globals['_DATAFRAMERESPONSE']._serialized_start=3620 - _globals['_DATAFRAMERESPONSE']._serialized_end=3656 - _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_start=3658 - _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_end=3700 - _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_start=3702 - _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_end=3728 - _globals['_QUERYENGINESERVICE']._serialized_start=3731 - _globals['_QUERYENGINESERVICE']._serialized_end=5696 + _globals['_CREATEDATAFRAMEREQUEST']._serialized_start=3542 + _globals['_CREATEDATAFRAMEREQUEST']._serialized_end=3661 + _globals['_CREATEDATAFRAMERESPONSE']._serialized_start=3663 + _globals['_CREATEDATAFRAMERESPONSE']._serialized_end=3705 + _globals['_PROJECTIONONDATAFRAMEREQUEST']._serialized_start=3707 + _globals['_PROJECTIONONDATAFRAMEREQUEST']._serialized_end=3788 + _globals['_PROJECTIONONDATAFRAMERESPONSE']._serialized_start=3790 + _globals['_PROJECTIONONDATAFRAMERESPONSE']._serialized_end=3821 + _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_start=3823 + _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_end=3884 + _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_start=3886 + _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_end=3912 + _globals['_QUERYENGINESERVICE']._serialized_start=3915 + _globals['_QUERYENGINESERVICE']._serialized_end=5980 # @@protoc_insertion_point(module_scope) diff --git a/e6data_python_connector/server/e6x_engine_pb2.pyi b/e6data_python_connector/server/e6x_engine_pb2.pyi index 7f1974a..c576906 100644 --- a/e6data_python_connector/server/e6x_engine_pb2.pyi +++ b/e6data_python_connector/server/e6x_engine_pb2.pyi @@ -467,27 +467,47 @@ class ClearOrCancelQueryResponse(_message.Message): __slots__ = [] def __init__(self) -> None: ... -class DataFrameRequest(_message.Message): - __slots__ = ["parquetFilePath", "catalog", "schema"] +class CreateDataFrameRequest(_message.Message): + __slots__ = ["parquetFilePath", "catalog", "schema", "sessionId", "engineIP"] PARQUETFILEPATH_FIELD_NUMBER: _ClassVar[int] CATALOG_FIELD_NUMBER: _ClassVar[int] SCHEMA_FIELD_NUMBER: _ClassVar[int] + SESSIONID_FIELD_NUMBER: _ClassVar[int] + ENGINEIP_FIELD_NUMBER: _ClassVar[int] parquetFilePath: str catalog: str schema: str - def __init__(self, parquetFilePath: _Optional[str] = ..., catalog: _Optional[str] = ..., schema: _Optional[str] = ...) -> None: ... + sessionId: str + engineIP: str + def __init__(self, parquetFilePath: _Optional[str] = ..., catalog: _Optional[str] = ..., schema: _Optional[str] = ..., sessionId: _Optional[str] = ..., engineIP: _Optional[str] = ...) -> None: ... -class DataFrameResponse(_message.Message): +class CreateDataFrameResponse(_message.Message): __slots__ = ["queryId"] QUERYID_FIELD_NUMBER: _ClassVar[int] queryId: str def __init__(self, queryId: _Optional[str] = ...) -> None: ... +class ProjectionOnDataFrameRequest(_message.Message): + __slots__ = ["queryId", "sessionId", "field"] + QUERYID_FIELD_NUMBER: _ClassVar[int] + SESSIONID_FIELD_NUMBER: _ClassVar[int] + FIELD_FIELD_NUMBER: _ClassVar[int] + queryId: str + sessionId: str + field: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, queryId: _Optional[str] = ..., sessionId: _Optional[str] = ..., field: _Optional[_Iterable[str]] = ...) -> None: ... + +class ProjectionOnDataFrameResponse(_message.Message): + __slots__ = [] + def __init__(self) -> None: ... + class ExecuteDataFrameRequest(_message.Message): - __slots__ = ["queryId"] + __slots__ = ["queryId", "sessionId"] QUERYID_FIELD_NUMBER: _ClassVar[int] + SESSIONID_FIELD_NUMBER: _ClassVar[int] queryId: str - def __init__(self, queryId: _Optional[str] = ...) -> None: ... + sessionId: str + def __init__(self, queryId: _Optional[str] = ..., sessionId: _Optional[str] = ...) -> None: ... class ExecuteDataFrameResponse(_message.Message): __slots__ = [] diff --git a/e6data_python_connector/server/e6x_engine_pb2_grpc.py b/e6data_python_connector/server/e6x_engine_pb2_grpc.py index 85a41dd..edad164 100644 --- a/e6data_python_connector/server/e6x_engine_pb2_grpc.py +++ b/e6data_python_connector/server/e6x_engine_pb2_grpc.py @@ -161,8 +161,13 @@ def __init__(self, channel): ) self.createDataFrame = channel.unary_unary( '/QueryEngineService/createDataFrame', - request_serializer=e6x__engine__pb2.DataFrameRequest.SerializeToString, - response_deserializer=e6x__engine__pb2.DataFrameResponse.FromString, + request_serializer=e6x__engine__pb2.CreateDataFrameRequest.SerializeToString, + response_deserializer=e6x__engine__pb2.CreateDataFrameResponse.FromString, + ) + self.projectionOnDataFrame = channel.unary_unary( + '/QueryEngineService/projectionOnDataFrame', + request_serializer=e6x__engine__pb2.ProjectionOnDataFrameRequest.SerializeToString, + response_deserializer=e6x__engine__pb2.ProjectionOnDataFrameResponse.FromString, ) self.executeDataFrame = channel.unary_unary( '/QueryEngineService/executeDataFrame', @@ -355,6 +360,12 @@ def createDataFrame(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def projectionOnDataFrame(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def executeDataFrame(self, request, context): """Missing associated documentation comment in .proto file.""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) @@ -511,8 +522,13 @@ def add_QueryEngineServiceServicer_to_server(servicer, server): ), 'createDataFrame': grpc.unary_unary_rpc_method_handler( servicer.createDataFrame, - request_deserializer=e6x__engine__pb2.DataFrameRequest.FromString, - response_serializer=e6x__engine__pb2.DataFrameResponse.SerializeToString, + request_deserializer=e6x__engine__pb2.CreateDataFrameRequest.FromString, + response_serializer=e6x__engine__pb2.CreateDataFrameResponse.SerializeToString, + ), + 'projectionOnDataFrame': grpc.unary_unary_rpc_method_handler( + servicer.projectionOnDataFrame, + request_deserializer=e6x__engine__pb2.ProjectionOnDataFrameRequest.FromString, + response_serializer=e6x__engine__pb2.ProjectionOnDataFrameResponse.SerializeToString, ), 'executeDataFrame': grpc.unary_unary_rpc_method_handler( servicer.executeDataFrame, @@ -1034,8 +1050,25 @@ def createDataFrame(request, timeout=None, metadata=None): return grpc.experimental.unary_unary(request, target, '/QueryEngineService/createDataFrame', - e6x__engine__pb2.DataFrameRequest.SerializeToString, - e6x__engine__pb2.DataFrameResponse.FromString, + e6x__engine__pb2.CreateDataFrameRequest.SerializeToString, + e6x__engine__pb2.CreateDataFrameResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def projectionOnDataFrame(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/QueryEngineService/projectionOnDataFrame', + e6x__engine__pb2.ProjectionOnDataFrameRequest.SerializeToString, + e6x__engine__pb2.ProjectionOnDataFrameResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/e6x_engine.proto b/e6x_engine.proto index 6356762..5effa31 100644 --- a/e6x_engine.proto +++ b/e6x_engine.proto @@ -299,21 +299,33 @@ message ClearOrCancelQueryResponse{ // DataFrame -message DataFrameRequest +message CreateDataFrameRequest { string parquetFilePath = 1; string catalog = 2; string schema = 3; + string sessionId = 4; + string engineIP = 5; } -message DataFrameResponse +message CreateDataFrameResponse { string queryId = 1; } +message ProjectionOnDataFrameRequest +{ + string queryId = 1; + string sessionId = 2; + repeated string field = 3; +} + +message ProjectionOnDataFrameResponse {} + message ExecuteDataFrameRequest { string queryId = 1; + string sessionId = 2; } message ExecuteDataFrameResponse {} @@ -377,7 +389,9 @@ service QueryEngineService { rpc refreshCatalogs(RefreshCatalogsRequest) returns (RefreshCatalogsResponse); - rpc createDataFrame(DataFrameRequest) returns (DataFrameResponse); + rpc createDataFrame(CreateDataFrameRequest) returns (CreateDataFrameResponse); + + rpc projectionOnDataFrame(ProjectionOnDataFrameRequest) returns (ProjectionOnDataFrameResponse); rpc executeDataFrame(ExecuteDataFrameRequest) returns (ExecuteDataFrameResponse); } \ No newline at end of file From a6bb81a61b83a0ef39b69bbf2481f54b470c173d Mon Sep 17 00:00:00 2001 From: Yash Date: Wed, 13 Nov 2024 10:59:51 +0530 Subject: [PATCH 3/9] added filter, orderBy, limit APIs --- dataframe_test.py | 15 +-- e6data_python_connector/e6data_grpc.py | 35 ++++++ .../server/e6x_engine_pb2.py | 28 +++-- .../server/e6x_engine_pb2.pyi | 52 +++++++++ .../server/e6x_engine_pb2_grpc.py | 103 +++++++++++++++++- e6x_engine.proto | 42 +++++++ 6 files changed, 260 insertions(+), 15 deletions(-) diff --git a/dataframe_test.py b/dataframe_test.py index c94bf4a..c3eafbc 100644 --- a/dataframe_test.py +++ b/dataframe_test.py @@ -30,11 +30,12 @@ def tearDown(self) -> None: self.disconnect() def test_table_creation(self): - self._dataframe = self.e6x_connection.load_parquet('') - self._dataframe.select('col1','col1','colN') - - rows = self._dataframe.show() - - for row in rows: - print(row) + self._dataframe = self.e6x_connection.load_parquet('s3://tpcds-datagen/tpcds-1-delta/call_center/part-00000-520f2f6b-5a6f-45b1-bcf8-a8d5497d3c9b.c000.snappy.parquet') + self._dataframe.select('cc_call_center_id') + self._dataframe.order_by('cc_call_center_id') + + # rows = self._dataframe.show() + # + # for row in rows: + # print(row) diff --git a/e6data_python_connector/e6data_grpc.py b/e6data_python_connector/e6data_grpc.py index 2875d05..29c662a 100644 --- a/e6data_python_connector/e6data_grpc.py +++ b/e6data_python_connector/e6data_grpc.py @@ -1086,6 +1086,41 @@ def select(self, *fields): return self + def order_by(self, *fields, sort_direction = None): + sort_direction = str(sort_direction) + orderby_fields = [] + sort_direction_request = None + for field in fields: + orderby_fields.append(field) + + if sort_direction is not None: + direction = sort_direction.capitalize() + if direction == 'ASC': + sort_direction_request = e6x_engine_pb2.SortDirection.ASC + elif direction == 'DESC': + sort_direction_request = e6x_engine_pb2.SortDirection.DESC + + client = self.connection.client + + if sort_direction_request is None: + orderby_on_dataframe_request = e6x_engine_pb2.OrderByOnDataFrameRequest( + queryId=self._query_id, + sessionId=self._sessionId, + field=orderby_fields + ) + else: + orderby_on_dataframe_request = e6x_engine_pb2.OrderByOnDataFrameRequest( + queryId=self._query_id, + sessionId=self._sessionId, + field=orderby_fields, + sortDirection=sort_direction_request + ) + + orderby_on_dataframe_response = client.orderByOnDataFrame( + orderby_on_dataframe_request + ) + return self + def show(self): self.execute() return self.fetchall() diff --git a/e6data_python_connector/server/e6x_engine_pb2.py b/e6data_python_connector/server/e6x_engine_pb2.py index 121efd4..1e3c81b 100644 --- a/e6data_python_connector/server/e6x_engine_pb2.py +++ b/e6data_python_connector/server/e6x_engine_pb2.py @@ -13,7 +13,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10\x65\x36x_engine.proto\"2\n\nGFieldInfo\x12\x11\n\tfieldName\x18\x01 \x01(\t\x12\x11\n\tfieldType\x18\x02 \x01(\t\"A\n\x13\x46\x61iledSchemaElement\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0e\n\x06reason\x18\x03 \x01(\t\"P\n\x16GetAddCatalogsResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\x12&\n\x08\x66\x61ilures\x18\x02 \x03(\x0b\x32\x14.FailedSchemaElement\"2\n\x0f\x43\x61talogResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tisDefault\x18\x02 \x01(\x08\"<\n\x0eParameterValue\x12\r\n\x05index\x18\x01 \x01(\x11\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\"D\n\x0c\x43learRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x0f\n\rClearResponse\"J\n\x12\x43\x61ncelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x15\n\x13\x43\x61ncelQueryResponse\"F\n\x0e\x45xplainRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\"\n\x0f\x45xplainResponse\x12\x0f\n\x07\x65xplain\x18\x01 \x01(\t\"Y\n\rDryRunRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\"%\n\x0e\x44ryRunResponse\x12\x13\n\x0b\x64ryrunValue\x18\x01 \x01(\t\"l\n\x0f\x44ryRunRequestV2\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x05 \x01(\t\"M\n\x15\x45xplainAnalyzeRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"m\n\x16\x45xplainAnalyzeResponse\x12\x16\n\x0e\x65xplainAnalyze\x18\x01 \x01(\t\x12\x10\n\x08isCached\x18\x02 \x01(\x08\x12\x13\n\x0bparsingTime\x18\x03 \x01(\x12\x12\x14\n\x0cqueueingTime\x18\x04 \x01(\x12\"b\n\x17PrepareStatementRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x13\n\x0bqueryString\x18\x03 \x01(\t\x12\x0f\n\x07quoting\x18\x04 \x01(\t\"u\n\x19PrepareStatementV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07quoting\x18\x05 \x01(\t\"=\n\x18PrepareStatementResponse\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\"@\n\x0eUserAccessInfo\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x10\n\x08userName\x18\x02 \x01(\t\x12\x0e\n\x06tokens\x18\x03 \x03(\t\"g\n\x17\x45xecuteStatementRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\"\x8a\x01\n\x19\x45xecuteStatementV2Request\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\x12\x1f\n\x06params\x18\x05 \x03(\x0b\x32\x0f.ParameterValue\"\x1a\n\x18\x45xecuteStatementResponse\"O\n\x17GetNextResultRowRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"-\n\x18GetNextResultRowResponse\x12\x11\n\tresultRow\x18\x02 \x01(\x0c\"w\n\x19GetNextResultBatchRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\tasRowData\x18\x04 \x01(\x08H\x00\x88\x01\x01\x42\x0c\n\n_asRowData\"1\n\x1aGetNextResultBatchResponse\x12\x13\n\x0bresultBatch\x18\x02 \x01(\x0c\"P\n\x18GetResultMetadataRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"3\n\x19GetResultMetadataResponse\x12\x16\n\x0eresultMetaData\x18\x01 \x01(\x0c\"5\n\x13\x41uthenticateRequest\x12\x0c\n\x04user\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\")\n\x14\x41uthenticateResponse\x12\x11\n\tsessionId\x18\x01 \x01(\t\"5\n\x10GetTablesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\"H\n\x12GetTablesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\"#\n\x11GetTablesResponse\x12\x0e\n\x06tables\x18\x01 \x03(\t\"*\n\x15GetSchemaNamesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"=\n\x17GetSchemaNamesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\")\n\x16GetSchemaNamesResponse\x12\x0f\n\x07schemas\x18\x01 \x03(\t\"E\n\x11GetColumnsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\"X\n\x13GetColumnsV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x04 \x01(\t\"4\n\x12GetColumnsResponse\x12\x1e\n\tfieldInfo\x18\x01 \x03(\x0b\x32\x0b.GFieldInfo\"E\n\rStatusRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"2\n\x0eStatusResponse\x12\x0e\n\x06status\x18\x02 \x01(\x08\x12\x10\n\x08rowCount\x18\x03 \x01(\x12\"5\n\x12\x41\x64\x64\x43\x61talogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0c\n\x04json\x18\x02 \x01(\t\"#\n\x12UpdateUsersRequest\x12\r\n\x05users\x18\x01 \x01(\x0c\"\x15\n\x13UpdateUsersResponse\"3\n\x0fSetPropsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\r\n\x05props\x18\x02 \x01(\t\"\x12\n\x10SetPropsResponse\"*\n\x15GetAddCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x15\n\x13\x41\x64\x64\x43\x61talogsResponse\"\x15\n\x13GetCatalogesRequest\"B\n\x14GetCatalogesResponse\x12*\n\x10\x63\x61talogResponses\x18\x01 \x03(\x0b\x32\x10.CatalogResponse\"+\n\x16RefreshCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x19\n\x17RefreshCatalogsResponse\"X\n\x12RemoteChunkRequest\x12\x17\n\x0foriginalQueryId\x18\x01 \x01(\t\x12\x15\n\rremoteQueryId\x18\x02 \x01(\t\x12\x12\n\nsQueryHash\x18\x03 \x01(\t\"3\n\x13RemoteChunkResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\r\n\x05\x63hunk\x18\x02 \x01(\x0c\"Q\n\x19\x43learOrCancelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x1c\n\x1a\x43learOrCancelQueryResponse\"w\n\x16\x43reateDataFrameRequest\x12\x17\n\x0fparquetFilePath\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x11\n\tsessionId\x18\x04 \x01(\t\x12\x10\n\x08\x65ngineIP\x18\x05 \x01(\t\"*\n\x17\x43reateDataFrameResponse\x12\x0f\n\x07queryId\x18\x01 \x01(\t\"Q\n\x1cProjectionOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\r\n\x05\x66ield\x18\x03 \x03(\t\"\x1f\n\x1dProjectionOnDataFrameResponse\"=\n\x17\x45xecuteDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\"\x1a\n\x18\x45xecuteDataFrameResponse2\x91\x10\n\x12QueryEngineService\x12&\n\x05\x63lear\x12\r.ClearRequest\x1a\x0e.ClearResponse\x12\x38\n\x0b\x63\x61ncelQuery\x12\x13.CancelQueryRequest\x1a\x14.CancelQueryResponse\x12M\n\x12\x63learOrCancelQuery\x12\x1a.ClearOrCancelQueryRequest\x1a\x1b.ClearOrCancelQueryResponse\x12,\n\x07\x65xplain\x12\x0f.ExplainRequest\x1a\x10.ExplainResponse\x12)\n\x06\x64ryRun\x12\x0e.DryRunRequest\x1a\x0f.DryRunResponse\x12-\n\x08\x64ryRunV2\x12\x10.DryRunRequestV2\x1a\x0f.DryRunResponse\x12\x41\n\x0e\x65xplainAnalyze\x12\x16.ExplainAnalyzeRequest\x1a\x17.ExplainAnalyzeResponse\x12G\n\x10prepareStatement\x12\x18.PrepareStatementRequest\x1a\x19.PrepareStatementResponse\x12K\n\x12prepareStatementV2\x12\x1a.PrepareStatementV2Request\x1a\x19.PrepareStatementResponse\x12G\n\x10\x65xecuteStatement\x12\x18.ExecuteStatementRequest\x1a\x19.ExecuteStatementResponse\x12K\n\x12\x65xecuteStatementV2\x12\x1a.ExecuteStatementV2Request\x1a\x19.ExecuteStatementResponse\x12G\n\x10getNextResultRow\x12\x18.GetNextResultRowRequest\x1a\x19.GetNextResultRowResponse\x12M\n\x12getNextResultBatch\x12\x1a.GetNextResultBatchRequest\x1a\x1b.GetNextResultBatchResponse\x12J\n\x11getResultMetadata\x12\x19.GetResultMetadataRequest\x1a\x1a.GetResultMetadataResponse\x12;\n\x0c\x61uthenticate\x12\x14.AuthenticateRequest\x1a\x15.AuthenticateResponse\x12\x32\n\tgetTables\x12\x11.GetTablesRequest\x1a\x12.GetTablesResponse\x12\x36\n\x0bgetTablesV2\x12\x13.GetTablesV2Request\x1a\x12.GetTablesResponse\x12\x41\n\x0egetSchemaNames\x12\x16.GetSchemaNamesRequest\x1a\x17.GetSchemaNamesResponse\x12\x45\n\x10getSchemaNamesV2\x12\x18.GetSchemaNamesV2Request\x1a\x17.GetSchemaNamesResponse\x12\x35\n\ngetColumns\x12\x12.GetColumnsRequest\x1a\x13.GetColumnsResponse\x12\x39\n\x0cgetColumnsV2\x12\x14.GetColumnsV2Request\x1a\x13.GetColumnsResponse\x12\x38\n\x0bupdateUsers\x12\x13.UpdateUsersRequest\x1a\x14.UpdateUsersResponse\x12/\n\x08setProps\x12\x10.SetPropsRequest\x1a\x11.SetPropsResponse\x12)\n\x06status\x12\x0e.StatusRequest\x1a\x0f.StatusResponse\x12\x38\n\x0b\x61\x64\x64\x43\x61talogs\x12\x13.AddCatalogsRequest\x1a\x14.AddCatalogsResponse\x12I\n\x16getAddCatalogsResponse\x12\x16.GetAddCatalogsRequest\x1a\x17.GetAddCatalogsResponse\x12;\n\x0cgetCataloges\x12\x14.GetCatalogesRequest\x1a\x15.GetCatalogesResponse\x12\x45\n\x18getNextRemoteCachedChunk\x12\x13.RemoteChunkRequest\x1a\x14.RemoteChunkResponse\x12\x44\n\x0frefreshCatalogs\x12\x17.RefreshCatalogsRequest\x1a\x18.RefreshCatalogsResponse\x12\x44\n\x0f\x63reateDataFrame\x12\x17.CreateDataFrameRequest\x1a\x18.CreateDataFrameResponse\x12V\n\x15projectionOnDataFrame\x12\x1d.ProjectionOnDataFrameRequest\x1a\x1e.ProjectionOnDataFrameResponse\x12G\n\x10\x65xecuteDataFrame\x12\x18.ExecuteDataFrameRequest\x1a\x19.ExecuteDataFrameResponseB\x02P\x01\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10\x65\x36x_engine.proto\"2\n\nGFieldInfo\x12\x11\n\tfieldName\x18\x01 \x01(\t\x12\x11\n\tfieldType\x18\x02 \x01(\t\"A\n\x13\x46\x61iledSchemaElement\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0e\n\x06reason\x18\x03 \x01(\t\"P\n\x16GetAddCatalogsResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\x12&\n\x08\x66\x61ilures\x18\x02 \x03(\x0b\x32\x14.FailedSchemaElement\"2\n\x0f\x43\x61talogResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tisDefault\x18\x02 \x01(\x08\"<\n\x0eParameterValue\x12\r\n\x05index\x18\x01 \x01(\x11\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\"D\n\x0c\x43learRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x0f\n\rClearResponse\"J\n\x12\x43\x61ncelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x15\n\x13\x43\x61ncelQueryResponse\"F\n\x0e\x45xplainRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\"\n\x0f\x45xplainResponse\x12\x0f\n\x07\x65xplain\x18\x01 \x01(\t\"Y\n\rDryRunRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\"%\n\x0e\x44ryRunResponse\x12\x13\n\x0b\x64ryrunValue\x18\x01 \x01(\t\"l\n\x0f\x44ryRunRequestV2\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x05 \x01(\t\"M\n\x15\x45xplainAnalyzeRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"m\n\x16\x45xplainAnalyzeResponse\x12\x16\n\x0e\x65xplainAnalyze\x18\x01 \x01(\t\x12\x10\n\x08isCached\x18\x02 \x01(\x08\x12\x13\n\x0bparsingTime\x18\x03 \x01(\x12\x12\x14\n\x0cqueueingTime\x18\x04 \x01(\x12\"b\n\x17PrepareStatementRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x13\n\x0bqueryString\x18\x03 \x01(\t\x12\x0f\n\x07quoting\x18\x04 \x01(\t\"u\n\x19PrepareStatementV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07quoting\x18\x05 \x01(\t\"=\n\x18PrepareStatementResponse\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\"@\n\x0eUserAccessInfo\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x10\n\x08userName\x18\x02 \x01(\t\x12\x0e\n\x06tokens\x18\x03 \x03(\t\"g\n\x17\x45xecuteStatementRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\"\x8a\x01\n\x19\x45xecuteStatementV2Request\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\x12\x1f\n\x06params\x18\x05 \x03(\x0b\x32\x0f.ParameterValue\"\x1a\n\x18\x45xecuteStatementResponse\"O\n\x17GetNextResultRowRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"-\n\x18GetNextResultRowResponse\x12\x11\n\tresultRow\x18\x02 \x01(\x0c\"w\n\x19GetNextResultBatchRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\tasRowData\x18\x04 \x01(\x08H\x00\x88\x01\x01\x42\x0c\n\n_asRowData\"1\n\x1aGetNextResultBatchResponse\x12\x13\n\x0bresultBatch\x18\x02 \x01(\x0c\"P\n\x18GetResultMetadataRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"3\n\x19GetResultMetadataResponse\x12\x16\n\x0eresultMetaData\x18\x01 \x01(\x0c\"5\n\x13\x41uthenticateRequest\x12\x0c\n\x04user\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\")\n\x14\x41uthenticateResponse\x12\x11\n\tsessionId\x18\x01 \x01(\t\"5\n\x10GetTablesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\"H\n\x12GetTablesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\"#\n\x11GetTablesResponse\x12\x0e\n\x06tables\x18\x01 \x03(\t\"*\n\x15GetSchemaNamesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"=\n\x17GetSchemaNamesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\")\n\x16GetSchemaNamesResponse\x12\x0f\n\x07schemas\x18\x01 \x03(\t\"E\n\x11GetColumnsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\"X\n\x13GetColumnsV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x04 \x01(\t\"4\n\x12GetColumnsResponse\x12\x1e\n\tfieldInfo\x18\x01 \x03(\x0b\x32\x0b.GFieldInfo\"E\n\rStatusRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"2\n\x0eStatusResponse\x12\x0e\n\x06status\x18\x02 \x01(\x08\x12\x10\n\x08rowCount\x18\x03 \x01(\x12\"5\n\x12\x41\x64\x64\x43\x61talogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0c\n\x04json\x18\x02 \x01(\t\"#\n\x12UpdateUsersRequest\x12\r\n\x05users\x18\x01 \x01(\x0c\"\x15\n\x13UpdateUsersResponse\"3\n\x0fSetPropsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\r\n\x05props\x18\x02 \x01(\t\"\x12\n\x10SetPropsResponse\"*\n\x15GetAddCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x15\n\x13\x41\x64\x64\x43\x61talogsResponse\"\x15\n\x13GetCatalogesRequest\"B\n\x14GetCatalogesResponse\x12*\n\x10\x63\x61talogResponses\x18\x01 \x03(\x0b\x32\x10.CatalogResponse\"+\n\x16RefreshCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x19\n\x17RefreshCatalogsResponse\"X\n\x12RemoteChunkRequest\x12\x17\n\x0foriginalQueryId\x18\x01 \x01(\t\x12\x15\n\rremoteQueryId\x18\x02 \x01(\t\x12\x12\n\nsQueryHash\x18\x03 \x01(\t\"3\n\x13RemoteChunkResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\r\n\x05\x63hunk\x18\x02 \x01(\x0c\"Q\n\x19\x43learOrCancelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x1c\n\x1a\x43learOrCancelQueryResponse\"w\n\x16\x43reateDataFrameRequest\x12\x17\n\x0fparquetFilePath\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x11\n\tsessionId\x18\x04 \x01(\t\x12\x10\n\x08\x65ngineIP\x18\x05 \x01(\t\"*\n\x17\x43reateDataFrameResponse\x12\x0f\n\x07queryId\x18\x01 \x01(\t\"Q\n\x1cProjectionOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\r\n\x05\x66ield\x18\x03 \x03(\t\"\x1f\n\x1dProjectionOnDataFrameResponse\"S\n\x18\x46ilterOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x13\n\x0bwhereClause\x18\x03 \x01(\t\"\x1b\n\x19\x46ilterOnDataFrameResponse\"\x8c\x01\n\x19OrderByOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\r\n\x05\x66ield\x18\x03 \x03(\t\x12*\n\rsortDirection\x18\x04 \x01(\x0e\x32\x0e.SortDirectionH\x00\x88\x01\x01\x42\x10\n\x0e_sortDirection\"\x1c\n\x1aOrderByOnDataFrameResponse\"Q\n\x17LimitOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x12\n\nfetchLimit\x18\x03 \x01(\x05\"\x1a\n\x18LimitOnDataFrameResponse\"=\n\x17\x45xecuteDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\"\x1a\n\x18\x45xecuteDataFrameResponse*\"\n\rSortDirection\x12\x07\n\x03\x41SC\x10\x00\x12\x08\n\x04\x44\x45SC\x10\x01\x32\xf5\x11\n\x12QueryEngineService\x12&\n\x05\x63lear\x12\r.ClearRequest\x1a\x0e.ClearResponse\x12\x38\n\x0b\x63\x61ncelQuery\x12\x13.CancelQueryRequest\x1a\x14.CancelQueryResponse\x12M\n\x12\x63learOrCancelQuery\x12\x1a.ClearOrCancelQueryRequest\x1a\x1b.ClearOrCancelQueryResponse\x12,\n\x07\x65xplain\x12\x0f.ExplainRequest\x1a\x10.ExplainResponse\x12)\n\x06\x64ryRun\x12\x0e.DryRunRequest\x1a\x0f.DryRunResponse\x12-\n\x08\x64ryRunV2\x12\x10.DryRunRequestV2\x1a\x0f.DryRunResponse\x12\x41\n\x0e\x65xplainAnalyze\x12\x16.ExplainAnalyzeRequest\x1a\x17.ExplainAnalyzeResponse\x12G\n\x10prepareStatement\x12\x18.PrepareStatementRequest\x1a\x19.PrepareStatementResponse\x12K\n\x12prepareStatementV2\x12\x1a.PrepareStatementV2Request\x1a\x19.PrepareStatementResponse\x12G\n\x10\x65xecuteStatement\x12\x18.ExecuteStatementRequest\x1a\x19.ExecuteStatementResponse\x12K\n\x12\x65xecuteStatementV2\x12\x1a.ExecuteStatementV2Request\x1a\x19.ExecuteStatementResponse\x12G\n\x10getNextResultRow\x12\x18.GetNextResultRowRequest\x1a\x19.GetNextResultRowResponse\x12M\n\x12getNextResultBatch\x12\x1a.GetNextResultBatchRequest\x1a\x1b.GetNextResultBatchResponse\x12J\n\x11getResultMetadata\x12\x19.GetResultMetadataRequest\x1a\x1a.GetResultMetadataResponse\x12;\n\x0c\x61uthenticate\x12\x14.AuthenticateRequest\x1a\x15.AuthenticateResponse\x12\x32\n\tgetTables\x12\x11.GetTablesRequest\x1a\x12.GetTablesResponse\x12\x36\n\x0bgetTablesV2\x12\x13.GetTablesV2Request\x1a\x12.GetTablesResponse\x12\x41\n\x0egetSchemaNames\x12\x16.GetSchemaNamesRequest\x1a\x17.GetSchemaNamesResponse\x12\x45\n\x10getSchemaNamesV2\x12\x18.GetSchemaNamesV2Request\x1a\x17.GetSchemaNamesResponse\x12\x35\n\ngetColumns\x12\x12.GetColumnsRequest\x1a\x13.GetColumnsResponse\x12\x39\n\x0cgetColumnsV2\x12\x14.GetColumnsV2Request\x1a\x13.GetColumnsResponse\x12\x38\n\x0bupdateUsers\x12\x13.UpdateUsersRequest\x1a\x14.UpdateUsersResponse\x12/\n\x08setProps\x12\x10.SetPropsRequest\x1a\x11.SetPropsResponse\x12)\n\x06status\x12\x0e.StatusRequest\x1a\x0f.StatusResponse\x12\x38\n\x0b\x61\x64\x64\x43\x61talogs\x12\x13.AddCatalogsRequest\x1a\x14.AddCatalogsResponse\x12I\n\x16getAddCatalogsResponse\x12\x16.GetAddCatalogsRequest\x1a\x17.GetAddCatalogsResponse\x12;\n\x0cgetCataloges\x12\x14.GetCatalogesRequest\x1a\x15.GetCatalogesResponse\x12\x45\n\x18getNextRemoteCachedChunk\x12\x13.RemoteChunkRequest\x1a\x14.RemoteChunkResponse\x12\x44\n\x0frefreshCatalogs\x12\x17.RefreshCatalogsRequest\x1a\x18.RefreshCatalogsResponse\x12\x44\n\x0f\x63reateDataFrame\x12\x17.CreateDataFrameRequest\x1a\x18.CreateDataFrameResponse\x12V\n\x15projectionOnDataFrame\x12\x1d.ProjectionOnDataFrameRequest\x1a\x1e.ProjectionOnDataFrameResponse\x12J\n\x11\x66ilterOnDataFrame\x12\x19.FilterOnDataFrameRequest\x1a\x1a.FilterOnDataFrameResponse\x12M\n\x12orderByOnDataFrame\x12\x1a.OrderByOnDataFrameRequest\x1a\x1b.OrderByOnDataFrameResponse\x12G\n\x10limitOnDataFrame\x12\x18.LimitOnDataFrameRequest\x1a\x19.LimitOnDataFrameResponse\x12G\n\x10\x65xecuteDataFrame\x12\x18.ExecuteDataFrameRequest\x1a\x19.ExecuteDataFrameResponseB\x02P\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -22,6 +22,8 @@ DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'P\001' + _globals['_SORTDIRECTION']._serialized_start=4312 + _globals['_SORTDIRECTION']._serialized_end=4346 _globals['_GFIELDINFO']._serialized_start=20 _globals['_GFIELDINFO']._serialized_end=70 _globals['_FAILEDSCHEMAELEMENT']._serialized_start=72 @@ -144,10 +146,22 @@ _globals['_PROJECTIONONDATAFRAMEREQUEST']._serialized_end=3788 _globals['_PROJECTIONONDATAFRAMERESPONSE']._serialized_start=3790 _globals['_PROJECTIONONDATAFRAMERESPONSE']._serialized_end=3821 - _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_start=3823 - _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_end=3884 - _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_start=3886 - _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_end=3912 - _globals['_QUERYENGINESERVICE']._serialized_start=3915 - _globals['_QUERYENGINESERVICE']._serialized_end=5980 + _globals['_FILTERONDATAFRAMEREQUEST']._serialized_start=3823 + _globals['_FILTERONDATAFRAMEREQUEST']._serialized_end=3906 + _globals['_FILTERONDATAFRAMERESPONSE']._serialized_start=3908 + _globals['_FILTERONDATAFRAMERESPONSE']._serialized_end=3935 + _globals['_ORDERBYONDATAFRAMEREQUEST']._serialized_start=3938 + _globals['_ORDERBYONDATAFRAMEREQUEST']._serialized_end=4078 + _globals['_ORDERBYONDATAFRAMERESPONSE']._serialized_start=4080 + _globals['_ORDERBYONDATAFRAMERESPONSE']._serialized_end=4108 + _globals['_LIMITONDATAFRAMEREQUEST']._serialized_start=4110 + _globals['_LIMITONDATAFRAMEREQUEST']._serialized_end=4191 + _globals['_LIMITONDATAFRAMERESPONSE']._serialized_start=4193 + _globals['_LIMITONDATAFRAMERESPONSE']._serialized_end=4219 + _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_start=4221 + _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_end=4282 + _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_start=4284 + _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_end=4310 + _globals['_QUERYENGINESERVICE']._serialized_start=4349 + _globals['_QUERYENGINESERVICE']._serialized_end=6642 # @@protoc_insertion_point(module_scope) diff --git a/e6data_python_connector/server/e6x_engine_pb2.pyi b/e6data_python_connector/server/e6x_engine_pb2.pyi index c576906..b1f1f3b 100644 --- a/e6data_python_connector/server/e6x_engine_pb2.pyi +++ b/e6data_python_connector/server/e6x_engine_pb2.pyi @@ -1,10 +1,18 @@ from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union DESCRIPTOR: _descriptor.FileDescriptor +class SortDirection(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + ASC: _ClassVar[SortDirection] + DESC: _ClassVar[SortDirection] +ASC: SortDirection +DESC: SortDirection + class GFieldInfo(_message.Message): __slots__ = ["fieldName", "fieldType"] FIELDNAME_FIELD_NUMBER: _ClassVar[int] @@ -501,6 +509,50 @@ class ProjectionOnDataFrameResponse(_message.Message): __slots__ = [] def __init__(self) -> None: ... +class FilterOnDataFrameRequest(_message.Message): + __slots__ = ["queryId", "sessionId", "whereClause"] + QUERYID_FIELD_NUMBER: _ClassVar[int] + SESSIONID_FIELD_NUMBER: _ClassVar[int] + WHERECLAUSE_FIELD_NUMBER: _ClassVar[int] + queryId: str + sessionId: str + whereClause: str + def __init__(self, queryId: _Optional[str] = ..., sessionId: _Optional[str] = ..., whereClause: _Optional[str] = ...) -> None: ... + +class FilterOnDataFrameResponse(_message.Message): + __slots__ = [] + def __init__(self) -> None: ... + +class OrderByOnDataFrameRequest(_message.Message): + __slots__ = ["queryId", "sessionId", "field", "sortDirection"] + QUERYID_FIELD_NUMBER: _ClassVar[int] + SESSIONID_FIELD_NUMBER: _ClassVar[int] + FIELD_FIELD_NUMBER: _ClassVar[int] + SORTDIRECTION_FIELD_NUMBER: _ClassVar[int] + queryId: str + sessionId: str + field: _containers.RepeatedScalarFieldContainer[str] + sortDirection: SortDirection + def __init__(self, queryId: _Optional[str] = ..., sessionId: _Optional[str] = ..., field: _Optional[_Iterable[str]] = ..., sortDirection: _Optional[_Union[SortDirection, str]] = ...) -> None: ... + +class OrderByOnDataFrameResponse(_message.Message): + __slots__ = [] + def __init__(self) -> None: ... + +class LimitOnDataFrameRequest(_message.Message): + __slots__ = ["queryId", "sessionId", "fetchLimit"] + QUERYID_FIELD_NUMBER: _ClassVar[int] + SESSIONID_FIELD_NUMBER: _ClassVar[int] + FETCHLIMIT_FIELD_NUMBER: _ClassVar[int] + queryId: str + sessionId: str + fetchLimit: int + def __init__(self, queryId: _Optional[str] = ..., sessionId: _Optional[str] = ..., fetchLimit: _Optional[int] = ...) -> None: ... + +class LimitOnDataFrameResponse(_message.Message): + __slots__ = [] + def __init__(self) -> None: ... + class ExecuteDataFrameRequest(_message.Message): __slots__ = ["queryId", "sessionId"] QUERYID_FIELD_NUMBER: _ClassVar[int] diff --git a/e6data_python_connector/server/e6x_engine_pb2_grpc.py b/e6data_python_connector/server/e6x_engine_pb2_grpc.py index edad164..e9f1636 100644 --- a/e6data_python_connector/server/e6x_engine_pb2_grpc.py +++ b/e6data_python_connector/server/e6x_engine_pb2_grpc.py @@ -169,6 +169,21 @@ def __init__(self, channel): request_serializer=e6x__engine__pb2.ProjectionOnDataFrameRequest.SerializeToString, response_deserializer=e6x__engine__pb2.ProjectionOnDataFrameResponse.FromString, ) + self.filterOnDataFrame = channel.unary_unary( + '/QueryEngineService/filterOnDataFrame', + request_serializer=e6x__engine__pb2.FilterOnDataFrameRequest.SerializeToString, + response_deserializer=e6x__engine__pb2.FilterOnDataFrameResponse.FromString, + ) + self.orderByOnDataFrame = channel.unary_unary( + '/QueryEngineService/orderByOnDataFrame', + request_serializer=e6x__engine__pb2.OrderByOnDataFrameRequest.SerializeToString, + response_deserializer=e6x__engine__pb2.OrderByOnDataFrameResponse.FromString, + ) + self.limitOnDataFrame = channel.unary_unary( + '/QueryEngineService/limitOnDataFrame', + request_serializer=e6x__engine__pb2.LimitOnDataFrameRequest.SerializeToString, + response_deserializer=e6x__engine__pb2.LimitOnDataFrameResponse.FromString, + ) self.executeDataFrame = channel.unary_unary( '/QueryEngineService/executeDataFrame', request_serializer=e6x__engine__pb2.ExecuteDataFrameRequest.SerializeToString, @@ -355,7 +370,9 @@ def refreshCatalogs(self, request, context): raise NotImplementedError('Method not implemented!') def createDataFrame(self, request, context): - """Missing associated documentation comment in .proto file.""" + """dataframe + + """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') @@ -366,6 +383,24 @@ def projectionOnDataFrame(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def filterOnDataFrame(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def orderByOnDataFrame(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def limitOnDataFrame(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def executeDataFrame(self, request, context): """Missing associated documentation comment in .proto file.""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) @@ -530,6 +565,21 @@ def add_QueryEngineServiceServicer_to_server(servicer, server): request_deserializer=e6x__engine__pb2.ProjectionOnDataFrameRequest.FromString, response_serializer=e6x__engine__pb2.ProjectionOnDataFrameResponse.SerializeToString, ), + 'filterOnDataFrame': grpc.unary_unary_rpc_method_handler( + servicer.filterOnDataFrame, + request_deserializer=e6x__engine__pb2.FilterOnDataFrameRequest.FromString, + response_serializer=e6x__engine__pb2.FilterOnDataFrameResponse.SerializeToString, + ), + 'orderByOnDataFrame': grpc.unary_unary_rpc_method_handler( + servicer.orderByOnDataFrame, + request_deserializer=e6x__engine__pb2.OrderByOnDataFrameRequest.FromString, + response_serializer=e6x__engine__pb2.OrderByOnDataFrameResponse.SerializeToString, + ), + 'limitOnDataFrame': grpc.unary_unary_rpc_method_handler( + servicer.limitOnDataFrame, + request_deserializer=e6x__engine__pb2.LimitOnDataFrameRequest.FromString, + response_serializer=e6x__engine__pb2.LimitOnDataFrameResponse.SerializeToString, + ), 'executeDataFrame': grpc.unary_unary_rpc_method_handler( servicer.executeDataFrame, request_deserializer=e6x__engine__pb2.ExecuteDataFrameRequest.FromString, @@ -1072,6 +1122,57 @@ def projectionOnDataFrame(request, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + @staticmethod + def filterOnDataFrame(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/QueryEngineService/filterOnDataFrame', + e6x__engine__pb2.FilterOnDataFrameRequest.SerializeToString, + e6x__engine__pb2.FilterOnDataFrameResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def orderByOnDataFrame(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/QueryEngineService/orderByOnDataFrame', + e6x__engine__pb2.OrderByOnDataFrameRequest.SerializeToString, + e6x__engine__pb2.OrderByOnDataFrameResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def limitOnDataFrame(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/QueryEngineService/limitOnDataFrame', + e6x__engine__pb2.LimitOnDataFrameRequest.SerializeToString, + e6x__engine__pb2.LimitOnDataFrameResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + @staticmethod def executeDataFrame(request, target, diff --git a/e6x_engine.proto b/e6x_engine.proto index 5effa31..dacc7d2 100644 --- a/e6x_engine.proto +++ b/e6x_engine.proto @@ -322,6 +322,40 @@ message ProjectionOnDataFrameRequest message ProjectionOnDataFrameResponse {} +message FilterOnDataFrameRequest +{ + string queryId = 1; + string sessionId = 2; + string whereClause = 3; +} + +message FilterOnDataFrameResponse {} + +enum SortDirection +{ + ASC = 0; + DESC = 1; +} + +message OrderByOnDataFrameRequest +{ + string queryId = 1; + string sessionId = 2; + repeated string field = 3; + optional SortDirection sortDirection = 4; +} + +message OrderByOnDataFrameResponse {} + +message LimitOnDataFrameRequest +{ + string queryId = 1; + string sessionId = 2; + int32 fetchLimit = 3; +} + +message LimitOnDataFrameResponse {} + message ExecuteDataFrameRequest { string queryId = 1; @@ -389,9 +423,17 @@ service QueryEngineService { rpc refreshCatalogs(RefreshCatalogsRequest) returns (RefreshCatalogsResponse); + // dataframe + rpc createDataFrame(CreateDataFrameRequest) returns (CreateDataFrameResponse); rpc projectionOnDataFrame(ProjectionOnDataFrameRequest) returns (ProjectionOnDataFrameResponse); + rpc filterOnDataFrame(FilterOnDataFrameRequest) returns (FilterOnDataFrameResponse); + + rpc orderByOnDataFrame(OrderByOnDataFrameRequest) returns (OrderByOnDataFrameResponse); + + rpc limitOnDataFrame(LimitOnDataFrameRequest) returns (LimitOnDataFrameResponse); + rpc executeDataFrame(ExecuteDataFrameRequest) returns (ExecuteDataFrameResponse); } \ No newline at end of file From dade3db06ad04567f9466aa3dd209ca90741099a Mon Sep 17 00:00:00 2001 From: Yash Date: Wed, 20 Nov 2024 19:43:13 +0530 Subject: [PATCH 4/9] add where, order_by and limit operators in dataframe --- dataframe_test.py | 15 ++-- e6data_python_connector/e6data_grpc.py | 71 +++++++++++++------ .../server/e6x_engine_pb2.py | 34 ++++----- .../server/e6x_engine_pb2.pyi | 15 +++- e6x_engine.proto | 9 ++- 5 files changed, 95 insertions(+), 49 deletions(-) diff --git a/dataframe_test.py b/dataframe_test.py index c3eafbc..bb277e2 100644 --- a/dataframe_test.py +++ b/dataframe_test.py @@ -30,12 +30,11 @@ def tearDown(self) -> None: self.disconnect() def test_table_creation(self): - self._dataframe = self.e6x_connection.load_parquet('s3://tpcds-datagen/tpcds-1-delta/call_center/part-00000-520f2f6b-5a6f-45b1-bcf8-a8d5497d3c9b.c000.snappy.parquet') - self._dataframe.select('cc_call_center_id') - self._dataframe.order_by('cc_call_center_id') - - # rows = self._dataframe.show() - # - # for row in rows: - # print(row) + self._dataframe = self.e6x_connection.load_parquet('') + self._dataframe.select('col1','col2') + + rows = self._dataframe.show() + + for row in rows: + print(row) diff --git a/e6data_python_connector/e6data_grpc.py b/e6data_python_connector/e6data_grpc.py index 29c662a..f6a23e8 100644 --- a/e6data_python_connector/e6data_grpc.py +++ b/e6data_python_connector/e6data_grpc.py @@ -1086,41 +1086,70 @@ def select(self, *fields): return self - def order_by(self, *fields, sort_direction = None): - sort_direction = str(sort_direction) + def where(self, where_clause : str): + client = self.connection.client + filter_on_dataframe_request = e6x_engine_pb2.FilterOnDataFrameRequest( + queryId=self._query_id, + sessionId=self._sessionId, + whereClause=where_clause + ) + + filter_on_dataframe_response = client.filterOnDataFrame( + filter_on_dataframe_request + ) + + def order_by(self, fields_list : list, sort_direction_list = None, null_direction_list = None): orderby_fields = [] - sort_direction_request = None - for field in fields: + sort_direction_request = [] + null_direction_request = [] + for field in fields_list: orderby_fields.append(field) - if sort_direction is not None: - direction = sort_direction.capitalize() + for direction in sort_direction_list: + direction = str(direction).upper() if direction == 'ASC': - sort_direction_request = e6x_engine_pb2.SortDirection.ASC + sort_direction_request.append(e6x_engine_pb2.SortDirection.ASC) elif direction == 'DESC': - sort_direction_request = e6x_engine_pb2.SortDirection.DESC + sort_direction_request.append(e6x_engine_pb2.SortDirection.DESC) + else: + sort_direction_request.append(None) + + for direction in null_direction_list: + direction = str(direction).upper() + if direction == 'NULLS_FIRST': + null_direction_request.append(e6x_engine_pb2.NullDirection.FIRST) + elif direction == 'NULLS_LAST': + null_direction_request.append(e6x_engine_pb2.NullDirection.LAST) + else: + null_direction_request.append(None) client = self.connection.client - if sort_direction_request is None: - orderby_on_dataframe_request = e6x_engine_pb2.OrderByOnDataFrameRequest( - queryId=self._query_id, - sessionId=self._sessionId, - field=orderby_fields - ) - else: - orderby_on_dataframe_request = e6x_engine_pb2.OrderByOnDataFrameRequest( - queryId=self._query_id, - sessionId=self._sessionId, - field=orderby_fields, - sortDirection=sort_direction_request - ) + orderby_on_dataframe_request = e6x_engine_pb2.OrderByOnDataFrameRequest( + queryId=self._query_id, + sessionId=self._sessionId, + field=orderby_fields, + sortDirection=sort_direction_request, + nullsDirection=null_direction_request + ) orderby_on_dataframe_response = client.orderByOnDataFrame( orderby_on_dataframe_request ) return self + def limit(self, fetch_limit : int): + client = self.connection.client + limit_on_dataframe_request = e6x_engine_pb2.LimitOnDataFrameRequest( + queryId=self._query_id, + sessionId=self._sessionId, + fetchLimit=fetch_limit + ) + + limit_on_dataframe_response = client.limitOnDataFrame( + limit_on_dataframe_request + ) + def show(self): self.execute() return self.fetchall() diff --git a/e6data_python_connector/server/e6x_engine_pb2.py b/e6data_python_connector/server/e6x_engine_pb2.py index 1e3c81b..22fe28f 100644 --- a/e6data_python_connector/server/e6x_engine_pb2.py +++ b/e6data_python_connector/server/e6x_engine_pb2.py @@ -13,7 +13,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10\x65\x36x_engine.proto\"2\n\nGFieldInfo\x12\x11\n\tfieldName\x18\x01 \x01(\t\x12\x11\n\tfieldType\x18\x02 \x01(\t\"A\n\x13\x46\x61iledSchemaElement\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0e\n\x06reason\x18\x03 \x01(\t\"P\n\x16GetAddCatalogsResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\x12&\n\x08\x66\x61ilures\x18\x02 \x03(\x0b\x32\x14.FailedSchemaElement\"2\n\x0f\x43\x61talogResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tisDefault\x18\x02 \x01(\x08\"<\n\x0eParameterValue\x12\r\n\x05index\x18\x01 \x01(\x11\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\"D\n\x0c\x43learRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x0f\n\rClearResponse\"J\n\x12\x43\x61ncelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x15\n\x13\x43\x61ncelQueryResponse\"F\n\x0e\x45xplainRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\"\n\x0f\x45xplainResponse\x12\x0f\n\x07\x65xplain\x18\x01 \x01(\t\"Y\n\rDryRunRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\"%\n\x0e\x44ryRunResponse\x12\x13\n\x0b\x64ryrunValue\x18\x01 \x01(\t\"l\n\x0f\x44ryRunRequestV2\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x05 \x01(\t\"M\n\x15\x45xplainAnalyzeRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"m\n\x16\x45xplainAnalyzeResponse\x12\x16\n\x0e\x65xplainAnalyze\x18\x01 \x01(\t\x12\x10\n\x08isCached\x18\x02 \x01(\x08\x12\x13\n\x0bparsingTime\x18\x03 \x01(\x12\x12\x14\n\x0cqueueingTime\x18\x04 \x01(\x12\"b\n\x17PrepareStatementRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x13\n\x0bqueryString\x18\x03 \x01(\t\x12\x0f\n\x07quoting\x18\x04 \x01(\t\"u\n\x19PrepareStatementV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07quoting\x18\x05 \x01(\t\"=\n\x18PrepareStatementResponse\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\"@\n\x0eUserAccessInfo\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x10\n\x08userName\x18\x02 \x01(\t\x12\x0e\n\x06tokens\x18\x03 \x03(\t\"g\n\x17\x45xecuteStatementRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\"\x8a\x01\n\x19\x45xecuteStatementV2Request\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\x12\x1f\n\x06params\x18\x05 \x03(\x0b\x32\x0f.ParameterValue\"\x1a\n\x18\x45xecuteStatementResponse\"O\n\x17GetNextResultRowRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"-\n\x18GetNextResultRowResponse\x12\x11\n\tresultRow\x18\x02 \x01(\x0c\"w\n\x19GetNextResultBatchRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\tasRowData\x18\x04 \x01(\x08H\x00\x88\x01\x01\x42\x0c\n\n_asRowData\"1\n\x1aGetNextResultBatchResponse\x12\x13\n\x0bresultBatch\x18\x02 \x01(\x0c\"P\n\x18GetResultMetadataRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"3\n\x19GetResultMetadataResponse\x12\x16\n\x0eresultMetaData\x18\x01 \x01(\x0c\"5\n\x13\x41uthenticateRequest\x12\x0c\n\x04user\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\")\n\x14\x41uthenticateResponse\x12\x11\n\tsessionId\x18\x01 \x01(\t\"5\n\x10GetTablesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\"H\n\x12GetTablesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\"#\n\x11GetTablesResponse\x12\x0e\n\x06tables\x18\x01 \x03(\t\"*\n\x15GetSchemaNamesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"=\n\x17GetSchemaNamesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\")\n\x16GetSchemaNamesResponse\x12\x0f\n\x07schemas\x18\x01 \x03(\t\"E\n\x11GetColumnsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\"X\n\x13GetColumnsV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x04 \x01(\t\"4\n\x12GetColumnsResponse\x12\x1e\n\tfieldInfo\x18\x01 \x03(\x0b\x32\x0b.GFieldInfo\"E\n\rStatusRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"2\n\x0eStatusResponse\x12\x0e\n\x06status\x18\x02 \x01(\x08\x12\x10\n\x08rowCount\x18\x03 \x01(\x12\"5\n\x12\x41\x64\x64\x43\x61talogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0c\n\x04json\x18\x02 \x01(\t\"#\n\x12UpdateUsersRequest\x12\r\n\x05users\x18\x01 \x01(\x0c\"\x15\n\x13UpdateUsersResponse\"3\n\x0fSetPropsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\r\n\x05props\x18\x02 \x01(\t\"\x12\n\x10SetPropsResponse\"*\n\x15GetAddCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x15\n\x13\x41\x64\x64\x43\x61talogsResponse\"\x15\n\x13GetCatalogesRequest\"B\n\x14GetCatalogesResponse\x12*\n\x10\x63\x61talogResponses\x18\x01 \x03(\x0b\x32\x10.CatalogResponse\"+\n\x16RefreshCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x19\n\x17RefreshCatalogsResponse\"X\n\x12RemoteChunkRequest\x12\x17\n\x0foriginalQueryId\x18\x01 \x01(\t\x12\x15\n\rremoteQueryId\x18\x02 \x01(\t\x12\x12\n\nsQueryHash\x18\x03 \x01(\t\"3\n\x13RemoteChunkResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\r\n\x05\x63hunk\x18\x02 \x01(\x0c\"Q\n\x19\x43learOrCancelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x1c\n\x1a\x43learOrCancelQueryResponse\"w\n\x16\x43reateDataFrameRequest\x12\x17\n\x0fparquetFilePath\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x11\n\tsessionId\x18\x04 \x01(\t\x12\x10\n\x08\x65ngineIP\x18\x05 \x01(\t\"*\n\x17\x43reateDataFrameResponse\x12\x0f\n\x07queryId\x18\x01 \x01(\t\"Q\n\x1cProjectionOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\r\n\x05\x66ield\x18\x03 \x03(\t\"\x1f\n\x1dProjectionOnDataFrameResponse\"S\n\x18\x46ilterOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x13\n\x0bwhereClause\x18\x03 \x01(\t\"\x1b\n\x19\x46ilterOnDataFrameResponse\"\x8c\x01\n\x19OrderByOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\r\n\x05\x66ield\x18\x03 \x03(\t\x12*\n\rsortDirection\x18\x04 \x01(\x0e\x32\x0e.SortDirectionH\x00\x88\x01\x01\x42\x10\n\x0e_sortDirection\"\x1c\n\x1aOrderByOnDataFrameResponse\"Q\n\x17LimitOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x12\n\nfetchLimit\x18\x03 \x01(\x05\"\x1a\n\x18LimitOnDataFrameResponse\"=\n\x17\x45xecuteDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\"\x1a\n\x18\x45xecuteDataFrameResponse*\"\n\rSortDirection\x12\x07\n\x03\x41SC\x10\x00\x12\x08\n\x04\x44\x45SC\x10\x01\x32\xf5\x11\n\x12QueryEngineService\x12&\n\x05\x63lear\x12\r.ClearRequest\x1a\x0e.ClearResponse\x12\x38\n\x0b\x63\x61ncelQuery\x12\x13.CancelQueryRequest\x1a\x14.CancelQueryResponse\x12M\n\x12\x63learOrCancelQuery\x12\x1a.ClearOrCancelQueryRequest\x1a\x1b.ClearOrCancelQueryResponse\x12,\n\x07\x65xplain\x12\x0f.ExplainRequest\x1a\x10.ExplainResponse\x12)\n\x06\x64ryRun\x12\x0e.DryRunRequest\x1a\x0f.DryRunResponse\x12-\n\x08\x64ryRunV2\x12\x10.DryRunRequestV2\x1a\x0f.DryRunResponse\x12\x41\n\x0e\x65xplainAnalyze\x12\x16.ExplainAnalyzeRequest\x1a\x17.ExplainAnalyzeResponse\x12G\n\x10prepareStatement\x12\x18.PrepareStatementRequest\x1a\x19.PrepareStatementResponse\x12K\n\x12prepareStatementV2\x12\x1a.PrepareStatementV2Request\x1a\x19.PrepareStatementResponse\x12G\n\x10\x65xecuteStatement\x12\x18.ExecuteStatementRequest\x1a\x19.ExecuteStatementResponse\x12K\n\x12\x65xecuteStatementV2\x12\x1a.ExecuteStatementV2Request\x1a\x19.ExecuteStatementResponse\x12G\n\x10getNextResultRow\x12\x18.GetNextResultRowRequest\x1a\x19.GetNextResultRowResponse\x12M\n\x12getNextResultBatch\x12\x1a.GetNextResultBatchRequest\x1a\x1b.GetNextResultBatchResponse\x12J\n\x11getResultMetadata\x12\x19.GetResultMetadataRequest\x1a\x1a.GetResultMetadataResponse\x12;\n\x0c\x61uthenticate\x12\x14.AuthenticateRequest\x1a\x15.AuthenticateResponse\x12\x32\n\tgetTables\x12\x11.GetTablesRequest\x1a\x12.GetTablesResponse\x12\x36\n\x0bgetTablesV2\x12\x13.GetTablesV2Request\x1a\x12.GetTablesResponse\x12\x41\n\x0egetSchemaNames\x12\x16.GetSchemaNamesRequest\x1a\x17.GetSchemaNamesResponse\x12\x45\n\x10getSchemaNamesV2\x12\x18.GetSchemaNamesV2Request\x1a\x17.GetSchemaNamesResponse\x12\x35\n\ngetColumns\x12\x12.GetColumnsRequest\x1a\x13.GetColumnsResponse\x12\x39\n\x0cgetColumnsV2\x12\x14.GetColumnsV2Request\x1a\x13.GetColumnsResponse\x12\x38\n\x0bupdateUsers\x12\x13.UpdateUsersRequest\x1a\x14.UpdateUsersResponse\x12/\n\x08setProps\x12\x10.SetPropsRequest\x1a\x11.SetPropsResponse\x12)\n\x06status\x12\x0e.StatusRequest\x1a\x0f.StatusResponse\x12\x38\n\x0b\x61\x64\x64\x43\x61talogs\x12\x13.AddCatalogsRequest\x1a\x14.AddCatalogsResponse\x12I\n\x16getAddCatalogsResponse\x12\x16.GetAddCatalogsRequest\x1a\x17.GetAddCatalogsResponse\x12;\n\x0cgetCataloges\x12\x14.GetCatalogesRequest\x1a\x15.GetCatalogesResponse\x12\x45\n\x18getNextRemoteCachedChunk\x12\x13.RemoteChunkRequest\x1a\x14.RemoteChunkResponse\x12\x44\n\x0frefreshCatalogs\x12\x17.RefreshCatalogsRequest\x1a\x18.RefreshCatalogsResponse\x12\x44\n\x0f\x63reateDataFrame\x12\x17.CreateDataFrameRequest\x1a\x18.CreateDataFrameResponse\x12V\n\x15projectionOnDataFrame\x12\x1d.ProjectionOnDataFrameRequest\x1a\x1e.ProjectionOnDataFrameResponse\x12J\n\x11\x66ilterOnDataFrame\x12\x19.FilterOnDataFrameRequest\x1a\x1a.FilterOnDataFrameResponse\x12M\n\x12orderByOnDataFrame\x12\x1a.OrderByOnDataFrameRequest\x1a\x1b.OrderByOnDataFrameResponse\x12G\n\x10limitOnDataFrame\x12\x18.LimitOnDataFrameRequest\x1a\x19.LimitOnDataFrameResponse\x12G\n\x10\x65xecuteDataFrame\x12\x18.ExecuteDataFrameRequest\x1a\x19.ExecuteDataFrameResponseB\x02P\x01\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10\x65\x36x_engine.proto\"2\n\nGFieldInfo\x12\x11\n\tfieldName\x18\x01 \x01(\t\x12\x11\n\tfieldType\x18\x02 \x01(\t\"A\n\x13\x46\x61iledSchemaElement\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0e\n\x06reason\x18\x03 \x01(\t\"P\n\x16GetAddCatalogsResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\x12&\n\x08\x66\x61ilures\x18\x02 \x03(\x0b\x32\x14.FailedSchemaElement\"2\n\x0f\x43\x61talogResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tisDefault\x18\x02 \x01(\x08\"<\n\x0eParameterValue\x12\r\n\x05index\x18\x01 \x01(\x11\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\"D\n\x0c\x43learRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x0f\n\rClearResponse\"J\n\x12\x43\x61ncelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x15\n\x13\x43\x61ncelQueryResponse\"F\n\x0e\x45xplainRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\"\n\x0f\x45xplainResponse\x12\x0f\n\x07\x65xplain\x18\x01 \x01(\t\"Y\n\rDryRunRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\"%\n\x0e\x44ryRunResponse\x12\x13\n\x0b\x64ryrunValue\x18\x01 \x01(\t\"l\n\x0f\x44ryRunRequestV2\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x05 \x01(\t\"M\n\x15\x45xplainAnalyzeRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"m\n\x16\x45xplainAnalyzeResponse\x12\x16\n\x0e\x65xplainAnalyze\x18\x01 \x01(\t\x12\x10\n\x08isCached\x18\x02 \x01(\x08\x12\x13\n\x0bparsingTime\x18\x03 \x01(\x12\x12\x14\n\x0cqueueingTime\x18\x04 \x01(\x12\"b\n\x17PrepareStatementRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x13\n\x0bqueryString\x18\x03 \x01(\t\x12\x0f\n\x07quoting\x18\x04 \x01(\t\"u\n\x19PrepareStatementV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07quoting\x18\x05 \x01(\t\"=\n\x18PrepareStatementResponse\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\"@\n\x0eUserAccessInfo\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x10\n\x08userName\x18\x02 \x01(\t\x12\x0e\n\x06tokens\x18\x03 \x03(\t\"g\n\x17\x45xecuteStatementRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\"\x8a\x01\n\x19\x45xecuteStatementV2Request\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\x12\x1f\n\x06params\x18\x05 \x03(\x0b\x32\x0f.ParameterValue\"\x1a\n\x18\x45xecuteStatementResponse\"O\n\x17GetNextResultRowRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"-\n\x18GetNextResultRowResponse\x12\x11\n\tresultRow\x18\x02 \x01(\x0c\"w\n\x19GetNextResultBatchRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\tasRowData\x18\x04 \x01(\x08H\x00\x88\x01\x01\x42\x0c\n\n_asRowData\"1\n\x1aGetNextResultBatchResponse\x12\x13\n\x0bresultBatch\x18\x02 \x01(\x0c\"P\n\x18GetResultMetadataRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"3\n\x19GetResultMetadataResponse\x12\x16\n\x0eresultMetaData\x18\x01 \x01(\x0c\"5\n\x13\x41uthenticateRequest\x12\x0c\n\x04user\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\")\n\x14\x41uthenticateResponse\x12\x11\n\tsessionId\x18\x01 \x01(\t\"5\n\x10GetTablesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\"H\n\x12GetTablesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\"#\n\x11GetTablesResponse\x12\x0e\n\x06tables\x18\x01 \x03(\t\"*\n\x15GetSchemaNamesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"=\n\x17GetSchemaNamesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\")\n\x16GetSchemaNamesResponse\x12\x0f\n\x07schemas\x18\x01 \x03(\t\"E\n\x11GetColumnsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\"X\n\x13GetColumnsV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x04 \x01(\t\"4\n\x12GetColumnsResponse\x12\x1e\n\tfieldInfo\x18\x01 \x03(\x0b\x32\x0b.GFieldInfo\"E\n\rStatusRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"2\n\x0eStatusResponse\x12\x0e\n\x06status\x18\x02 \x01(\x08\x12\x10\n\x08rowCount\x18\x03 \x01(\x12\"5\n\x12\x41\x64\x64\x43\x61talogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0c\n\x04json\x18\x02 \x01(\t\"#\n\x12UpdateUsersRequest\x12\r\n\x05users\x18\x01 \x01(\x0c\"\x15\n\x13UpdateUsersResponse\"3\n\x0fSetPropsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\r\n\x05props\x18\x02 \x01(\t\"\x12\n\x10SetPropsResponse\"*\n\x15GetAddCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x15\n\x13\x41\x64\x64\x43\x61talogsResponse\"\x15\n\x13GetCatalogesRequest\"B\n\x14GetCatalogesResponse\x12*\n\x10\x63\x61talogResponses\x18\x01 \x03(\x0b\x32\x10.CatalogResponse\"+\n\x16RefreshCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x19\n\x17RefreshCatalogsResponse\"X\n\x12RemoteChunkRequest\x12\x17\n\x0foriginalQueryId\x18\x01 \x01(\t\x12\x15\n\rremoteQueryId\x18\x02 \x01(\t\x12\x12\n\nsQueryHash\x18\x03 \x01(\t\"3\n\x13RemoteChunkResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\r\n\x05\x63hunk\x18\x02 \x01(\x0c\"Q\n\x19\x43learOrCancelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x1c\n\x1a\x43learOrCancelQueryResponse\"w\n\x16\x43reateDataFrameRequest\x12\x17\n\x0fparquetFilePath\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x11\n\tsessionId\x18\x04 \x01(\t\x12\x10\n\x08\x65ngineIP\x18\x05 \x01(\t\"*\n\x17\x43reateDataFrameResponse\x12\x0f\n\x07queryId\x18\x01 \x01(\t\"Q\n\x1cProjectionOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\r\n\x05\x66ield\x18\x03 \x03(\t\"\x1f\n\x1dProjectionOnDataFrameResponse\"S\n\x18\x46ilterOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x13\n\x0bwhereClause\x18\x03 \x01(\t\"\x1b\n\x19\x46ilterOnDataFrameResponse\"\x9d\x01\n\x19OrderByOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\r\n\x05\x66ield\x18\x03 \x03(\t\x12%\n\rsortDirection\x18\x04 \x03(\x0e\x32\x0e.SortDirection\x12&\n\x0enullsDirection\x18\x05 \x03(\x0e\x32\x0e.NullDirection\"\x1c\n\x1aOrderByOnDataFrameResponse\"Q\n\x17LimitOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x12\n\nfetchLimit\x18\x03 \x01(\x05\"\x1a\n\x18LimitOnDataFrameResponse\"=\n\x17\x45xecuteDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\"\x1a\n\x18\x45xecuteDataFrameResponse*\"\n\rSortDirection\x12\x07\n\x03\x41SC\x10\x00\x12\x08\n\x04\x44\x45SC\x10\x01*$\n\rNullDirection\x12\t\n\x05\x46IRST\x10\x00\x12\x08\n\x04LAST\x10\x01\x32\xf5\x11\n\x12QueryEngineService\x12&\n\x05\x63lear\x12\r.ClearRequest\x1a\x0e.ClearResponse\x12\x38\n\x0b\x63\x61ncelQuery\x12\x13.CancelQueryRequest\x1a\x14.CancelQueryResponse\x12M\n\x12\x63learOrCancelQuery\x12\x1a.ClearOrCancelQueryRequest\x1a\x1b.ClearOrCancelQueryResponse\x12,\n\x07\x65xplain\x12\x0f.ExplainRequest\x1a\x10.ExplainResponse\x12)\n\x06\x64ryRun\x12\x0e.DryRunRequest\x1a\x0f.DryRunResponse\x12-\n\x08\x64ryRunV2\x12\x10.DryRunRequestV2\x1a\x0f.DryRunResponse\x12\x41\n\x0e\x65xplainAnalyze\x12\x16.ExplainAnalyzeRequest\x1a\x17.ExplainAnalyzeResponse\x12G\n\x10prepareStatement\x12\x18.PrepareStatementRequest\x1a\x19.PrepareStatementResponse\x12K\n\x12prepareStatementV2\x12\x1a.PrepareStatementV2Request\x1a\x19.PrepareStatementResponse\x12G\n\x10\x65xecuteStatement\x12\x18.ExecuteStatementRequest\x1a\x19.ExecuteStatementResponse\x12K\n\x12\x65xecuteStatementV2\x12\x1a.ExecuteStatementV2Request\x1a\x19.ExecuteStatementResponse\x12G\n\x10getNextResultRow\x12\x18.GetNextResultRowRequest\x1a\x19.GetNextResultRowResponse\x12M\n\x12getNextResultBatch\x12\x1a.GetNextResultBatchRequest\x1a\x1b.GetNextResultBatchResponse\x12J\n\x11getResultMetadata\x12\x19.GetResultMetadataRequest\x1a\x1a.GetResultMetadataResponse\x12;\n\x0c\x61uthenticate\x12\x14.AuthenticateRequest\x1a\x15.AuthenticateResponse\x12\x32\n\tgetTables\x12\x11.GetTablesRequest\x1a\x12.GetTablesResponse\x12\x36\n\x0bgetTablesV2\x12\x13.GetTablesV2Request\x1a\x12.GetTablesResponse\x12\x41\n\x0egetSchemaNames\x12\x16.GetSchemaNamesRequest\x1a\x17.GetSchemaNamesResponse\x12\x45\n\x10getSchemaNamesV2\x12\x18.GetSchemaNamesV2Request\x1a\x17.GetSchemaNamesResponse\x12\x35\n\ngetColumns\x12\x12.GetColumnsRequest\x1a\x13.GetColumnsResponse\x12\x39\n\x0cgetColumnsV2\x12\x14.GetColumnsV2Request\x1a\x13.GetColumnsResponse\x12\x38\n\x0bupdateUsers\x12\x13.UpdateUsersRequest\x1a\x14.UpdateUsersResponse\x12/\n\x08setProps\x12\x10.SetPropsRequest\x1a\x11.SetPropsResponse\x12)\n\x06status\x12\x0e.StatusRequest\x1a\x0f.StatusResponse\x12\x38\n\x0b\x61\x64\x64\x43\x61talogs\x12\x13.AddCatalogsRequest\x1a\x14.AddCatalogsResponse\x12I\n\x16getAddCatalogsResponse\x12\x16.GetAddCatalogsRequest\x1a\x17.GetAddCatalogsResponse\x12;\n\x0cgetCataloges\x12\x14.GetCatalogesRequest\x1a\x15.GetCatalogesResponse\x12\x45\n\x18getNextRemoteCachedChunk\x12\x13.RemoteChunkRequest\x1a\x14.RemoteChunkResponse\x12\x44\n\x0frefreshCatalogs\x12\x17.RefreshCatalogsRequest\x1a\x18.RefreshCatalogsResponse\x12\x44\n\x0f\x63reateDataFrame\x12\x17.CreateDataFrameRequest\x1a\x18.CreateDataFrameResponse\x12V\n\x15projectionOnDataFrame\x12\x1d.ProjectionOnDataFrameRequest\x1a\x1e.ProjectionOnDataFrameResponse\x12J\n\x11\x66ilterOnDataFrame\x12\x19.FilterOnDataFrameRequest\x1a\x1a.FilterOnDataFrameResponse\x12M\n\x12orderByOnDataFrame\x12\x1a.OrderByOnDataFrameRequest\x1a\x1b.OrderByOnDataFrameResponse\x12G\n\x10limitOnDataFrame\x12\x18.LimitOnDataFrameRequest\x1a\x19.LimitOnDataFrameResponse\x12G\n\x10\x65xecuteDataFrame\x12\x18.ExecuteDataFrameRequest\x1a\x19.ExecuteDataFrameResponseB\x02P\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -22,8 +22,10 @@ DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'P\001' - _globals['_SORTDIRECTION']._serialized_start=4312 - _globals['_SORTDIRECTION']._serialized_end=4346 + _globals['_SORTDIRECTION']._serialized_start=4329 + _globals['_SORTDIRECTION']._serialized_end=4363 + _globals['_NULLDIRECTION']._serialized_start=4365 + _globals['_NULLDIRECTION']._serialized_end=4401 _globals['_GFIELDINFO']._serialized_start=20 _globals['_GFIELDINFO']._serialized_end=70 _globals['_FAILEDSCHEMAELEMENT']._serialized_start=72 @@ -151,17 +153,17 @@ _globals['_FILTERONDATAFRAMERESPONSE']._serialized_start=3908 _globals['_FILTERONDATAFRAMERESPONSE']._serialized_end=3935 _globals['_ORDERBYONDATAFRAMEREQUEST']._serialized_start=3938 - _globals['_ORDERBYONDATAFRAMEREQUEST']._serialized_end=4078 - _globals['_ORDERBYONDATAFRAMERESPONSE']._serialized_start=4080 - _globals['_ORDERBYONDATAFRAMERESPONSE']._serialized_end=4108 - _globals['_LIMITONDATAFRAMEREQUEST']._serialized_start=4110 - _globals['_LIMITONDATAFRAMEREQUEST']._serialized_end=4191 - _globals['_LIMITONDATAFRAMERESPONSE']._serialized_start=4193 - _globals['_LIMITONDATAFRAMERESPONSE']._serialized_end=4219 - _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_start=4221 - _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_end=4282 - _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_start=4284 - _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_end=4310 - _globals['_QUERYENGINESERVICE']._serialized_start=4349 - _globals['_QUERYENGINESERVICE']._serialized_end=6642 + _globals['_ORDERBYONDATAFRAMEREQUEST']._serialized_end=4095 + _globals['_ORDERBYONDATAFRAMERESPONSE']._serialized_start=4097 + _globals['_ORDERBYONDATAFRAMERESPONSE']._serialized_end=4125 + _globals['_LIMITONDATAFRAMEREQUEST']._serialized_start=4127 + _globals['_LIMITONDATAFRAMEREQUEST']._serialized_end=4208 + _globals['_LIMITONDATAFRAMERESPONSE']._serialized_start=4210 + _globals['_LIMITONDATAFRAMERESPONSE']._serialized_end=4236 + _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_start=4238 + _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_end=4299 + _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_start=4301 + _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_end=4327 + _globals['_QUERYENGINESERVICE']._serialized_start=4404 + _globals['_QUERYENGINESERVICE']._serialized_end=6697 # @@protoc_insertion_point(module_scope) diff --git a/e6data_python_connector/server/e6x_engine_pb2.pyi b/e6data_python_connector/server/e6x_engine_pb2.pyi index b1f1f3b..bce9c98 100644 --- a/e6data_python_connector/server/e6x_engine_pb2.pyi +++ b/e6data_python_connector/server/e6x_engine_pb2.pyi @@ -10,8 +10,15 @@ class SortDirection(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): __slots__ = [] ASC: _ClassVar[SortDirection] DESC: _ClassVar[SortDirection] + +class NullDirection(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + FIRST: _ClassVar[NullDirection] + LAST: _ClassVar[NullDirection] ASC: SortDirection DESC: SortDirection +FIRST: NullDirection +LAST: NullDirection class GFieldInfo(_message.Message): __slots__ = ["fieldName", "fieldType"] @@ -524,16 +531,18 @@ class FilterOnDataFrameResponse(_message.Message): def __init__(self) -> None: ... class OrderByOnDataFrameRequest(_message.Message): - __slots__ = ["queryId", "sessionId", "field", "sortDirection"] + __slots__ = ["queryId", "sessionId", "field", "sortDirection", "nullsDirection"] QUERYID_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] FIELD_FIELD_NUMBER: _ClassVar[int] SORTDIRECTION_FIELD_NUMBER: _ClassVar[int] + NULLSDIRECTION_FIELD_NUMBER: _ClassVar[int] queryId: str sessionId: str field: _containers.RepeatedScalarFieldContainer[str] - sortDirection: SortDirection - def __init__(self, queryId: _Optional[str] = ..., sessionId: _Optional[str] = ..., field: _Optional[_Iterable[str]] = ..., sortDirection: _Optional[_Union[SortDirection, str]] = ...) -> None: ... + sortDirection: _containers.RepeatedScalarFieldContainer[SortDirection] + nullsDirection: _containers.RepeatedScalarFieldContainer[NullDirection] + def __init__(self, queryId: _Optional[str] = ..., sessionId: _Optional[str] = ..., field: _Optional[_Iterable[str]] = ..., sortDirection: _Optional[_Iterable[_Union[SortDirection, str]]] = ..., nullsDirection: _Optional[_Iterable[_Union[NullDirection, str]]] = ...) -> None: ... class OrderByOnDataFrameResponse(_message.Message): __slots__ = [] diff --git a/e6x_engine.proto b/e6x_engine.proto index dacc7d2..42b7f6b 100644 --- a/e6x_engine.proto +++ b/e6x_engine.proto @@ -337,12 +337,19 @@ enum SortDirection DESC = 1; } +enum NullDirection +{ + FIRST = 0; + LAST = 1; +} + message OrderByOnDataFrameRequest { string queryId = 1; string sessionId = 2; repeated string field = 3; - optional SortDirection sortDirection = 4; + repeated SortDirection sortDirection = 4; + repeated NullDirection nullsDirection = 5; } message OrderByOnDataFrameResponse {} From e3e8296874206d3cfa137dc3919dfc9163b9d02b Mon Sep 17 00:00:00 2001 From: Yash Date: Mon, 16 Dec 2024 15:45:39 +0530 Subject: [PATCH 5/9] order by changes --- e6data_python_connector/e6data_grpc.py | 44 +++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/e6data_python_connector/e6data_grpc.py b/e6data_python_connector/e6data_grpc.py index f6a23e8..185fd8b 100644 --- a/e6data_python_connector/e6data_grpc.py +++ b/e6data_python_connector/e6data_grpc.py @@ -15,6 +15,7 @@ from decimal import Decimal from io import BytesIO from ssl import CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED +from typing import overload import grpc from grpc._channel import _InactiveRpcError @@ -1052,6 +1053,12 @@ def __init__(self, connection: Connection, file_path): self._batch = None self._create_dataframe() + def __enter__(self): + pass + + def __exit__(self, exc_type, exc_val, exc_tb): + pass + def _create_dataframe(self): client = self.connection.client @@ -1068,7 +1075,7 @@ def _create_dataframe(self): ) self._query_id = create_dataframe_response.queryId - def select(self, *fields): + def select(self, *fields) -> "DataFrame": projection_fields = [] for field in fields: projection_fields.append(field) @@ -1086,7 +1093,7 @@ def select(self, *fields): return self - def where(self, where_clause : str): + def where(self, where_clause : str) -> "DataFrame": client = self.connection.client filter_on_dataframe_request = e6x_engine_pb2.FilterOnDataFrameRequest( queryId=self._query_id, @@ -1098,11 +1105,14 @@ def where(self, where_clause : str): filter_on_dataframe_request ) - def order_by(self, fields_list : list, sort_direction_list = None, null_direction_list = None): + return self + + @overload + def order_by(self, field_list : list, sort_direction_list = None, null_direction_list = None) -> "DataFrame": orderby_fields = [] sort_direction_request = [] null_direction_request = [] - for field in fields_list: + for field in field_list: orderby_fields.append(field) for direction in sort_direction_list: @@ -1138,7 +1148,29 @@ def order_by(self, fields_list : list, sort_direction_list = None, null_directio ) return self - def limit(self, fetch_limit : int): + def order_by(self, *field_list) -> "DataFrame": + orderby_fields = [] + sort_direction_request = [] + null_direction_request = [] + for field in field_list: + orderby_fields.append(field) + + client = self.connection.client + + orderby_on_dataframe_request = e6x_engine_pb2.OrderByOnDataFrameRequest( + queryId=self._query_id, + sessionId=self._sessionId, + field=orderby_fields, + sortDirection=sort_direction_request, + nullsDirection=null_direction_request + ) + + orderby_on_dataframe_response = client.orderByOnDataFrame( + orderby_on_dataframe_request + ) + return self + + def limit(self, fetch_limit : int) -> "DataFrame": client = self.connection.client limit_on_dataframe_request = e6x_engine_pb2.LimitOnDataFrameRequest( queryId=self._query_id, @@ -1150,6 +1182,8 @@ def limit(self, fetch_limit : int): limit_on_dataframe_request ) + return self + def show(self): self.execute() return self.fetchall() From cc07261823cee7cc749d149fd695af9d3c3866eb Mon Sep 17 00:00:00 2001 From: Yash Date: Sat, 1 Feb 2025 12:33:19 +0530 Subject: [PATCH 6/9] add session for dataframe --- e6data_python_connector/e6data_grpc.py | 103 ++++++++++++++---- .../server/e6x_engine_pb2.py | 66 +++++------ .../server/e6x_engine_pb2.pyi | 58 ++++++++-- .../server/e6x_engine_pb2_grpc.py | 33 ++++++ e6x_engine.proto | 74 ++++++++----- 5 files changed, 244 insertions(+), 90 deletions(-) diff --git a/e6data_python_connector/e6data_grpc.py b/e6data_python_connector/e6data_grpc.py index 185fd8b..606d1ad 100644 --- a/e6data_python_connector/e6data_grpc.py +++ b/e6data_python_connector/e6data_grpc.py @@ -16,6 +16,7 @@ from io import BytesIO from ssl import CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED from typing import overload +import uuid import grpc from grpc._channel import _InactiveRpcError @@ -207,6 +208,9 @@ def __init__( self.grpc_auto_resume_timeout_seconds = self._grpc_options.pop('grpc_auto_resume_timeout_seconds') self._create_client() + # initialize session for dataframe + self._dataframe_session = DataFrameSession(self) + @property def _get_grpc_options(self): """ @@ -358,6 +362,7 @@ def __exit__(self, exc_type, exc_val, exc_tb): exc_val (BaseException): The exception instance raised (if any). exc_tb (Traceback): The traceback object of the exception (if any). """ + self._dataframe_session.terminate() self.close() def close(self): @@ -370,6 +375,7 @@ def close(self): self._channel.close() self._channel = None self._session_id = None + self._dataframe_session.terminate() def check_connection(self): """ @@ -534,8 +540,15 @@ def cursor(self, catalog_name=None, db_name=None): """ return Cursor(self, database=db_name, catalog_name=catalog_name) - def load_parquet(self, parquet_path): - return DataFrame(self, file_path=parquet_path) + def load_parquet(self, parquet_path) -> "DataFrame": + dataframe = DataFrame( + self, + file_path=parquet_path, + user_uuid=self._dataframe_session.get_user_uuid, + dataframe_number=self._dataframe_session.get_dataframe_number) + + self._dataframe_session.update_dataframe_map(dataframe=dataframe) + return dataframe def rollback(self): """ @@ -1042,8 +1055,10 @@ def explain_analyse(self): class DataFrame: - def __init__(self, connection: Connection, file_path): - self.connection = connection + def __init__(self, connection: Connection, file_path, user_uuid, dataframe_number): + self._user_uuid = user_uuid + self._dataframe_number = dataframe_number + self._connection = connection self._file_path = file_path self._engine_ip = connection.host self._sessionId = connection.get_session_id @@ -1053,21 +1068,17 @@ def __init__(self, connection: Connection, file_path): self._batch = None self._create_dataframe() - def __enter__(self): - pass - - def __exit__(self, exc_type, exc_val, exc_tb): - pass - def _create_dataframe(self): - client = self.connection.client + client = self._connection.client create_dataframe_request = e6x_engine_pb2.CreateDataFrameRequest( parquetFilePath=self._file_path, - catalog=self.connection.catalog_name, - schema=self.connection.database, + catalog=self._connection.catalog_name, + schema=self._connection.database, sessionId=self._sessionId, - engineIP=self._engine_ip + engineIP=self._engine_ip, + userUUID=self._user_uuid, + dataframeNumber=self._dataframe_number ) create_dataframe_response = client.createDataFrame( @@ -1080,9 +1091,11 @@ def select(self, *fields) -> "DataFrame": for field in fields: projection_fields.append(field) - client = self.connection.client + client = self._connection.client projection_on_dataframe_request = e6x_engine_pb2.ProjectionOnDataFrameRequest( + userUUID=self._user_uuid, queryId=self._query_id, + dataframeNumber=self._dataframe_number, sessionId=self._sessionId, field=projection_fields ) @@ -1094,9 +1107,11 @@ def select(self, *fields) -> "DataFrame": return self def where(self, where_clause : str) -> "DataFrame": - client = self.connection.client + client = self._connection.client filter_on_dataframe_request = e6x_engine_pb2.FilterOnDataFrameRequest( + userUUID=self._user_uuid, queryId=self._query_id, + dataframeNumber=self._dataframe_number, sessionId=self._sessionId, whereClause=where_clause ) @@ -1136,7 +1151,9 @@ def order_by(self, field_list : list, sort_direction_list = None, null_direction client = self.connection.client orderby_on_dataframe_request = e6x_engine_pb2.OrderByOnDataFrameRequest( + userUUID=self._user_uuid, queryId=self._query_id, + dataframeNumber=self._dataframe_number, sessionId=self._sessionId, field=orderby_fields, sortDirection=sort_direction_request, @@ -1155,10 +1172,12 @@ def order_by(self, *field_list) -> "DataFrame": for field in field_list: orderby_fields.append(field) - client = self.connection.client + client = self._connection.client orderby_on_dataframe_request = e6x_engine_pb2.OrderByOnDataFrameRequest( + userUUID=self._user_uuid, queryId=self._query_id, + dataframeNumber=self._dataframe_number, sessionId=self._sessionId, field=orderby_fields, sortDirection=sort_direction_request, @@ -1171,9 +1190,11 @@ def order_by(self, *field_list) -> "DataFrame": return self def limit(self, fetch_limit : int) -> "DataFrame": - client = self.connection.client + client = self._connection.client limit_on_dataframe_request = e6x_engine_pb2.LimitOnDataFrameRequest( + userUUID=self._user_uuid, queryId=self._query_id, + dataframeNumber=self._dataframe_number, sessionId=self._sessionId, fetchLimit=fetch_limit ) @@ -1189,9 +1210,11 @@ def show(self): return self.fetchall() def execute(self): - client = self.connection.client + client = self._connection.client execute_dataframe_request = e6x_engine_pb2.ExecuteDataFrameRequest( + userUUID=self._user_uuid, queryId=self._query_id, + dataframeNumber=self._dataframe_number, sessionId=self._sessionId ) execute_dataframe_response = client.executeDataFrame( @@ -1204,7 +1227,7 @@ def _update_meta_data(self): sessionId=self._sessionId, queryId=self._query_id ) - get_result_metadata_response = self.connection.client.getResultMetadata( + get_result_metadata_response = self._connection.client.getResultMetadata( result_meta_data_request, ) buffer = BytesIO(get_result_metadata_response.resultMetaData) @@ -1212,7 +1235,7 @@ def _update_meta_data(self): self._is_metadata_updated = True def _fetch_batch(self): - client = self.connection.client + client = self._connection.client get_next_result_batch_request = e6x_engine_pb2.GetNextResultBatchRequest( engineIP=self._engine_ip, sessionId=self._sessionId, @@ -1240,6 +1263,44 @@ def fetchall(self): self._data = None return rows +class DataFrameSession: + def __init__(self, connection: Connection): + self._user_uuid = str(uuid.uuid4()) + self._connection = connection + self._dataframe_count = 0 + self._dataframe_map = dict() + self._is_terminated = False + + def __exit__(self, exc_type, exc_val, exc_tb): + self.terminate() + + def update_dataframe_map(self, dataframe : "DataFrame"): + self._dataframe_map.update({self._dataframe_count, dataframe}) + self._dataframe_count = self._dataframe_count + 1 + + @property + def get_user_uuid(self): + return self._user_uuid + + @property + def get_dataframe_number(self) -> int: + return self._dataframe_count + + @property + def is_terminated(self) -> bool: + return self._is_terminated + + def terminate(self): + + if not self._is_terminated: + drop_user_context_request = e6x_engine_pb2.DropUserContextRequest( + userUUID=self.get_user_uuid + ) + + drop_user_context_response = self._connection.client.dropUserContext(drop_user_context_request) + self._is_terminated = True + + def poll(self, get_progress_update=True): """Poll for and return the raw status data provided by the Hive Thrift REST API. diff --git a/e6data_python_connector/server/e6x_engine_pb2.py b/e6data_python_connector/server/e6x_engine_pb2.py index 22fe28f..a429aaa 100644 --- a/e6data_python_connector/server/e6x_engine_pb2.py +++ b/e6data_python_connector/server/e6x_engine_pb2.py @@ -13,7 +13,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10\x65\x36x_engine.proto\"2\n\nGFieldInfo\x12\x11\n\tfieldName\x18\x01 \x01(\t\x12\x11\n\tfieldType\x18\x02 \x01(\t\"A\n\x13\x46\x61iledSchemaElement\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0e\n\x06reason\x18\x03 \x01(\t\"P\n\x16GetAddCatalogsResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\x12&\n\x08\x66\x61ilures\x18\x02 \x03(\x0b\x32\x14.FailedSchemaElement\"2\n\x0f\x43\x61talogResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tisDefault\x18\x02 \x01(\x08\"<\n\x0eParameterValue\x12\r\n\x05index\x18\x01 \x01(\x11\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\"D\n\x0c\x43learRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x0f\n\rClearResponse\"J\n\x12\x43\x61ncelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x15\n\x13\x43\x61ncelQueryResponse\"F\n\x0e\x45xplainRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\"\n\x0f\x45xplainResponse\x12\x0f\n\x07\x65xplain\x18\x01 \x01(\t\"Y\n\rDryRunRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\"%\n\x0e\x44ryRunResponse\x12\x13\n\x0b\x64ryrunValue\x18\x01 \x01(\t\"l\n\x0f\x44ryRunRequestV2\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x05 \x01(\t\"M\n\x15\x45xplainAnalyzeRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"m\n\x16\x45xplainAnalyzeResponse\x12\x16\n\x0e\x65xplainAnalyze\x18\x01 \x01(\t\x12\x10\n\x08isCached\x18\x02 \x01(\x08\x12\x13\n\x0bparsingTime\x18\x03 \x01(\x12\x12\x14\n\x0cqueueingTime\x18\x04 \x01(\x12\"b\n\x17PrepareStatementRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x13\n\x0bqueryString\x18\x03 \x01(\t\x12\x0f\n\x07quoting\x18\x04 \x01(\t\"u\n\x19PrepareStatementV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07quoting\x18\x05 \x01(\t\"=\n\x18PrepareStatementResponse\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\"@\n\x0eUserAccessInfo\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x10\n\x08userName\x18\x02 \x01(\t\x12\x0e\n\x06tokens\x18\x03 \x03(\t\"g\n\x17\x45xecuteStatementRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\"\x8a\x01\n\x19\x45xecuteStatementV2Request\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\x12\x1f\n\x06params\x18\x05 \x03(\x0b\x32\x0f.ParameterValue\"\x1a\n\x18\x45xecuteStatementResponse\"O\n\x17GetNextResultRowRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"-\n\x18GetNextResultRowResponse\x12\x11\n\tresultRow\x18\x02 \x01(\x0c\"w\n\x19GetNextResultBatchRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\tasRowData\x18\x04 \x01(\x08H\x00\x88\x01\x01\x42\x0c\n\n_asRowData\"1\n\x1aGetNextResultBatchResponse\x12\x13\n\x0bresultBatch\x18\x02 \x01(\x0c\"P\n\x18GetResultMetadataRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"3\n\x19GetResultMetadataResponse\x12\x16\n\x0eresultMetaData\x18\x01 \x01(\x0c\"5\n\x13\x41uthenticateRequest\x12\x0c\n\x04user\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\")\n\x14\x41uthenticateResponse\x12\x11\n\tsessionId\x18\x01 \x01(\t\"5\n\x10GetTablesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\"H\n\x12GetTablesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\"#\n\x11GetTablesResponse\x12\x0e\n\x06tables\x18\x01 \x03(\t\"*\n\x15GetSchemaNamesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"=\n\x17GetSchemaNamesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\")\n\x16GetSchemaNamesResponse\x12\x0f\n\x07schemas\x18\x01 \x03(\t\"E\n\x11GetColumnsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\"X\n\x13GetColumnsV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x04 \x01(\t\"4\n\x12GetColumnsResponse\x12\x1e\n\tfieldInfo\x18\x01 \x03(\x0b\x32\x0b.GFieldInfo\"E\n\rStatusRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"2\n\x0eStatusResponse\x12\x0e\n\x06status\x18\x02 \x01(\x08\x12\x10\n\x08rowCount\x18\x03 \x01(\x12\"5\n\x12\x41\x64\x64\x43\x61talogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0c\n\x04json\x18\x02 \x01(\t\"#\n\x12UpdateUsersRequest\x12\r\n\x05users\x18\x01 \x01(\x0c\"\x15\n\x13UpdateUsersResponse\"3\n\x0fSetPropsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\r\n\x05props\x18\x02 \x01(\t\"\x12\n\x10SetPropsResponse\"*\n\x15GetAddCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x15\n\x13\x41\x64\x64\x43\x61talogsResponse\"\x15\n\x13GetCatalogesRequest\"B\n\x14GetCatalogesResponse\x12*\n\x10\x63\x61talogResponses\x18\x01 \x03(\x0b\x32\x10.CatalogResponse\"+\n\x16RefreshCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x19\n\x17RefreshCatalogsResponse\"X\n\x12RemoteChunkRequest\x12\x17\n\x0foriginalQueryId\x18\x01 \x01(\t\x12\x15\n\rremoteQueryId\x18\x02 \x01(\t\x12\x12\n\nsQueryHash\x18\x03 \x01(\t\"3\n\x13RemoteChunkResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\r\n\x05\x63hunk\x18\x02 \x01(\x0c\"Q\n\x19\x43learOrCancelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x1c\n\x1a\x43learOrCancelQueryResponse\"w\n\x16\x43reateDataFrameRequest\x12\x17\n\x0fparquetFilePath\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x11\n\tsessionId\x18\x04 \x01(\t\x12\x10\n\x08\x65ngineIP\x18\x05 \x01(\t\"*\n\x17\x43reateDataFrameResponse\x12\x0f\n\x07queryId\x18\x01 \x01(\t\"Q\n\x1cProjectionOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\r\n\x05\x66ield\x18\x03 \x03(\t\"\x1f\n\x1dProjectionOnDataFrameResponse\"S\n\x18\x46ilterOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x13\n\x0bwhereClause\x18\x03 \x01(\t\"\x1b\n\x19\x46ilterOnDataFrameResponse\"\x9d\x01\n\x19OrderByOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\r\n\x05\x66ield\x18\x03 \x03(\t\x12%\n\rsortDirection\x18\x04 \x03(\x0e\x32\x0e.SortDirection\x12&\n\x0enullsDirection\x18\x05 \x03(\x0e\x32\x0e.NullDirection\"\x1c\n\x1aOrderByOnDataFrameResponse\"Q\n\x17LimitOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x12\n\nfetchLimit\x18\x03 \x01(\x05\"\x1a\n\x18LimitOnDataFrameResponse\"=\n\x17\x45xecuteDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\"\x1a\n\x18\x45xecuteDataFrameResponse*\"\n\rSortDirection\x12\x07\n\x03\x41SC\x10\x00\x12\x08\n\x04\x44\x45SC\x10\x01*$\n\rNullDirection\x12\t\n\x05\x46IRST\x10\x00\x12\x08\n\x04LAST\x10\x01\x32\xf5\x11\n\x12QueryEngineService\x12&\n\x05\x63lear\x12\r.ClearRequest\x1a\x0e.ClearResponse\x12\x38\n\x0b\x63\x61ncelQuery\x12\x13.CancelQueryRequest\x1a\x14.CancelQueryResponse\x12M\n\x12\x63learOrCancelQuery\x12\x1a.ClearOrCancelQueryRequest\x1a\x1b.ClearOrCancelQueryResponse\x12,\n\x07\x65xplain\x12\x0f.ExplainRequest\x1a\x10.ExplainResponse\x12)\n\x06\x64ryRun\x12\x0e.DryRunRequest\x1a\x0f.DryRunResponse\x12-\n\x08\x64ryRunV2\x12\x10.DryRunRequestV2\x1a\x0f.DryRunResponse\x12\x41\n\x0e\x65xplainAnalyze\x12\x16.ExplainAnalyzeRequest\x1a\x17.ExplainAnalyzeResponse\x12G\n\x10prepareStatement\x12\x18.PrepareStatementRequest\x1a\x19.PrepareStatementResponse\x12K\n\x12prepareStatementV2\x12\x1a.PrepareStatementV2Request\x1a\x19.PrepareStatementResponse\x12G\n\x10\x65xecuteStatement\x12\x18.ExecuteStatementRequest\x1a\x19.ExecuteStatementResponse\x12K\n\x12\x65xecuteStatementV2\x12\x1a.ExecuteStatementV2Request\x1a\x19.ExecuteStatementResponse\x12G\n\x10getNextResultRow\x12\x18.GetNextResultRowRequest\x1a\x19.GetNextResultRowResponse\x12M\n\x12getNextResultBatch\x12\x1a.GetNextResultBatchRequest\x1a\x1b.GetNextResultBatchResponse\x12J\n\x11getResultMetadata\x12\x19.GetResultMetadataRequest\x1a\x1a.GetResultMetadataResponse\x12;\n\x0c\x61uthenticate\x12\x14.AuthenticateRequest\x1a\x15.AuthenticateResponse\x12\x32\n\tgetTables\x12\x11.GetTablesRequest\x1a\x12.GetTablesResponse\x12\x36\n\x0bgetTablesV2\x12\x13.GetTablesV2Request\x1a\x12.GetTablesResponse\x12\x41\n\x0egetSchemaNames\x12\x16.GetSchemaNamesRequest\x1a\x17.GetSchemaNamesResponse\x12\x45\n\x10getSchemaNamesV2\x12\x18.GetSchemaNamesV2Request\x1a\x17.GetSchemaNamesResponse\x12\x35\n\ngetColumns\x12\x12.GetColumnsRequest\x1a\x13.GetColumnsResponse\x12\x39\n\x0cgetColumnsV2\x12\x14.GetColumnsV2Request\x1a\x13.GetColumnsResponse\x12\x38\n\x0bupdateUsers\x12\x13.UpdateUsersRequest\x1a\x14.UpdateUsersResponse\x12/\n\x08setProps\x12\x10.SetPropsRequest\x1a\x11.SetPropsResponse\x12)\n\x06status\x12\x0e.StatusRequest\x1a\x0f.StatusResponse\x12\x38\n\x0b\x61\x64\x64\x43\x61talogs\x12\x13.AddCatalogsRequest\x1a\x14.AddCatalogsResponse\x12I\n\x16getAddCatalogsResponse\x12\x16.GetAddCatalogsRequest\x1a\x17.GetAddCatalogsResponse\x12;\n\x0cgetCataloges\x12\x14.GetCatalogesRequest\x1a\x15.GetCatalogesResponse\x12\x45\n\x18getNextRemoteCachedChunk\x12\x13.RemoteChunkRequest\x1a\x14.RemoteChunkResponse\x12\x44\n\x0frefreshCatalogs\x12\x17.RefreshCatalogsRequest\x1a\x18.RefreshCatalogsResponse\x12\x44\n\x0f\x63reateDataFrame\x12\x17.CreateDataFrameRequest\x1a\x18.CreateDataFrameResponse\x12V\n\x15projectionOnDataFrame\x12\x1d.ProjectionOnDataFrameRequest\x1a\x1e.ProjectionOnDataFrameResponse\x12J\n\x11\x66ilterOnDataFrame\x12\x19.FilterOnDataFrameRequest\x1a\x1a.FilterOnDataFrameResponse\x12M\n\x12orderByOnDataFrame\x12\x1a.OrderByOnDataFrameRequest\x1a\x1b.OrderByOnDataFrameResponse\x12G\n\x10limitOnDataFrame\x12\x18.LimitOnDataFrameRequest\x1a\x19.LimitOnDataFrameResponse\x12G\n\x10\x65xecuteDataFrame\x12\x18.ExecuteDataFrameRequest\x1a\x19.ExecuteDataFrameResponseB\x02P\x01\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10\x65\x36x_engine.proto\"2\n\nGFieldInfo\x12\x11\n\tfieldName\x18\x01 \x01(\t\x12\x11\n\tfieldType\x18\x02 \x01(\t\"A\n\x13\x46\x61iledSchemaElement\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0e\n\x06reason\x18\x03 \x01(\t\"P\n\x16GetAddCatalogsResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\x12&\n\x08\x66\x61ilures\x18\x02 \x03(\x0b\x32\x14.FailedSchemaElement\"2\n\x0f\x43\x61talogResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tisDefault\x18\x02 \x01(\x08\"<\n\x0eParameterValue\x12\r\n\x05index\x18\x01 \x01(\x11\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\"D\n\x0c\x43learRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x0f\n\rClearResponse\"J\n\x12\x43\x61ncelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x15\n\x13\x43\x61ncelQueryResponse\"F\n\x0e\x45xplainRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\"\n\x0f\x45xplainResponse\x12\x0f\n\x07\x65xplain\x18\x01 \x01(\t\"Y\n\rDryRunRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\"%\n\x0e\x44ryRunResponse\x12\x13\n\x0b\x64ryrunValue\x18\x01 \x01(\t\"l\n\x0f\x44ryRunRequestV2\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x05 \x01(\t\"M\n\x15\x45xplainAnalyzeRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"m\n\x16\x45xplainAnalyzeResponse\x12\x16\n\x0e\x65xplainAnalyze\x18\x01 \x01(\t\x12\x10\n\x08isCached\x18\x02 \x01(\x08\x12\x13\n\x0bparsingTime\x18\x03 \x01(\x12\x12\x14\n\x0cqueueingTime\x18\x04 \x01(\x12\"b\n\x17PrepareStatementRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x13\n\x0bqueryString\x18\x03 \x01(\t\x12\x0f\n\x07quoting\x18\x04 \x01(\t\"u\n\x19PrepareStatementV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07quoting\x18\x05 \x01(\t\"=\n\x18PrepareStatementResponse\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\"@\n\x0eUserAccessInfo\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x10\n\x08userName\x18\x02 \x01(\t\x12\x0e\n\x06tokens\x18\x03 \x03(\t\"g\n\x17\x45xecuteStatementRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\"\x8a\x01\n\x19\x45xecuteStatementV2Request\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\x12\x1f\n\x06params\x18\x05 \x03(\x0b\x32\x0f.ParameterValue\"\x1a\n\x18\x45xecuteStatementResponse\"O\n\x17GetNextResultRowRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"-\n\x18GetNextResultRowResponse\x12\x11\n\tresultRow\x18\x02 \x01(\x0c\"w\n\x19GetNextResultBatchRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\tasRowData\x18\x04 \x01(\x08H\x00\x88\x01\x01\x42\x0c\n\n_asRowData\"1\n\x1aGetNextResultBatchResponse\x12\x13\n\x0bresultBatch\x18\x02 \x01(\x0c\"P\n\x18GetResultMetadataRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"3\n\x19GetResultMetadataResponse\x12\x16\n\x0eresultMetaData\x18\x01 \x01(\x0c\"5\n\x13\x41uthenticateRequest\x12\x0c\n\x04user\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\")\n\x14\x41uthenticateResponse\x12\x11\n\tsessionId\x18\x01 \x01(\t\"5\n\x10GetTablesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\"H\n\x12GetTablesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\"#\n\x11GetTablesResponse\x12\x0e\n\x06tables\x18\x01 \x03(\t\"*\n\x15GetSchemaNamesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"=\n\x17GetSchemaNamesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\")\n\x16GetSchemaNamesResponse\x12\x0f\n\x07schemas\x18\x01 \x03(\t\"E\n\x11GetColumnsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\"X\n\x13GetColumnsV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x04 \x01(\t\"4\n\x12GetColumnsResponse\x12\x1e\n\tfieldInfo\x18\x01 \x03(\x0b\x32\x0b.GFieldInfo\"E\n\rStatusRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"2\n\x0eStatusResponse\x12\x0e\n\x06status\x18\x02 \x01(\x08\x12\x10\n\x08rowCount\x18\x03 \x01(\x12\"5\n\x12\x41\x64\x64\x43\x61talogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0c\n\x04json\x18\x02 \x01(\t\"#\n\x12UpdateUsersRequest\x12\r\n\x05users\x18\x01 \x01(\x0c\"\x15\n\x13UpdateUsersResponse\"3\n\x0fSetPropsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\r\n\x05props\x18\x02 \x01(\t\"\x12\n\x10SetPropsResponse\"*\n\x15GetAddCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x15\n\x13\x41\x64\x64\x43\x61talogsResponse\"\x15\n\x13GetCatalogesRequest\"B\n\x14GetCatalogesResponse\x12*\n\x10\x63\x61talogResponses\x18\x01 \x03(\x0b\x32\x10.CatalogResponse\"+\n\x16RefreshCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x19\n\x17RefreshCatalogsResponse\"X\n\x12RemoteChunkRequest\x12\x17\n\x0foriginalQueryId\x18\x01 \x01(\t\x12\x15\n\rremoteQueryId\x18\x02 \x01(\t\x12\x12\n\nsQueryHash\x18\x03 \x01(\t\"3\n\x13RemoteChunkResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\r\n\x05\x63hunk\x18\x02 \x01(\x0c\"Q\n\x19\x43learOrCancelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x1c\n\x1a\x43learOrCancelQueryResponse\"\xa2\x01\n\x16\x43reateDataFrameRequest\x12\x17\n\x0fparquetFilePath\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x11\n\tsessionId\x18\x04 \x01(\t\x12\x10\n\x08\x65ngineIP\x18\x05 \x01(\t\x12\x10\n\x08userUUID\x18\x06 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x07 \x01(\x05\"*\n\x17\x43reateDataFrameResponse\x12\x0f\n\x07queryId\x18\x01 \x01(\t\"|\n\x1cProjectionOnDataFrameRequest\x12\x10\n\x08userUUID\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x03 \x01(\x05\x12\x11\n\tsessionId\x18\x04 \x01(\t\x12\r\n\x05\x66ield\x18\x05 \x03(\t\"\x1f\n\x1dProjectionOnDataFrameResponse\"~\n\x18\x46ilterOnDataFrameRequest\x12\x10\n\x08userUUID\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x03 \x01(\x05\x12\x11\n\tsessionId\x18\x04 \x01(\t\x12\x13\n\x0bwhereClause\x18\x05 \x01(\t\"\x1b\n\x19\x46ilterOnDataFrameResponse\"\xc8\x01\n\x19OrderByOnDataFrameRequest\x12\x10\n\x08userUUID\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x03 \x01(\x05\x12\x11\n\tsessionId\x18\x04 \x01(\t\x12\r\n\x05\x66ield\x18\x05 \x03(\t\x12%\n\rsortDirection\x18\x06 \x03(\x0e\x32\x0e.SortDirection\x12&\n\x0enullsDirection\x18\x07 \x03(\x0e\x32\x0e.NullDirection\"\x1c\n\x1aOrderByOnDataFrameResponse\"|\n\x17LimitOnDataFrameRequest\x12\x10\n\x08userUUID\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x03 \x01(\x05\x12\x11\n\tsessionId\x18\x04 \x01(\t\x12\x12\n\nfetchLimit\x18\x05 \x01(\x05\"\x1a\n\x18LimitOnDataFrameResponse\"h\n\x17\x45xecuteDataFrameRequest\x12\x10\n\x08userUUID\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x03 \x01(\x05\x12\x11\n\tsessionId\x18\x04 \x01(\t\"\x1a\n\x18\x45xecuteDataFrameResponse\"*\n\x16\x44ropUserContextRequest\x12\x10\n\x08userUUID\x18\x01 \x01(\t\"\x19\n\x17\x44ropUserContextResponse*\"\n\rSortDirection\x12\x07\n\x03\x41SC\x10\x00\x12\x08\n\x04\x44\x45SC\x10\x01*$\n\rNullDirection\x12\t\n\x05\x46IRST\x10\x00\x12\x08\n\x04LAST\x10\x01\x32\xbb\x12\n\x12QueryEngineService\x12&\n\x05\x63lear\x12\r.ClearRequest\x1a\x0e.ClearResponse\x12\x38\n\x0b\x63\x61ncelQuery\x12\x13.CancelQueryRequest\x1a\x14.CancelQueryResponse\x12M\n\x12\x63learOrCancelQuery\x12\x1a.ClearOrCancelQueryRequest\x1a\x1b.ClearOrCancelQueryResponse\x12,\n\x07\x65xplain\x12\x0f.ExplainRequest\x1a\x10.ExplainResponse\x12)\n\x06\x64ryRun\x12\x0e.DryRunRequest\x1a\x0f.DryRunResponse\x12-\n\x08\x64ryRunV2\x12\x10.DryRunRequestV2\x1a\x0f.DryRunResponse\x12\x41\n\x0e\x65xplainAnalyze\x12\x16.ExplainAnalyzeRequest\x1a\x17.ExplainAnalyzeResponse\x12G\n\x10prepareStatement\x12\x18.PrepareStatementRequest\x1a\x19.PrepareStatementResponse\x12K\n\x12prepareStatementV2\x12\x1a.PrepareStatementV2Request\x1a\x19.PrepareStatementResponse\x12G\n\x10\x65xecuteStatement\x12\x18.ExecuteStatementRequest\x1a\x19.ExecuteStatementResponse\x12K\n\x12\x65xecuteStatementV2\x12\x1a.ExecuteStatementV2Request\x1a\x19.ExecuteStatementResponse\x12G\n\x10getNextResultRow\x12\x18.GetNextResultRowRequest\x1a\x19.GetNextResultRowResponse\x12M\n\x12getNextResultBatch\x12\x1a.GetNextResultBatchRequest\x1a\x1b.GetNextResultBatchResponse\x12J\n\x11getResultMetadata\x12\x19.GetResultMetadataRequest\x1a\x1a.GetResultMetadataResponse\x12;\n\x0c\x61uthenticate\x12\x14.AuthenticateRequest\x1a\x15.AuthenticateResponse\x12\x32\n\tgetTables\x12\x11.GetTablesRequest\x1a\x12.GetTablesResponse\x12\x36\n\x0bgetTablesV2\x12\x13.GetTablesV2Request\x1a\x12.GetTablesResponse\x12\x41\n\x0egetSchemaNames\x12\x16.GetSchemaNamesRequest\x1a\x17.GetSchemaNamesResponse\x12\x45\n\x10getSchemaNamesV2\x12\x18.GetSchemaNamesV2Request\x1a\x17.GetSchemaNamesResponse\x12\x35\n\ngetColumns\x12\x12.GetColumnsRequest\x1a\x13.GetColumnsResponse\x12\x39\n\x0cgetColumnsV2\x12\x14.GetColumnsV2Request\x1a\x13.GetColumnsResponse\x12\x38\n\x0bupdateUsers\x12\x13.UpdateUsersRequest\x1a\x14.UpdateUsersResponse\x12/\n\x08setProps\x12\x10.SetPropsRequest\x1a\x11.SetPropsResponse\x12)\n\x06status\x12\x0e.StatusRequest\x1a\x0f.StatusResponse\x12\x38\n\x0b\x61\x64\x64\x43\x61talogs\x12\x13.AddCatalogsRequest\x1a\x14.AddCatalogsResponse\x12I\n\x16getAddCatalogsResponse\x12\x16.GetAddCatalogsRequest\x1a\x17.GetAddCatalogsResponse\x12;\n\x0cgetCataloges\x12\x14.GetCatalogesRequest\x1a\x15.GetCatalogesResponse\x12\x45\n\x18getNextRemoteCachedChunk\x12\x13.RemoteChunkRequest\x1a\x14.RemoteChunkResponse\x12\x44\n\x0frefreshCatalogs\x12\x17.RefreshCatalogsRequest\x1a\x18.RefreshCatalogsResponse\x12\x44\n\x0f\x63reateDataFrame\x12\x17.CreateDataFrameRequest\x1a\x18.CreateDataFrameResponse\x12V\n\x15projectionOnDataFrame\x12\x1d.ProjectionOnDataFrameRequest\x1a\x1e.ProjectionOnDataFrameResponse\x12J\n\x11\x66ilterOnDataFrame\x12\x19.FilterOnDataFrameRequest\x1a\x1a.FilterOnDataFrameResponse\x12M\n\x12orderByOnDataFrame\x12\x1a.OrderByOnDataFrameRequest\x1a\x1b.OrderByOnDataFrameResponse\x12G\n\x10limitOnDataFrame\x12\x18.LimitOnDataFrameRequest\x1a\x19.LimitOnDataFrameResponse\x12G\n\x10\x65xecuteDataFrame\x12\x18.ExecuteDataFrameRequest\x1a\x19.ExecuteDataFrameResponse\x12\x44\n\x0f\x64ropUserContext\x12\x17.DropUserContextRequest\x1a\x18.DropUserContextResponseB\x02P\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -22,10 +22,10 @@ DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'P\001' - _globals['_SORTDIRECTION']._serialized_start=4329 - _globals['_SORTDIRECTION']._serialized_end=4363 - _globals['_NULLDIRECTION']._serialized_start=4365 - _globals['_NULLDIRECTION']._serialized_end=4401 + _globals['_SORTDIRECTION']._serialized_start=4659 + _globals['_SORTDIRECTION']._serialized_end=4693 + _globals['_NULLDIRECTION']._serialized_start=4695 + _globals['_NULLDIRECTION']._serialized_end=4731 _globals['_GFIELDINFO']._serialized_start=20 _globals['_GFIELDINFO']._serialized_end=70 _globals['_FAILEDSCHEMAELEMENT']._serialized_start=72 @@ -140,30 +140,34 @@ _globals['_CLEARORCANCELQUERYREQUEST']._serialized_end=3510 _globals['_CLEARORCANCELQUERYRESPONSE']._serialized_start=3512 _globals['_CLEARORCANCELQUERYRESPONSE']._serialized_end=3540 - _globals['_CREATEDATAFRAMEREQUEST']._serialized_start=3542 - _globals['_CREATEDATAFRAMEREQUEST']._serialized_end=3661 - _globals['_CREATEDATAFRAMERESPONSE']._serialized_start=3663 - _globals['_CREATEDATAFRAMERESPONSE']._serialized_end=3705 - _globals['_PROJECTIONONDATAFRAMEREQUEST']._serialized_start=3707 - _globals['_PROJECTIONONDATAFRAMEREQUEST']._serialized_end=3788 - _globals['_PROJECTIONONDATAFRAMERESPONSE']._serialized_start=3790 - _globals['_PROJECTIONONDATAFRAMERESPONSE']._serialized_end=3821 - _globals['_FILTERONDATAFRAMEREQUEST']._serialized_start=3823 - _globals['_FILTERONDATAFRAMEREQUEST']._serialized_end=3906 - _globals['_FILTERONDATAFRAMERESPONSE']._serialized_start=3908 - _globals['_FILTERONDATAFRAMERESPONSE']._serialized_end=3935 - _globals['_ORDERBYONDATAFRAMEREQUEST']._serialized_start=3938 - _globals['_ORDERBYONDATAFRAMEREQUEST']._serialized_end=4095 - _globals['_ORDERBYONDATAFRAMERESPONSE']._serialized_start=4097 - _globals['_ORDERBYONDATAFRAMERESPONSE']._serialized_end=4125 - _globals['_LIMITONDATAFRAMEREQUEST']._serialized_start=4127 - _globals['_LIMITONDATAFRAMEREQUEST']._serialized_end=4208 - _globals['_LIMITONDATAFRAMERESPONSE']._serialized_start=4210 - _globals['_LIMITONDATAFRAMERESPONSE']._serialized_end=4236 - _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_start=4238 - _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_end=4299 - _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_start=4301 - _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_end=4327 - _globals['_QUERYENGINESERVICE']._serialized_start=4404 - _globals['_QUERYENGINESERVICE']._serialized_end=6697 + _globals['_CREATEDATAFRAMEREQUEST']._serialized_start=3543 + _globals['_CREATEDATAFRAMEREQUEST']._serialized_end=3705 + _globals['_CREATEDATAFRAMERESPONSE']._serialized_start=3707 + _globals['_CREATEDATAFRAMERESPONSE']._serialized_end=3749 + _globals['_PROJECTIONONDATAFRAMEREQUEST']._serialized_start=3751 + _globals['_PROJECTIONONDATAFRAMEREQUEST']._serialized_end=3875 + _globals['_PROJECTIONONDATAFRAMERESPONSE']._serialized_start=3877 + _globals['_PROJECTIONONDATAFRAMERESPONSE']._serialized_end=3908 + _globals['_FILTERONDATAFRAMEREQUEST']._serialized_start=3910 + _globals['_FILTERONDATAFRAMEREQUEST']._serialized_end=4036 + _globals['_FILTERONDATAFRAMERESPONSE']._serialized_start=4038 + _globals['_FILTERONDATAFRAMERESPONSE']._serialized_end=4065 + _globals['_ORDERBYONDATAFRAMEREQUEST']._serialized_start=4068 + _globals['_ORDERBYONDATAFRAMEREQUEST']._serialized_end=4268 + _globals['_ORDERBYONDATAFRAMERESPONSE']._serialized_start=4270 + _globals['_ORDERBYONDATAFRAMERESPONSE']._serialized_end=4298 + _globals['_LIMITONDATAFRAMEREQUEST']._serialized_start=4300 + _globals['_LIMITONDATAFRAMEREQUEST']._serialized_end=4424 + _globals['_LIMITONDATAFRAMERESPONSE']._serialized_start=4426 + _globals['_LIMITONDATAFRAMERESPONSE']._serialized_end=4452 + _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_start=4454 + _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_end=4558 + _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_start=4560 + _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_end=4586 + _globals['_DROPUSERCONTEXTREQUEST']._serialized_start=4588 + _globals['_DROPUSERCONTEXTREQUEST']._serialized_end=4630 + _globals['_DROPUSERCONTEXTRESPONSE']._serialized_start=4632 + _globals['_DROPUSERCONTEXTRESPONSE']._serialized_end=4657 + _globals['_QUERYENGINESERVICE']._serialized_start=4734 + _globals['_QUERYENGINESERVICE']._serialized_end=7097 # @@protoc_insertion_point(module_scope) diff --git a/e6data_python_connector/server/e6x_engine_pb2.pyi b/e6data_python_connector/server/e6x_engine_pb2.pyi index bce9c98..b0aa85e 100644 --- a/e6data_python_connector/server/e6x_engine_pb2.pyi +++ b/e6data_python_connector/server/e6x_engine_pb2.pyi @@ -483,18 +483,22 @@ class ClearOrCancelQueryResponse(_message.Message): def __init__(self) -> None: ... class CreateDataFrameRequest(_message.Message): - __slots__ = ["parquetFilePath", "catalog", "schema", "sessionId", "engineIP"] + __slots__ = ["parquetFilePath", "catalog", "schema", "sessionId", "engineIP", "userUUID", "dataframeNumber"] PARQUETFILEPATH_FIELD_NUMBER: _ClassVar[int] CATALOG_FIELD_NUMBER: _ClassVar[int] SCHEMA_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] ENGINEIP_FIELD_NUMBER: _ClassVar[int] + USERUUID_FIELD_NUMBER: _ClassVar[int] + DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] parquetFilePath: str catalog: str schema: str sessionId: str engineIP: str - def __init__(self, parquetFilePath: _Optional[str] = ..., catalog: _Optional[str] = ..., schema: _Optional[str] = ..., sessionId: _Optional[str] = ..., engineIP: _Optional[str] = ...) -> None: ... + userUUID: str + dataframeNumber: int + def __init__(self, parquetFilePath: _Optional[str] = ..., catalog: _Optional[str] = ..., schema: _Optional[str] = ..., sessionId: _Optional[str] = ..., engineIP: _Optional[str] = ..., userUUID: _Optional[str] = ..., dataframeNumber: _Optional[int] = ...) -> None: ... class CreateDataFrameResponse(_message.Message): __slots__ = ["queryId"] @@ -503,73 +507,103 @@ class CreateDataFrameResponse(_message.Message): def __init__(self, queryId: _Optional[str] = ...) -> None: ... class ProjectionOnDataFrameRequest(_message.Message): - __slots__ = ["queryId", "sessionId", "field"] + __slots__ = ["userUUID", "queryId", "dataframeNumber", "sessionId", "field"] + USERUUID_FIELD_NUMBER: _ClassVar[int] QUERYID_FIELD_NUMBER: _ClassVar[int] + DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] FIELD_FIELD_NUMBER: _ClassVar[int] + userUUID: str queryId: str + dataframeNumber: int sessionId: str field: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, queryId: _Optional[str] = ..., sessionId: _Optional[str] = ..., field: _Optional[_Iterable[str]] = ...) -> None: ... + def __init__(self, userUUID: _Optional[str] = ..., queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., field: _Optional[_Iterable[str]] = ...) -> None: ... class ProjectionOnDataFrameResponse(_message.Message): __slots__ = [] def __init__(self) -> None: ... class FilterOnDataFrameRequest(_message.Message): - __slots__ = ["queryId", "sessionId", "whereClause"] + __slots__ = ["userUUID", "queryId", "dataframeNumber", "sessionId", "whereClause"] + USERUUID_FIELD_NUMBER: _ClassVar[int] QUERYID_FIELD_NUMBER: _ClassVar[int] + DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] WHERECLAUSE_FIELD_NUMBER: _ClassVar[int] + userUUID: str queryId: str + dataframeNumber: int sessionId: str whereClause: str - def __init__(self, queryId: _Optional[str] = ..., sessionId: _Optional[str] = ..., whereClause: _Optional[str] = ...) -> None: ... + def __init__(self, userUUID: _Optional[str] = ..., queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., whereClause: _Optional[str] = ...) -> None: ... class FilterOnDataFrameResponse(_message.Message): __slots__ = [] def __init__(self) -> None: ... class OrderByOnDataFrameRequest(_message.Message): - __slots__ = ["queryId", "sessionId", "field", "sortDirection", "nullsDirection"] + __slots__ = ["userUUID", "queryId", "dataframeNumber", "sessionId", "field", "sortDirection", "nullsDirection"] + USERUUID_FIELD_NUMBER: _ClassVar[int] QUERYID_FIELD_NUMBER: _ClassVar[int] + DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] FIELD_FIELD_NUMBER: _ClassVar[int] SORTDIRECTION_FIELD_NUMBER: _ClassVar[int] NULLSDIRECTION_FIELD_NUMBER: _ClassVar[int] + userUUID: str queryId: str + dataframeNumber: int sessionId: str field: _containers.RepeatedScalarFieldContainer[str] sortDirection: _containers.RepeatedScalarFieldContainer[SortDirection] nullsDirection: _containers.RepeatedScalarFieldContainer[NullDirection] - def __init__(self, queryId: _Optional[str] = ..., sessionId: _Optional[str] = ..., field: _Optional[_Iterable[str]] = ..., sortDirection: _Optional[_Iterable[_Union[SortDirection, str]]] = ..., nullsDirection: _Optional[_Iterable[_Union[NullDirection, str]]] = ...) -> None: ... + def __init__(self, userUUID: _Optional[str] = ..., queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., field: _Optional[_Iterable[str]] = ..., sortDirection: _Optional[_Iterable[_Union[SortDirection, str]]] = ..., nullsDirection: _Optional[_Iterable[_Union[NullDirection, str]]] = ...) -> None: ... class OrderByOnDataFrameResponse(_message.Message): __slots__ = [] def __init__(self) -> None: ... class LimitOnDataFrameRequest(_message.Message): - __slots__ = ["queryId", "sessionId", "fetchLimit"] + __slots__ = ["userUUID", "queryId", "dataframeNumber", "sessionId", "fetchLimit"] + USERUUID_FIELD_NUMBER: _ClassVar[int] QUERYID_FIELD_NUMBER: _ClassVar[int] + DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] FETCHLIMIT_FIELD_NUMBER: _ClassVar[int] + userUUID: str queryId: str + dataframeNumber: int sessionId: str fetchLimit: int - def __init__(self, queryId: _Optional[str] = ..., sessionId: _Optional[str] = ..., fetchLimit: _Optional[int] = ...) -> None: ... + def __init__(self, userUUID: _Optional[str] = ..., queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., fetchLimit: _Optional[int] = ...) -> None: ... class LimitOnDataFrameResponse(_message.Message): __slots__ = [] def __init__(self) -> None: ... class ExecuteDataFrameRequest(_message.Message): - __slots__ = ["queryId", "sessionId"] + __slots__ = ["userUUID", "queryId", "dataframeNumber", "sessionId"] + USERUUID_FIELD_NUMBER: _ClassVar[int] QUERYID_FIELD_NUMBER: _ClassVar[int] + DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] + userUUID: str queryId: str + dataframeNumber: int sessionId: str - def __init__(self, queryId: _Optional[str] = ..., sessionId: _Optional[str] = ...) -> None: ... + def __init__(self, userUUID: _Optional[str] = ..., queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ...) -> None: ... class ExecuteDataFrameResponse(_message.Message): __slots__ = [] def __init__(self) -> None: ... + +class DropUserContextRequest(_message.Message): + __slots__ = ["userUUID"] + USERUUID_FIELD_NUMBER: _ClassVar[int] + userUUID: str + def __init__(self, userUUID: _Optional[str] = ...) -> None: ... + +class DropUserContextResponse(_message.Message): + __slots__ = [] + def __init__(self) -> None: ... diff --git a/e6data_python_connector/server/e6x_engine_pb2_grpc.py b/e6data_python_connector/server/e6x_engine_pb2_grpc.py index e9f1636..4deb9e8 100644 --- a/e6data_python_connector/server/e6x_engine_pb2_grpc.py +++ b/e6data_python_connector/server/e6x_engine_pb2_grpc.py @@ -189,6 +189,11 @@ def __init__(self, channel): request_serializer=e6x__engine__pb2.ExecuteDataFrameRequest.SerializeToString, response_deserializer=e6x__engine__pb2.ExecuteDataFrameResponse.FromString, ) + self.dropUserContext = channel.unary_unary( + '/QueryEngineService/dropUserContext', + request_serializer=e6x__engine__pb2.DropUserContextRequest.SerializeToString, + response_deserializer=e6x__engine__pb2.DropUserContextResponse.FromString, + ) class QueryEngineServiceServicer(object): @@ -407,6 +412,12 @@ def executeDataFrame(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def dropUserContext(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_QueryEngineServiceServicer_to_server(servicer, server): rpc_method_handlers = { @@ -585,6 +596,11 @@ def add_QueryEngineServiceServicer_to_server(servicer, server): request_deserializer=e6x__engine__pb2.ExecuteDataFrameRequest.FromString, response_serializer=e6x__engine__pb2.ExecuteDataFrameResponse.SerializeToString, ), + 'dropUserContext': grpc.unary_unary_rpc_method_handler( + servicer.dropUserContext, + request_deserializer=e6x__engine__pb2.DropUserContextRequest.FromString, + response_serializer=e6x__engine__pb2.DropUserContextResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'QueryEngineService', rpc_method_handlers) @@ -1189,3 +1205,20 @@ def executeDataFrame(request, e6x__engine__pb2.ExecuteDataFrameResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def dropUserContext(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/QueryEngineService/dropUserContext', + e6x__engine__pb2.DropUserContextRequest.SerializeToString, + e6x__engine__pb2.DropUserContextResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/e6x_engine.proto b/e6x_engine.proto index 42b7f6b..81d6a99 100644 --- a/e6x_engine.proto +++ b/e6x_engine.proto @@ -301,76 +301,96 @@ message ClearOrCancelQueryResponse{ message CreateDataFrameRequest { - string parquetFilePath = 1; - string catalog = 2; - string schema = 3; - string sessionId = 4; - string engineIP = 5; + string parquetFilePath = 1; + string catalog = 2; + string schema = 3; + string sessionId = 4; + string engineIP = 5; + string userUUID = 6; + int32 dataframeNumber = 7; } message CreateDataFrameResponse { - string queryId = 1; + string queryId = 1; } message ProjectionOnDataFrameRequest { - string queryId = 1; - string sessionId = 2; - repeated string field = 3; + string userUUID = 1; + string queryId = 2; + int32 dataframeNumber = 3; + string sessionId = 4; + repeated string field = 5; } message ProjectionOnDataFrameResponse {} + message FilterOnDataFrameRequest { - string queryId = 1; - string sessionId = 2; - string whereClause = 3; + string userUUID = 1; + string queryId = 2; + int32 dataframeNumber = 3; + string sessionId = 4; + string whereClause = 5; } message FilterOnDataFrameResponse {} enum SortDirection { - ASC = 0; - DESC = 1; + ASC = 0; + DESC = 1; } enum NullDirection { - FIRST = 0; - LAST = 1; + FIRST = 0; + LAST = 1; } message OrderByOnDataFrameRequest { - string queryId = 1; - string sessionId = 2; - repeated string field = 3; - repeated SortDirection sortDirection = 4; - repeated NullDirection nullsDirection = 5; + string userUUID = 1; + string queryId = 2; + int32 dataframeNumber = 3; + string sessionId = 4; + repeated string field = 5; + repeated SortDirection sortDirection = 6; + repeated NullDirection nullsDirection = 7; } message OrderByOnDataFrameResponse {} message LimitOnDataFrameRequest { - string queryId = 1; - string sessionId = 2; - int32 fetchLimit = 3; + string userUUID = 1; + string queryId = 2; + int32 dataframeNumber = 3; + string sessionId = 4; + int32 fetchLimit = 5; } message LimitOnDataFrameResponse {} message ExecuteDataFrameRequest { - string queryId = 1; - string sessionId = 2; + string userUUID = 1; + string queryId = 2; + int32 dataframeNumber = 3; + string sessionId = 4; } message ExecuteDataFrameResponse {} +message DropUserContextRequest +{ + string userUUID = 1; +} + +message DropUserContextResponse {} + service QueryEngineService { rpc clear(ClearRequest) returns (ClearResponse); @@ -443,4 +463,6 @@ service QueryEngineService { rpc limitOnDataFrame(LimitOnDataFrameRequest) returns (LimitOnDataFrameResponse); rpc executeDataFrame(ExecuteDataFrameRequest) returns (ExecuteDataFrameResponse); + + rpc dropUserContext(DropUserContextRequest) returns (DropUserContextResponse); } \ No newline at end of file From ed8024c105274af8bcf1a4961fd495928442b30a Mon Sep 17 00:00:00 2001 From: Yash Date: Wed, 14 May 2025 18:12:11 +0530 Subject: [PATCH 7/9] bug fix --- dataframe_test.py | 15 +++++++-------- e6data_python_connector/e6data_grpc.py | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/dataframe_test.py b/dataframe_test.py index bb277e2..44ee961 100644 --- a/dataframe_test.py +++ b/dataframe_test.py @@ -30,11 +30,10 @@ def tearDown(self) -> None: self.disconnect() def test_table_creation(self): - self._dataframe = self.e6x_connection.load_parquet('') - self._dataframe.select('col1','col2') - - rows = self._dataframe.show() - - for row in rows: - print(row) - + try: + self._dataframe = self.e6x_connection.load_parquet('') + rows = self._dataframe.show() + for row in rows: + print(row) + except BaseException as e: + print(f"Exception :{e}") diff --git a/e6data_python_connector/e6data_grpc.py b/e6data_python_connector/e6data_grpc.py index 606d1ad..fb02221 100644 --- a/e6data_python_connector/e6data_grpc.py +++ b/e6data_python_connector/e6data_grpc.py @@ -1275,7 +1275,7 @@ def __exit__(self, exc_type, exc_val, exc_tb): self.terminate() def update_dataframe_map(self, dataframe : "DataFrame"): - self._dataframe_map.update({self._dataframe_count, dataframe}) + self._dataframe_map.update({self._dataframe_count : dataframe}) self._dataframe_count = self._dataframe_count + 1 @property From 6dbb0fa73c50fdb5c39fb4353daf616652e8f0e7 Mon Sep 17 00:00:00 2001 From: Yash Date: Mon, 19 May 2025 21:05:49 +0530 Subject: [PATCH 8/9] dataframe session changes & DF API changes --- dataframe_test.py | 2 +- e6data_python_connector/e6data_grpc.py | 165 ++-- .../server/e6x_engine_pb2.py | 96 ++- .../server/e6x_engine_pb2.pyi | 259 ++++--- .../server/e6x_engine_pb2_grpc.py | 718 ++++++++++++++---- e6x_engine.proto | 90 ++- 6 files changed, 914 insertions(+), 416 deletions(-) diff --git a/dataframe_test.py b/dataframe_test.py index 44ee961..1d0973d 100644 --- a/dataframe_test.py +++ b/dataframe_test.py @@ -15,7 +15,7 @@ def setUp(self) -> None: self.e6x_connection = Connection( host=self._host, port=9001, - username='limbad@e6x.io', + username='dummy@gmail.com', password='Dummy@123', database=self._database, catalog=self._catalog diff --git a/e6data_python_connector/e6data_grpc.py b/e6data_python_connector/e6data_grpc.py index fb02221..0e478dc 100644 --- a/e6data_python_connector/e6data_grpc.py +++ b/e6data_python_connector/e6data_grpc.py @@ -16,7 +16,6 @@ from io import BytesIO from ssl import CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED from typing import overload -import uuid import grpc from grpc._channel import _InactiveRpcError @@ -26,6 +25,7 @@ from e6data_python_connector.constants import * from e6data_python_connector.datainputstream import get_query_columns_info, read_rows_from_chunk from e6data_python_connector.server import e6x_engine_pb2_grpc, e6x_engine_pb2 +from e6data_python_connector.server.e6x_engine_pb2 import AggregateFunction from e6data_python_connector.typeId import * apilevel = '2.0' @@ -371,11 +371,11 @@ def close(self): This method ensures that the gRPC channel is properly closed and the session ID is reset to None. """ + self._dataframe_session.terminate() if self._channel is not None: self._channel.close() self._channel = None self._session_id = None - self._dataframe_session.terminate() def check_connection(self): """ @@ -544,8 +544,22 @@ def load_parquet(self, parquet_path) -> "DataFrame": dataframe = DataFrame( self, file_path=parquet_path, - user_uuid=self._dataframe_session.get_user_uuid, - dataframe_number=self._dataframe_session.get_dataframe_number) + dataframe_number=self._dataframe_session.get_dataframe_number, + table_name=None + ) + + self._dataframe_session.update_dataframe_map(dataframe=dataframe) + return dataframe + + def load_table(self, table_name, database = None, catalog = None) -> "DataFrame": + dataframe = DataFrame( + self, + file_path=None, + dataframe_number=self._dataframe_session.get_dataframe_number, + table_name=table_name, + database=database, + catalog=catalog + ) self._dataframe_session.update_dataframe_map(dataframe=dataframe) return dataframe @@ -1055,10 +1069,12 @@ def explain_analyse(self): class DataFrame: - def __init__(self, connection: Connection, file_path, user_uuid, dataframe_number): - self._user_uuid = user_uuid + def __init__(self, connection: Connection, file_path, dataframe_number, table_name, database = None, catalog = None): self._dataframe_number = dataframe_number self._connection = connection + self._catalog = self._connection.catalog_name if catalog is None else catalog + self._database = self._connection.database if database is None else database + self._table_name = table_name self._file_path = file_path self._engine_ip = connection.host self._sessionId = connection.get_session_id @@ -1066,19 +1082,20 @@ def __init__(self, connection: Connection, file_path, user_uuid, dataframe_numbe self._query_id = None self._data = None self._batch = None - self._create_dataframe() + self._create_dataframe(self._file_path is not None) - def _create_dataframe(self): + def _create_dataframe(self, create_dataframe_from_parquet : bool): client = self._connection.client create_dataframe_request = e6x_engine_pb2.CreateDataFrameRequest( parquetFilePath=self._file_path, - catalog=self._connection.catalog_name, - schema=self._connection.database, + catalog=self._catalog, + schema=self._database, + table=self._table_name, sessionId=self._sessionId, engineIP=self._engine_ip, - userUUID=self._user_uuid, - dataframeNumber=self._dataframe_number + dataframeNumber=self._dataframe_number, + createFromParquet=create_dataframe_from_parquet ) create_dataframe_response = client.createDataFrame( @@ -1086,122 +1103,99 @@ def _create_dataframe(self): ) self._query_id = create_dataframe_response.queryId - def select(self, *fields) -> "DataFrame": + def select(self, *fields : str) -> "DataFrame": projection_fields = [] for field in fields: projection_fields.append(field) client = self._connection.client projection_on_dataframe_request = e6x_engine_pb2.ProjectionOnDataFrameRequest( - userUUID=self._user_uuid, queryId=self._query_id, dataframeNumber=self._dataframe_number, sessionId=self._sessionId, field=projection_fields ) - projection_on_dataframe_response = client.projectionOnDataFrame( - projection_on_dataframe_request - ) + client.projectionOnDataFrame(projection_on_dataframe_request) return self - def where(self, where_clause : str) -> "DataFrame": + def aggregate(self, agg_function : dict[str, str], group_by : list[str] = None) -> "DataFrame": + def get_agg_enum(function_name : str) -> AggregateFunction | None: + match function_name.lower(): + case 'sum': + return e6x_engine_pb2.AggregateFunction.SUM + case 'count': + return e6x_engine_pb2.AggregateFunction.COUNT + case 'count_star': + return e6x_engine_pb2.AggregateFunction.COUNT_STAR + case 'count_distinct': + return e6x_engine_pb2.AggregateFunction.COUNT_DISTINCT + case _: + return None + + agg_function_map = {} + + for column in agg_function.keys(): + fun = get_agg_enum(agg_function.get(column)) + if fun is not None: + agg_function_map.update({column : fun}) + client = self._connection.client - filter_on_dataframe_request = e6x_engine_pb2.FilterOnDataFrameRequest( - userUUID=self._user_uuid, + aggregate_on_dataframe_request = e6x_engine_pb2.AggregateOnDataFrameRequest( queryId=self._query_id, dataframeNumber=self._dataframe_number, sessionId=self._sessionId, - whereClause=where_clause + aggregateFunctionMap=agg_function_map, + groupBy=group_by ) - filter_on_dataframe_response = client.filterOnDataFrame( - filter_on_dataframe_request - ) + client.aggregateOnDataFrame(aggregate_on_dataframe_request) return self - @overload - def order_by(self, field_list : list, sort_direction_list = None, null_direction_list = None) -> "DataFrame": - orderby_fields = [] - sort_direction_request = [] - null_direction_request = [] - for field in field_list: - orderby_fields.append(field) - - for direction in sort_direction_list: - direction = str(direction).upper() - if direction == 'ASC': - sort_direction_request.append(e6x_engine_pb2.SortDirection.ASC) - elif direction == 'DESC': - sort_direction_request.append(e6x_engine_pb2.SortDirection.DESC) - else: - sort_direction_request.append(None) - - for direction in null_direction_list: - direction = str(direction).upper() - if direction == 'NULLS_FIRST': - null_direction_request.append(e6x_engine_pb2.NullDirection.FIRST) - elif direction == 'NULLS_LAST': - null_direction_request.append(e6x_engine_pb2.NullDirection.LAST) - else: - null_direction_request.append(None) - - client = self.connection.client - - orderby_on_dataframe_request = e6x_engine_pb2.OrderByOnDataFrameRequest( - userUUID=self._user_uuid, + def where(self, where_clause : str) -> "DataFrame": + client = self._connection.client + filter_on_dataframe_request = e6x_engine_pb2.FilterOnDataFrameRequest( queryId=self._query_id, dataframeNumber=self._dataframe_number, sessionId=self._sessionId, - field=orderby_fields, - sortDirection=sort_direction_request, - nullsDirection=null_direction_request + whereClause=where_clause ) - orderby_on_dataframe_response = client.orderByOnDataFrame( - orderby_on_dataframe_request - ) + client.filterOnDataFrame(filter_on_dataframe_request) + return self - def order_by(self, *field_list) -> "DataFrame": - orderby_fields = [] - sort_direction_request = [] - null_direction_request = [] - for field in field_list: - orderby_fields.append(field) + def order_by(self, *field_list : str) -> "DataFrame": + order_by_map = dict() + + # default sorting in ASCENDING order + for column in field_list: + order_by_map.update({ column : e6x_engine_pb2.SortDirection.ASC}) client = self._connection.client orderby_on_dataframe_request = e6x_engine_pb2.OrderByOnDataFrameRequest( - userUUID=self._user_uuid, queryId=self._query_id, dataframeNumber=self._dataframe_number, sessionId=self._sessionId, - field=orderby_fields, - sortDirection=sort_direction_request, - nullsDirection=null_direction_request + orderByFieldMap=order_by_map ) - orderby_on_dataframe_response = client.orderByOnDataFrame( - orderby_on_dataframe_request - ) + client.orderByOnDataFrame(orderby_on_dataframe_request) return self def limit(self, fetch_limit : int) -> "DataFrame": client = self._connection.client limit_on_dataframe_request = e6x_engine_pb2.LimitOnDataFrameRequest( - userUUID=self._user_uuid, queryId=self._query_id, dataframeNumber=self._dataframe_number, sessionId=self._sessionId, fetchLimit=fetch_limit ) - limit_on_dataframe_response = client.limitOnDataFrame( - limit_on_dataframe_request - ) + client.limitOnDataFrame(limit_on_dataframe_request) return self @@ -1212,14 +1206,11 @@ def show(self): def execute(self): client = self._connection.client execute_dataframe_request = e6x_engine_pb2.ExecuteDataFrameRequest( - userUUID=self._user_uuid, queryId=self._query_id, dataframeNumber=self._dataframe_number, sessionId=self._sessionId ) - execute_dataframe_response = client.executeDataFrame( - execute_dataframe_request - ) + client.executeDataFrame(execute_dataframe_request) def _update_meta_data(self): result_meta_data_request = e6x_engine_pb2.GetResultMetadataRequest( @@ -1265,7 +1256,6 @@ def fetchall(self): class DataFrameSession: def __init__(self, connection: Connection): - self._user_uuid = str(uuid.uuid4()) self._connection = connection self._dataframe_count = 0 self._dataframe_map = dict() @@ -1278,10 +1268,6 @@ def update_dataframe_map(self, dataframe : "DataFrame"): self._dataframe_map.update({self._dataframe_count : dataframe}) self._dataframe_count = self._dataframe_count + 1 - @property - def get_user_uuid(self): - return self._user_uuid - @property def get_dataframe_number(self) -> int: return self._dataframe_count @@ -1291,14 +1277,13 @@ def is_terminated(self) -> bool: return self._is_terminated def terminate(self): - if not self._is_terminated: drop_user_context_request = e6x_engine_pb2.DropUserContextRequest( - userUUID=self.get_user_uuid + sessionId=self._connection.get_session_id ) - drop_user_context_response = self._connection.client.dropUserContext(drop_user_context_request) - self._is_terminated = True + self._connection.client.dropUserContext(drop_user_context_request) + self._is_terminated = True diff --git a/e6data_python_connector/server/e6x_engine_pb2.py b/e6data_python_connector/server/e6x_engine_pb2.py index a429aaa..ea37609 100644 --- a/e6data_python_connector/server/e6x_engine_pb2.py +++ b/e6data_python_connector/server/e6x_engine_pb2.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: e6x_engine.proto +# Protobuf Python Version: 5.26.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -13,19 +14,24 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10\x65\x36x_engine.proto\"2\n\nGFieldInfo\x12\x11\n\tfieldName\x18\x01 \x01(\t\x12\x11\n\tfieldType\x18\x02 \x01(\t\"A\n\x13\x46\x61iledSchemaElement\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0e\n\x06reason\x18\x03 \x01(\t\"P\n\x16GetAddCatalogsResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\x12&\n\x08\x66\x61ilures\x18\x02 \x03(\x0b\x32\x14.FailedSchemaElement\"2\n\x0f\x43\x61talogResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tisDefault\x18\x02 \x01(\x08\"<\n\x0eParameterValue\x12\r\n\x05index\x18\x01 \x01(\x11\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\"D\n\x0c\x43learRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x0f\n\rClearResponse\"J\n\x12\x43\x61ncelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x15\n\x13\x43\x61ncelQueryResponse\"F\n\x0e\x45xplainRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\"\n\x0f\x45xplainResponse\x12\x0f\n\x07\x65xplain\x18\x01 \x01(\t\"Y\n\rDryRunRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\"%\n\x0e\x44ryRunResponse\x12\x13\n\x0b\x64ryrunValue\x18\x01 \x01(\t\"l\n\x0f\x44ryRunRequestV2\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x05 \x01(\t\"M\n\x15\x45xplainAnalyzeRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"m\n\x16\x45xplainAnalyzeResponse\x12\x16\n\x0e\x65xplainAnalyze\x18\x01 \x01(\t\x12\x10\n\x08isCached\x18\x02 \x01(\x08\x12\x13\n\x0bparsingTime\x18\x03 \x01(\x12\x12\x14\n\x0cqueueingTime\x18\x04 \x01(\x12\"b\n\x17PrepareStatementRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x13\n\x0bqueryString\x18\x03 \x01(\t\x12\x0f\n\x07quoting\x18\x04 \x01(\t\"u\n\x19PrepareStatementV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07quoting\x18\x05 \x01(\t\"=\n\x18PrepareStatementResponse\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\"@\n\x0eUserAccessInfo\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x10\n\x08userName\x18\x02 \x01(\t\x12\x0e\n\x06tokens\x18\x03 \x03(\t\"g\n\x17\x45xecuteStatementRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\"\x8a\x01\n\x19\x45xecuteStatementV2Request\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\x12\x1f\n\x06params\x18\x05 \x03(\x0b\x32\x0f.ParameterValue\"\x1a\n\x18\x45xecuteStatementResponse\"O\n\x17GetNextResultRowRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"-\n\x18GetNextResultRowResponse\x12\x11\n\tresultRow\x18\x02 \x01(\x0c\"w\n\x19GetNextResultBatchRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\tasRowData\x18\x04 \x01(\x08H\x00\x88\x01\x01\x42\x0c\n\n_asRowData\"1\n\x1aGetNextResultBatchResponse\x12\x13\n\x0bresultBatch\x18\x02 \x01(\x0c\"P\n\x18GetResultMetadataRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"3\n\x19GetResultMetadataResponse\x12\x16\n\x0eresultMetaData\x18\x01 \x01(\x0c\"5\n\x13\x41uthenticateRequest\x12\x0c\n\x04user\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\")\n\x14\x41uthenticateResponse\x12\x11\n\tsessionId\x18\x01 \x01(\t\"5\n\x10GetTablesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\"H\n\x12GetTablesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\"#\n\x11GetTablesResponse\x12\x0e\n\x06tables\x18\x01 \x03(\t\"*\n\x15GetSchemaNamesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"=\n\x17GetSchemaNamesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\")\n\x16GetSchemaNamesResponse\x12\x0f\n\x07schemas\x18\x01 \x03(\t\"E\n\x11GetColumnsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\"X\n\x13GetColumnsV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x04 \x01(\t\"4\n\x12GetColumnsResponse\x12\x1e\n\tfieldInfo\x18\x01 \x03(\x0b\x32\x0b.GFieldInfo\"E\n\rStatusRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"2\n\x0eStatusResponse\x12\x0e\n\x06status\x18\x02 \x01(\x08\x12\x10\n\x08rowCount\x18\x03 \x01(\x12\"5\n\x12\x41\x64\x64\x43\x61talogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0c\n\x04json\x18\x02 \x01(\t\"#\n\x12UpdateUsersRequest\x12\r\n\x05users\x18\x01 \x01(\x0c\"\x15\n\x13UpdateUsersResponse\"3\n\x0fSetPropsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\r\n\x05props\x18\x02 \x01(\t\"\x12\n\x10SetPropsResponse\"*\n\x15GetAddCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x15\n\x13\x41\x64\x64\x43\x61talogsResponse\"\x15\n\x13GetCatalogesRequest\"B\n\x14GetCatalogesResponse\x12*\n\x10\x63\x61talogResponses\x18\x01 \x03(\x0b\x32\x10.CatalogResponse\"+\n\x16RefreshCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x19\n\x17RefreshCatalogsResponse\"X\n\x12RemoteChunkRequest\x12\x17\n\x0foriginalQueryId\x18\x01 \x01(\t\x12\x15\n\rremoteQueryId\x18\x02 \x01(\t\x12\x12\n\nsQueryHash\x18\x03 \x01(\t\"3\n\x13RemoteChunkResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\r\n\x05\x63hunk\x18\x02 \x01(\x0c\"Q\n\x19\x43learOrCancelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x1c\n\x1a\x43learOrCancelQueryResponse\"\xa2\x01\n\x16\x43reateDataFrameRequest\x12\x17\n\x0fparquetFilePath\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x11\n\tsessionId\x18\x04 \x01(\t\x12\x10\n\x08\x65ngineIP\x18\x05 \x01(\t\x12\x10\n\x08userUUID\x18\x06 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x07 \x01(\x05\"*\n\x17\x43reateDataFrameResponse\x12\x0f\n\x07queryId\x18\x01 \x01(\t\"|\n\x1cProjectionOnDataFrameRequest\x12\x10\n\x08userUUID\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x03 \x01(\x05\x12\x11\n\tsessionId\x18\x04 \x01(\t\x12\r\n\x05\x66ield\x18\x05 \x03(\t\"\x1f\n\x1dProjectionOnDataFrameResponse\"~\n\x18\x46ilterOnDataFrameRequest\x12\x10\n\x08userUUID\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x03 \x01(\x05\x12\x11\n\tsessionId\x18\x04 \x01(\t\x12\x13\n\x0bwhereClause\x18\x05 \x01(\t\"\x1b\n\x19\x46ilterOnDataFrameResponse\"\xc8\x01\n\x19OrderByOnDataFrameRequest\x12\x10\n\x08userUUID\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x03 \x01(\x05\x12\x11\n\tsessionId\x18\x04 \x01(\t\x12\r\n\x05\x66ield\x18\x05 \x03(\t\x12%\n\rsortDirection\x18\x06 \x03(\x0e\x32\x0e.SortDirection\x12&\n\x0enullsDirection\x18\x07 \x03(\x0e\x32\x0e.NullDirection\"\x1c\n\x1aOrderByOnDataFrameResponse\"|\n\x17LimitOnDataFrameRequest\x12\x10\n\x08userUUID\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x03 \x01(\x05\x12\x11\n\tsessionId\x18\x04 \x01(\t\x12\x12\n\nfetchLimit\x18\x05 \x01(\x05\"\x1a\n\x18LimitOnDataFrameResponse\"h\n\x17\x45xecuteDataFrameRequest\x12\x10\n\x08userUUID\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x03 \x01(\x05\x12\x11\n\tsessionId\x18\x04 \x01(\t\"\x1a\n\x18\x45xecuteDataFrameResponse\"*\n\x16\x44ropUserContextRequest\x12\x10\n\x08userUUID\x18\x01 \x01(\t\"\x19\n\x17\x44ropUserContextResponse*\"\n\rSortDirection\x12\x07\n\x03\x41SC\x10\x00\x12\x08\n\x04\x44\x45SC\x10\x01*$\n\rNullDirection\x12\t\n\x05\x46IRST\x10\x00\x12\x08\n\x04LAST\x10\x01\x32\xbb\x12\n\x12QueryEngineService\x12&\n\x05\x63lear\x12\r.ClearRequest\x1a\x0e.ClearResponse\x12\x38\n\x0b\x63\x61ncelQuery\x12\x13.CancelQueryRequest\x1a\x14.CancelQueryResponse\x12M\n\x12\x63learOrCancelQuery\x12\x1a.ClearOrCancelQueryRequest\x1a\x1b.ClearOrCancelQueryResponse\x12,\n\x07\x65xplain\x12\x0f.ExplainRequest\x1a\x10.ExplainResponse\x12)\n\x06\x64ryRun\x12\x0e.DryRunRequest\x1a\x0f.DryRunResponse\x12-\n\x08\x64ryRunV2\x12\x10.DryRunRequestV2\x1a\x0f.DryRunResponse\x12\x41\n\x0e\x65xplainAnalyze\x12\x16.ExplainAnalyzeRequest\x1a\x17.ExplainAnalyzeResponse\x12G\n\x10prepareStatement\x12\x18.PrepareStatementRequest\x1a\x19.PrepareStatementResponse\x12K\n\x12prepareStatementV2\x12\x1a.PrepareStatementV2Request\x1a\x19.PrepareStatementResponse\x12G\n\x10\x65xecuteStatement\x12\x18.ExecuteStatementRequest\x1a\x19.ExecuteStatementResponse\x12K\n\x12\x65xecuteStatementV2\x12\x1a.ExecuteStatementV2Request\x1a\x19.ExecuteStatementResponse\x12G\n\x10getNextResultRow\x12\x18.GetNextResultRowRequest\x1a\x19.GetNextResultRowResponse\x12M\n\x12getNextResultBatch\x12\x1a.GetNextResultBatchRequest\x1a\x1b.GetNextResultBatchResponse\x12J\n\x11getResultMetadata\x12\x19.GetResultMetadataRequest\x1a\x1a.GetResultMetadataResponse\x12;\n\x0c\x61uthenticate\x12\x14.AuthenticateRequest\x1a\x15.AuthenticateResponse\x12\x32\n\tgetTables\x12\x11.GetTablesRequest\x1a\x12.GetTablesResponse\x12\x36\n\x0bgetTablesV2\x12\x13.GetTablesV2Request\x1a\x12.GetTablesResponse\x12\x41\n\x0egetSchemaNames\x12\x16.GetSchemaNamesRequest\x1a\x17.GetSchemaNamesResponse\x12\x45\n\x10getSchemaNamesV2\x12\x18.GetSchemaNamesV2Request\x1a\x17.GetSchemaNamesResponse\x12\x35\n\ngetColumns\x12\x12.GetColumnsRequest\x1a\x13.GetColumnsResponse\x12\x39\n\x0cgetColumnsV2\x12\x14.GetColumnsV2Request\x1a\x13.GetColumnsResponse\x12\x38\n\x0bupdateUsers\x12\x13.UpdateUsersRequest\x1a\x14.UpdateUsersResponse\x12/\n\x08setProps\x12\x10.SetPropsRequest\x1a\x11.SetPropsResponse\x12)\n\x06status\x12\x0e.StatusRequest\x1a\x0f.StatusResponse\x12\x38\n\x0b\x61\x64\x64\x43\x61talogs\x12\x13.AddCatalogsRequest\x1a\x14.AddCatalogsResponse\x12I\n\x16getAddCatalogsResponse\x12\x16.GetAddCatalogsRequest\x1a\x17.GetAddCatalogsResponse\x12;\n\x0cgetCataloges\x12\x14.GetCatalogesRequest\x1a\x15.GetCatalogesResponse\x12\x45\n\x18getNextRemoteCachedChunk\x12\x13.RemoteChunkRequest\x1a\x14.RemoteChunkResponse\x12\x44\n\x0frefreshCatalogs\x12\x17.RefreshCatalogsRequest\x1a\x18.RefreshCatalogsResponse\x12\x44\n\x0f\x63reateDataFrame\x12\x17.CreateDataFrameRequest\x1a\x18.CreateDataFrameResponse\x12V\n\x15projectionOnDataFrame\x12\x1d.ProjectionOnDataFrameRequest\x1a\x1e.ProjectionOnDataFrameResponse\x12J\n\x11\x66ilterOnDataFrame\x12\x19.FilterOnDataFrameRequest\x1a\x1a.FilterOnDataFrameResponse\x12M\n\x12orderByOnDataFrame\x12\x1a.OrderByOnDataFrameRequest\x1a\x1b.OrderByOnDataFrameResponse\x12G\n\x10limitOnDataFrame\x12\x18.LimitOnDataFrameRequest\x1a\x19.LimitOnDataFrameResponse\x12G\n\x10\x65xecuteDataFrame\x12\x18.ExecuteDataFrameRequest\x1a\x19.ExecuteDataFrameResponse\x12\x44\n\x0f\x64ropUserContext\x12\x17.DropUserContextRequest\x1a\x18.DropUserContextResponseB\x02P\x01\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10\x65\x36x_engine.proto\"2\n\nGFieldInfo\x12\x11\n\tfieldName\x18\x01 \x01(\t\x12\x11\n\tfieldType\x18\x02 \x01(\t\"A\n\x13\x46\x61iledSchemaElement\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0e\n\x06reason\x18\x03 \x01(\t\"P\n\x16GetAddCatalogsResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\x12&\n\x08\x66\x61ilures\x18\x02 \x03(\x0b\x32\x14.FailedSchemaElement\"2\n\x0f\x43\x61talogResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tisDefault\x18\x02 \x01(\x08\"<\n\x0eParameterValue\x12\r\n\x05index\x18\x01 \x01(\x11\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\"D\n\x0c\x43learRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x0f\n\rClearResponse\"J\n\x12\x43\x61ncelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x15\n\x13\x43\x61ncelQueryResponse\"F\n\x0e\x45xplainRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\"\n\x0f\x45xplainResponse\x12\x0f\n\x07\x65xplain\x18\x01 \x01(\t\"Y\n\rDryRunRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\"%\n\x0e\x44ryRunResponse\x12\x13\n\x0b\x64ryrunValue\x18\x01 \x01(\t\"l\n\x0f\x44ryRunRequestV2\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x05 \x01(\t\"M\n\x15\x45xplainAnalyzeRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"m\n\x16\x45xplainAnalyzeResponse\x12\x16\n\x0e\x65xplainAnalyze\x18\x01 \x01(\t\x12\x10\n\x08isCached\x18\x02 \x01(\x08\x12\x13\n\x0bparsingTime\x18\x03 \x01(\x12\x12\x14\n\x0cqueueingTime\x18\x04 \x01(\x12\"b\n\x17PrepareStatementRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x13\n\x0bqueryString\x18\x03 \x01(\t\x12\x0f\n\x07quoting\x18\x04 \x01(\t\"u\n\x19PrepareStatementV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07quoting\x18\x05 \x01(\t\"=\n\x18PrepareStatementResponse\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\"@\n\x0eUserAccessInfo\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x10\n\x08userName\x18\x02 \x01(\t\x12\x0e\n\x06tokens\x18\x03 \x03(\t\"g\n\x17\x45xecuteStatementRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\"\x8a\x01\n\x19\x45xecuteStatementV2Request\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\x12\x1f\n\x06params\x18\x05 \x03(\x0b\x32\x0f.ParameterValue\"\x1a\n\x18\x45xecuteStatementResponse\"O\n\x17GetNextResultRowRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"-\n\x18GetNextResultRowResponse\x12\x11\n\tresultRow\x18\x02 \x01(\x0c\"w\n\x19GetNextResultBatchRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\tasRowData\x18\x04 \x01(\x08H\x00\x88\x01\x01\x42\x0c\n\n_asRowData\"1\n\x1aGetNextResultBatchResponse\x12\x13\n\x0bresultBatch\x18\x02 \x01(\x0c\"P\n\x18GetResultMetadataRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"3\n\x19GetResultMetadataResponse\x12\x16\n\x0eresultMetaData\x18\x01 \x01(\x0c\"5\n\x13\x41uthenticateRequest\x12\x0c\n\x04user\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\")\n\x14\x41uthenticateResponse\x12\x11\n\tsessionId\x18\x01 \x01(\t\"5\n\x10GetTablesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\"H\n\x12GetTablesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\"#\n\x11GetTablesResponse\x12\x0e\n\x06tables\x18\x01 \x03(\t\"*\n\x15GetSchemaNamesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"=\n\x17GetSchemaNamesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\")\n\x16GetSchemaNamesResponse\x12\x0f\n\x07schemas\x18\x01 \x03(\t\"E\n\x11GetColumnsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\"X\n\x13GetColumnsV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x04 \x01(\t\"4\n\x12GetColumnsResponse\x12\x1e\n\tfieldInfo\x18\x01 \x03(\x0b\x32\x0b.GFieldInfo\"E\n\rStatusRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"2\n\x0eStatusResponse\x12\x0e\n\x06status\x18\x02 \x01(\x08\x12\x10\n\x08rowCount\x18\x03 \x01(\x12\"5\n\x12\x41\x64\x64\x43\x61talogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0c\n\x04json\x18\x02 \x01(\t\"#\n\x12UpdateUsersRequest\x12\r\n\x05users\x18\x01 \x01(\x0c\"\x15\n\x13UpdateUsersResponse\"3\n\x0fSetPropsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\r\n\x05props\x18\x02 \x01(\t\"\x12\n\x10SetPropsResponse\"*\n\x15GetAddCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x15\n\x13\x41\x64\x64\x43\x61talogsResponse\"\x15\n\x13GetCatalogesRequest\"B\n\x14GetCatalogesResponse\x12*\n\x10\x63\x61talogResponses\x18\x01 \x03(\x0b\x32\x10.CatalogResponse\"+\n\x16RefreshCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x19\n\x17RefreshCatalogsResponse\"X\n\x12RemoteChunkRequest\x12\x17\n\x0foriginalQueryId\x18\x01 \x01(\t\x12\x15\n\rremoteQueryId\x18\x02 \x01(\t\x12\x12\n\nsQueryHash\x18\x03 \x01(\t\"3\n\x13RemoteChunkResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\r\n\x05\x63hunk\x18\x02 \x01(\x0c\"Q\n\x19\x43learOrCancelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x1c\n\x1a\x43learOrCancelQueryResponse\"\xba\x01\n\x16\x43reateDataFrameRequest\x12\x17\n\x0fparquetFilePath\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\r\n\x05table\x18\x04 \x01(\t\x12\x11\n\tsessionId\x18\x05 \x01(\t\x12\x10\n\x08\x65ngineIP\x18\x06 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x07 \x01(\x05\x12\x19\n\x11\x63reateFromParquet\x18\x08 \x01(\x08\"*\n\x17\x43reateDataFrameResponse\x12\x0f\n\x07queryId\x18\x01 \x01(\t\"j\n\x1cProjectionOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x02 \x01(\x05\x12\x11\n\tsessionId\x18\x03 \x01(\t\x12\r\n\x05\x66ield\x18\x04 \x03(\t\"\x1f\n\x1dProjectionOnDataFrameResponse\"\xdf\x01\n\x1d\x43olumnAliasOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x02 \x01(\x05\x12\x11\n\tsessionId\x18\x03 \x01(\t\x12J\n\x0e\x63olumnAliasMap\x18\x04 \x03(\x0b\x32\x32.ColumnAliasOnDataFrameRequest.ColumnAliasMapEntry\x1a\x35\n\x13\x43olumnAliasMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\" \n\x1e\x43olumnAliasOnDataFrameResponse\"\x92\x02\n\x1b\x41ggregateOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x02 \x01(\x05\x12\x11\n\tsessionId\x18\x03 \x01(\t\x12T\n\x14\x61ggregateFunctionMap\x18\x04 \x03(\x0b\x32\x36.AggregateOnDataFrameRequest.AggregateFunctionMapEntry\x12\x0f\n\x07groupBy\x18\x05 \x03(\t\x1aO\n\x19\x41ggregateFunctionMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0e\x32\x12.AggregateFunction:\x02\x38\x01\"\x1e\n\x1c\x41ggregateOnDataFrameResponse\"l\n\x18\x46ilterOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x02 \x01(\x05\x12\x11\n\tsessionId\x18\x03 \x01(\t\x12\x13\n\x0bwhereClause\x18\x04 \x01(\t\"\x1b\n\x19\x46ilterOnDataFrameResponse\"\xea\x01\n\x19OrderByOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x02 \x01(\x05\x12\x11\n\tsessionId\x18\x03 \x01(\t\x12H\n\x0forderByFieldMap\x18\x04 \x03(\x0b\x32/.OrderByOnDataFrameRequest.OrderByFieldMapEntry\x1a\x46\n\x14OrderByFieldMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1d\n\x05value\x18\x02 \x01(\x0e\x32\x0e.SortDirection:\x02\x38\x01\"\x1c\n\x1aOrderByOnDataFrameResponse\"j\n\x17LimitOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x02 \x01(\x05\x12\x11\n\tsessionId\x18\x03 \x01(\t\x12\x12\n\nfetchLimit\x18\x04 \x01(\x05\"\x1a\n\x18LimitOnDataFrameResponse\"V\n\x17\x45xecuteDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x02 \x01(\x05\x12\x11\n\tsessionId\x18\x03 \x01(\t\"\x1a\n\x18\x45xecuteDataFrameResponse\"+\n\x16\x44ropUserContextRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x19\n\x17\x44ropUserContextResponse*K\n\x11\x41ggregateFunction\x12\x07\n\x03SUM\x10\x00\x12\t\n\x05\x43OUNT\x10\x01\x12\x0e\n\nCOUNT_STAR\x10\x02\x12\x12\n\x0e\x43OUNT_DISTINCT\x10\x03*\"\n\rSortDirection\x12\x07\n\x03\x41SC\x10\x00\x12\x08\n\x04\x44\x45SC\x10\x01\x32\x90\x13\n\x12QueryEngineService\x12&\n\x05\x63lear\x12\r.ClearRequest\x1a\x0e.ClearResponse\x12\x38\n\x0b\x63\x61ncelQuery\x12\x13.CancelQueryRequest\x1a\x14.CancelQueryResponse\x12M\n\x12\x63learOrCancelQuery\x12\x1a.ClearOrCancelQueryRequest\x1a\x1b.ClearOrCancelQueryResponse\x12,\n\x07\x65xplain\x12\x0f.ExplainRequest\x1a\x10.ExplainResponse\x12)\n\x06\x64ryRun\x12\x0e.DryRunRequest\x1a\x0f.DryRunResponse\x12-\n\x08\x64ryRunV2\x12\x10.DryRunRequestV2\x1a\x0f.DryRunResponse\x12\x41\n\x0e\x65xplainAnalyze\x12\x16.ExplainAnalyzeRequest\x1a\x17.ExplainAnalyzeResponse\x12G\n\x10prepareStatement\x12\x18.PrepareStatementRequest\x1a\x19.PrepareStatementResponse\x12K\n\x12prepareStatementV2\x12\x1a.PrepareStatementV2Request\x1a\x19.PrepareStatementResponse\x12G\n\x10\x65xecuteStatement\x12\x18.ExecuteStatementRequest\x1a\x19.ExecuteStatementResponse\x12K\n\x12\x65xecuteStatementV2\x12\x1a.ExecuteStatementV2Request\x1a\x19.ExecuteStatementResponse\x12G\n\x10getNextResultRow\x12\x18.GetNextResultRowRequest\x1a\x19.GetNextResultRowResponse\x12M\n\x12getNextResultBatch\x12\x1a.GetNextResultBatchRequest\x1a\x1b.GetNextResultBatchResponse\x12J\n\x11getResultMetadata\x12\x19.GetResultMetadataRequest\x1a\x1a.GetResultMetadataResponse\x12;\n\x0c\x61uthenticate\x12\x14.AuthenticateRequest\x1a\x15.AuthenticateResponse\x12\x32\n\tgetTables\x12\x11.GetTablesRequest\x1a\x12.GetTablesResponse\x12\x36\n\x0bgetTablesV2\x12\x13.GetTablesV2Request\x1a\x12.GetTablesResponse\x12\x41\n\x0egetSchemaNames\x12\x16.GetSchemaNamesRequest\x1a\x17.GetSchemaNamesResponse\x12\x45\n\x10getSchemaNamesV2\x12\x18.GetSchemaNamesV2Request\x1a\x17.GetSchemaNamesResponse\x12\x35\n\ngetColumns\x12\x12.GetColumnsRequest\x1a\x13.GetColumnsResponse\x12\x39\n\x0cgetColumnsV2\x12\x14.GetColumnsV2Request\x1a\x13.GetColumnsResponse\x12\x38\n\x0bupdateUsers\x12\x13.UpdateUsersRequest\x1a\x14.UpdateUsersResponse\x12/\n\x08setProps\x12\x10.SetPropsRequest\x1a\x11.SetPropsResponse\x12)\n\x06status\x12\x0e.StatusRequest\x1a\x0f.StatusResponse\x12\x38\n\x0b\x61\x64\x64\x43\x61talogs\x12\x13.AddCatalogsRequest\x1a\x14.AddCatalogsResponse\x12I\n\x16getAddCatalogsResponse\x12\x16.GetAddCatalogsRequest\x1a\x17.GetAddCatalogsResponse\x12;\n\x0cgetCataloges\x12\x14.GetCatalogesRequest\x1a\x15.GetCatalogesResponse\x12\x45\n\x18getNextRemoteCachedChunk\x12\x13.RemoteChunkRequest\x1a\x14.RemoteChunkResponse\x12\x44\n\x0frefreshCatalogs\x12\x17.RefreshCatalogsRequest\x1a\x18.RefreshCatalogsResponse\x12\x44\n\x0f\x63reateDataFrame\x12\x17.CreateDataFrameRequest\x1a\x18.CreateDataFrameResponse\x12V\n\x15projectionOnDataFrame\x12\x1d.ProjectionOnDataFrameRequest\x1a\x1e.ProjectionOnDataFrameResponse\x12S\n\x14\x61ggregateOnDataFrame\x12\x1c.AggregateOnDataFrameRequest\x1a\x1d.AggregateOnDataFrameResponse\x12J\n\x11\x66ilterOnDataFrame\x12\x19.FilterOnDataFrameRequest\x1a\x1a.FilterOnDataFrameResponse\x12M\n\x12orderByOnDataFrame\x12\x1a.OrderByOnDataFrameRequest\x1a\x1b.OrderByOnDataFrameResponse\x12G\n\x10limitOnDataFrame\x12\x18.LimitOnDataFrameRequest\x1a\x19.LimitOnDataFrameResponse\x12G\n\x10\x65xecuteDataFrame\x12\x18.ExecuteDataFrameRequest\x1a\x19.ExecuteDataFrameResponse\x12\x44\n\x0f\x64ropUserContext\x12\x17.DropUserContextRequest\x1a\x18.DropUserContextResponseB\x02P\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'e6x_engine_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'P\001' - _globals['_SORTDIRECTION']._serialized_start=4659 - _globals['_SORTDIRECTION']._serialized_end=4693 - _globals['_NULLDIRECTION']._serialized_start=4695 - _globals['_NULLDIRECTION']._serialized_end=4731 +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'P\001' + _globals['_COLUMNALIASONDATAFRAMEREQUEST_COLUMNALIASMAPENTRY']._loaded_options = None + _globals['_COLUMNALIASONDATAFRAMEREQUEST_COLUMNALIASMAPENTRY']._serialized_options = b'8\001' + _globals['_AGGREGATEONDATAFRAMEREQUEST_AGGREGATEFUNCTIONMAPENTRY']._loaded_options = None + _globals['_AGGREGATEONDATAFRAMEREQUEST_AGGREGATEFUNCTIONMAPENTRY']._serialized_options = b'8\001' + _globals['_ORDERBYONDATAFRAMEREQUEST_ORDERBYFIELDMAPENTRY']._loaded_options = None + _globals['_ORDERBYONDATAFRAMEREQUEST_ORDERBYFIELDMAPENTRY']._serialized_options = b'8\001' + _globals['_AGGREGATEFUNCTION']._serialized_start=5215 + _globals['_AGGREGATEFUNCTION']._serialized_end=5290 + _globals['_SORTDIRECTION']._serialized_start=5292 + _globals['_SORTDIRECTION']._serialized_end=5326 _globals['_GFIELDINFO']._serialized_start=20 _globals['_GFIELDINFO']._serialized_end=70 _globals['_FAILEDSCHEMAELEMENT']._serialized_start=72 @@ -141,33 +147,47 @@ _globals['_CLEARORCANCELQUERYRESPONSE']._serialized_start=3512 _globals['_CLEARORCANCELQUERYRESPONSE']._serialized_end=3540 _globals['_CREATEDATAFRAMEREQUEST']._serialized_start=3543 - _globals['_CREATEDATAFRAMEREQUEST']._serialized_end=3705 - _globals['_CREATEDATAFRAMERESPONSE']._serialized_start=3707 - _globals['_CREATEDATAFRAMERESPONSE']._serialized_end=3749 - _globals['_PROJECTIONONDATAFRAMEREQUEST']._serialized_start=3751 - _globals['_PROJECTIONONDATAFRAMEREQUEST']._serialized_end=3875 - _globals['_PROJECTIONONDATAFRAMERESPONSE']._serialized_start=3877 - _globals['_PROJECTIONONDATAFRAMERESPONSE']._serialized_end=3908 - _globals['_FILTERONDATAFRAMEREQUEST']._serialized_start=3910 - _globals['_FILTERONDATAFRAMEREQUEST']._serialized_end=4036 - _globals['_FILTERONDATAFRAMERESPONSE']._serialized_start=4038 - _globals['_FILTERONDATAFRAMERESPONSE']._serialized_end=4065 - _globals['_ORDERBYONDATAFRAMEREQUEST']._serialized_start=4068 - _globals['_ORDERBYONDATAFRAMEREQUEST']._serialized_end=4268 - _globals['_ORDERBYONDATAFRAMERESPONSE']._serialized_start=4270 - _globals['_ORDERBYONDATAFRAMERESPONSE']._serialized_end=4298 - _globals['_LIMITONDATAFRAMEREQUEST']._serialized_start=4300 - _globals['_LIMITONDATAFRAMEREQUEST']._serialized_end=4424 - _globals['_LIMITONDATAFRAMERESPONSE']._serialized_start=4426 - _globals['_LIMITONDATAFRAMERESPONSE']._serialized_end=4452 - _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_start=4454 - _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_end=4558 - _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_start=4560 - _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_end=4586 - _globals['_DROPUSERCONTEXTREQUEST']._serialized_start=4588 - _globals['_DROPUSERCONTEXTREQUEST']._serialized_end=4630 - _globals['_DROPUSERCONTEXTRESPONSE']._serialized_start=4632 - _globals['_DROPUSERCONTEXTRESPONSE']._serialized_end=4657 - _globals['_QUERYENGINESERVICE']._serialized_start=4734 - _globals['_QUERYENGINESERVICE']._serialized_end=7097 + _globals['_CREATEDATAFRAMEREQUEST']._serialized_end=3729 + _globals['_CREATEDATAFRAMERESPONSE']._serialized_start=3731 + _globals['_CREATEDATAFRAMERESPONSE']._serialized_end=3773 + _globals['_PROJECTIONONDATAFRAMEREQUEST']._serialized_start=3775 + _globals['_PROJECTIONONDATAFRAMEREQUEST']._serialized_end=3881 + _globals['_PROJECTIONONDATAFRAMERESPONSE']._serialized_start=3883 + _globals['_PROJECTIONONDATAFRAMERESPONSE']._serialized_end=3914 + _globals['_COLUMNALIASONDATAFRAMEREQUEST']._serialized_start=3917 + _globals['_COLUMNALIASONDATAFRAMEREQUEST']._serialized_end=4140 + _globals['_COLUMNALIASONDATAFRAMEREQUEST_COLUMNALIASMAPENTRY']._serialized_start=4087 + _globals['_COLUMNALIASONDATAFRAMEREQUEST_COLUMNALIASMAPENTRY']._serialized_end=4140 + _globals['_COLUMNALIASONDATAFRAMERESPONSE']._serialized_start=4142 + _globals['_COLUMNALIASONDATAFRAMERESPONSE']._serialized_end=4174 + _globals['_AGGREGATEONDATAFRAMEREQUEST']._serialized_start=4177 + _globals['_AGGREGATEONDATAFRAMEREQUEST']._serialized_end=4451 + _globals['_AGGREGATEONDATAFRAMEREQUEST_AGGREGATEFUNCTIONMAPENTRY']._serialized_start=4372 + _globals['_AGGREGATEONDATAFRAMEREQUEST_AGGREGATEFUNCTIONMAPENTRY']._serialized_end=4451 + _globals['_AGGREGATEONDATAFRAMERESPONSE']._serialized_start=4453 + _globals['_AGGREGATEONDATAFRAMERESPONSE']._serialized_end=4483 + _globals['_FILTERONDATAFRAMEREQUEST']._serialized_start=4485 + _globals['_FILTERONDATAFRAMEREQUEST']._serialized_end=4593 + _globals['_FILTERONDATAFRAMERESPONSE']._serialized_start=4595 + _globals['_FILTERONDATAFRAMERESPONSE']._serialized_end=4622 + _globals['_ORDERBYONDATAFRAMEREQUEST']._serialized_start=4625 + _globals['_ORDERBYONDATAFRAMEREQUEST']._serialized_end=4859 + _globals['_ORDERBYONDATAFRAMEREQUEST_ORDERBYFIELDMAPENTRY']._serialized_start=4789 + _globals['_ORDERBYONDATAFRAMEREQUEST_ORDERBYFIELDMAPENTRY']._serialized_end=4859 + _globals['_ORDERBYONDATAFRAMERESPONSE']._serialized_start=4861 + _globals['_ORDERBYONDATAFRAMERESPONSE']._serialized_end=4889 + _globals['_LIMITONDATAFRAMEREQUEST']._serialized_start=4891 + _globals['_LIMITONDATAFRAMEREQUEST']._serialized_end=4997 + _globals['_LIMITONDATAFRAMERESPONSE']._serialized_start=4999 + _globals['_LIMITONDATAFRAMERESPONSE']._serialized_end=5025 + _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_start=5027 + _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_end=5113 + _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_start=5115 + _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_end=5141 + _globals['_DROPUSERCONTEXTREQUEST']._serialized_start=5143 + _globals['_DROPUSERCONTEXTREQUEST']._serialized_end=5186 + _globals['_DROPUSERCONTEXTRESPONSE']._serialized_start=5188 + _globals['_DROPUSERCONTEXTRESPONSE']._serialized_end=5213 + _globals['_QUERYENGINESERVICE']._serialized_start=5329 + _globals['_QUERYENGINESERVICE']._serialized_end=7777 # @@protoc_insertion_point(module_scope) diff --git a/e6data_python_connector/server/e6x_engine_pb2.pyi b/e6data_python_connector/server/e6x_engine_pb2.pyi index b0aa85e..1daf725 100644 --- a/e6data_python_connector/server/e6x_engine_pb2.pyi +++ b/e6data_python_connector/server/e6x_engine_pb2.pyi @@ -6,22 +6,26 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map DESCRIPTOR: _descriptor.FileDescriptor +class AggregateFunction(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + SUM: _ClassVar[AggregateFunction] + COUNT: _ClassVar[AggregateFunction] + COUNT_STAR: _ClassVar[AggregateFunction] + COUNT_DISTINCT: _ClassVar[AggregateFunction] + class SortDirection(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] + __slots__ = () ASC: _ClassVar[SortDirection] DESC: _ClassVar[SortDirection] - -class NullDirection(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = [] - FIRST: _ClassVar[NullDirection] - LAST: _ClassVar[NullDirection] +SUM: AggregateFunction +COUNT: AggregateFunction +COUNT_STAR: AggregateFunction +COUNT_DISTINCT: AggregateFunction ASC: SortDirection DESC: SortDirection -FIRST: NullDirection -LAST: NullDirection class GFieldInfo(_message.Message): - __slots__ = ["fieldName", "fieldType"] + __slots__ = ("fieldName", "fieldType") FIELDNAME_FIELD_NUMBER: _ClassVar[int] FIELDTYPE_FIELD_NUMBER: _ClassVar[int] fieldName: str @@ -29,7 +33,7 @@ class GFieldInfo(_message.Message): def __init__(self, fieldName: _Optional[str] = ..., fieldType: _Optional[str] = ...) -> None: ... class FailedSchemaElement(_message.Message): - __slots__ = ["name", "type", "reason"] + __slots__ = ("name", "type", "reason") NAME_FIELD_NUMBER: _ClassVar[int] TYPE_FIELD_NUMBER: _ClassVar[int] REASON_FIELD_NUMBER: _ClassVar[int] @@ -39,7 +43,7 @@ class FailedSchemaElement(_message.Message): def __init__(self, name: _Optional[str] = ..., type: _Optional[str] = ..., reason: _Optional[str] = ...) -> None: ... class GetAddCatalogsResponse(_message.Message): - __slots__ = ["status", "failures"] + __slots__ = ("status", "failures") STATUS_FIELD_NUMBER: _ClassVar[int] FAILURES_FIELD_NUMBER: _ClassVar[int] status: str @@ -47,7 +51,7 @@ class GetAddCatalogsResponse(_message.Message): def __init__(self, status: _Optional[str] = ..., failures: _Optional[_Iterable[_Union[FailedSchemaElement, _Mapping]]] = ...) -> None: ... class CatalogResponse(_message.Message): - __slots__ = ["name", "isDefault"] + __slots__ = ("name", "isDefault") NAME_FIELD_NUMBER: _ClassVar[int] ISDEFAULT_FIELD_NUMBER: _ClassVar[int] name: str @@ -55,7 +59,7 @@ class CatalogResponse(_message.Message): def __init__(self, name: _Optional[str] = ..., isDefault: bool = ...) -> None: ... class ParameterValue(_message.Message): - __slots__ = ["index", "type", "value"] + __slots__ = ("index", "type", "value") INDEX_FIELD_NUMBER: _ClassVar[int] TYPE_FIELD_NUMBER: _ClassVar[int] VALUE_FIELD_NUMBER: _ClassVar[int] @@ -65,7 +69,7 @@ class ParameterValue(_message.Message): def __init__(self, index: _Optional[int] = ..., type: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... class ClearRequest(_message.Message): - __slots__ = ["engineIP", "sessionId", "queryId"] + __slots__ = ("engineIP", "sessionId", "queryId") ENGINEIP_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] QUERYID_FIELD_NUMBER: _ClassVar[int] @@ -75,11 +79,11 @@ class ClearRequest(_message.Message): def __init__(self, engineIP: _Optional[str] = ..., sessionId: _Optional[str] = ..., queryId: _Optional[str] = ...) -> None: ... class ClearResponse(_message.Message): - __slots__ = [] + __slots__ = () def __init__(self) -> None: ... class CancelQueryRequest(_message.Message): - __slots__ = ["engineIP", "sessionId", "queryId"] + __slots__ = ("engineIP", "sessionId", "queryId") ENGINEIP_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] QUERYID_FIELD_NUMBER: _ClassVar[int] @@ -89,11 +93,11 @@ class CancelQueryRequest(_message.Message): def __init__(self, engineIP: _Optional[str] = ..., sessionId: _Optional[str] = ..., queryId: _Optional[str] = ...) -> None: ... class CancelQueryResponse(_message.Message): - __slots__ = [] + __slots__ = () def __init__(self) -> None: ... class ExplainRequest(_message.Message): - __slots__ = ["engineIP", "sessionId", "queryId"] + __slots__ = ("engineIP", "sessionId", "queryId") ENGINEIP_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] QUERYID_FIELD_NUMBER: _ClassVar[int] @@ -103,13 +107,13 @@ class ExplainRequest(_message.Message): def __init__(self, engineIP: _Optional[str] = ..., sessionId: _Optional[str] = ..., queryId: _Optional[str] = ...) -> None: ... class ExplainResponse(_message.Message): - __slots__ = ["explain"] + __slots__ = ("explain",) EXPLAIN_FIELD_NUMBER: _ClassVar[int] explain: str def __init__(self, explain: _Optional[str] = ...) -> None: ... class DryRunRequest(_message.Message): - __slots__ = ["engineIP", "sessionId", "schema", "queryString"] + __slots__ = ("engineIP", "sessionId", "schema", "queryString") ENGINEIP_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] SCHEMA_FIELD_NUMBER: _ClassVar[int] @@ -121,13 +125,13 @@ class DryRunRequest(_message.Message): def __init__(self, engineIP: _Optional[str] = ..., sessionId: _Optional[str] = ..., schema: _Optional[str] = ..., queryString: _Optional[str] = ...) -> None: ... class DryRunResponse(_message.Message): - __slots__ = ["dryrunValue"] + __slots__ = ("dryrunValue",) DRYRUNVALUE_FIELD_NUMBER: _ClassVar[int] dryrunValue: str def __init__(self, dryrunValue: _Optional[str] = ...) -> None: ... class DryRunRequestV2(_message.Message): - __slots__ = ["engineIP", "sessionId", "schema", "queryString", "catalog"] + __slots__ = ("engineIP", "sessionId", "schema", "queryString", "catalog") ENGINEIP_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] SCHEMA_FIELD_NUMBER: _ClassVar[int] @@ -141,7 +145,7 @@ class DryRunRequestV2(_message.Message): def __init__(self, engineIP: _Optional[str] = ..., sessionId: _Optional[str] = ..., schema: _Optional[str] = ..., queryString: _Optional[str] = ..., catalog: _Optional[str] = ...) -> None: ... class ExplainAnalyzeRequest(_message.Message): - __slots__ = ["engineIP", "sessionId", "queryId"] + __slots__ = ("engineIP", "sessionId", "queryId") ENGINEIP_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] QUERYID_FIELD_NUMBER: _ClassVar[int] @@ -151,7 +155,7 @@ class ExplainAnalyzeRequest(_message.Message): def __init__(self, engineIP: _Optional[str] = ..., sessionId: _Optional[str] = ..., queryId: _Optional[str] = ...) -> None: ... class ExplainAnalyzeResponse(_message.Message): - __slots__ = ["explainAnalyze", "isCached", "parsingTime", "queueingTime"] + __slots__ = ("explainAnalyze", "isCached", "parsingTime", "queueingTime") EXPLAINANALYZE_FIELD_NUMBER: _ClassVar[int] ISCACHED_FIELD_NUMBER: _ClassVar[int] PARSINGTIME_FIELD_NUMBER: _ClassVar[int] @@ -163,7 +167,7 @@ class ExplainAnalyzeResponse(_message.Message): def __init__(self, explainAnalyze: _Optional[str] = ..., isCached: bool = ..., parsingTime: _Optional[int] = ..., queueingTime: _Optional[int] = ...) -> None: ... class PrepareStatementRequest(_message.Message): - __slots__ = ["sessionId", "schema", "queryString", "quoting"] + __slots__ = ("sessionId", "schema", "queryString", "quoting") SESSIONID_FIELD_NUMBER: _ClassVar[int] SCHEMA_FIELD_NUMBER: _ClassVar[int] QUERYSTRING_FIELD_NUMBER: _ClassVar[int] @@ -175,7 +179,7 @@ class PrepareStatementRequest(_message.Message): def __init__(self, sessionId: _Optional[str] = ..., schema: _Optional[str] = ..., queryString: _Optional[str] = ..., quoting: _Optional[str] = ...) -> None: ... class PrepareStatementV2Request(_message.Message): - __slots__ = ["sessionId", "schema", "catalog", "queryString", "quoting"] + __slots__ = ("sessionId", "schema", "catalog", "queryString", "quoting") SESSIONID_FIELD_NUMBER: _ClassVar[int] SCHEMA_FIELD_NUMBER: _ClassVar[int] CATALOG_FIELD_NUMBER: _ClassVar[int] @@ -189,7 +193,7 @@ class PrepareStatementV2Request(_message.Message): def __init__(self, sessionId: _Optional[str] = ..., schema: _Optional[str] = ..., catalog: _Optional[str] = ..., queryString: _Optional[str] = ..., quoting: _Optional[str] = ...) -> None: ... class PrepareStatementResponse(_message.Message): - __slots__ = ["engineIP", "queryId"] + __slots__ = ("engineIP", "queryId") ENGINEIP_FIELD_NUMBER: _ClassVar[int] QUERYID_FIELD_NUMBER: _ClassVar[int] engineIP: str @@ -197,7 +201,7 @@ class PrepareStatementResponse(_message.Message): def __init__(self, engineIP: _Optional[str] = ..., queryId: _Optional[str] = ...) -> None: ... class UserAccessInfo(_message.Message): - __slots__ = ["uuid", "userName", "tokens"] + __slots__ = ("uuid", "userName", "tokens") UUID_FIELD_NUMBER: _ClassVar[int] USERNAME_FIELD_NUMBER: _ClassVar[int] TOKENS_FIELD_NUMBER: _ClassVar[int] @@ -207,7 +211,7 @@ class UserAccessInfo(_message.Message): def __init__(self, uuid: _Optional[str] = ..., userName: _Optional[str] = ..., tokens: _Optional[_Iterable[str]] = ...) -> None: ... class ExecuteStatementRequest(_message.Message): - __slots__ = ["engineIP", "sessionId", "queryId", "shouldNotCache"] + __slots__ = ("engineIP", "sessionId", "queryId", "shouldNotCache") ENGINEIP_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] QUERYID_FIELD_NUMBER: _ClassVar[int] @@ -219,7 +223,7 @@ class ExecuteStatementRequest(_message.Message): def __init__(self, engineIP: _Optional[str] = ..., sessionId: _Optional[str] = ..., queryId: _Optional[str] = ..., shouldNotCache: bool = ...) -> None: ... class ExecuteStatementV2Request(_message.Message): - __slots__ = ["engineIP", "sessionId", "queryId", "shouldNotCache", "params"] + __slots__ = ("engineIP", "sessionId", "queryId", "shouldNotCache", "params") ENGINEIP_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] QUERYID_FIELD_NUMBER: _ClassVar[int] @@ -233,11 +237,11 @@ class ExecuteStatementV2Request(_message.Message): def __init__(self, engineIP: _Optional[str] = ..., sessionId: _Optional[str] = ..., queryId: _Optional[str] = ..., shouldNotCache: bool = ..., params: _Optional[_Iterable[_Union[ParameterValue, _Mapping]]] = ...) -> None: ... class ExecuteStatementResponse(_message.Message): - __slots__ = [] + __slots__ = () def __init__(self) -> None: ... class GetNextResultRowRequest(_message.Message): - __slots__ = ["engineIP", "sessionId", "queryId"] + __slots__ = ("engineIP", "sessionId", "queryId") ENGINEIP_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] QUERYID_FIELD_NUMBER: _ClassVar[int] @@ -247,13 +251,13 @@ class GetNextResultRowRequest(_message.Message): def __init__(self, engineIP: _Optional[str] = ..., sessionId: _Optional[str] = ..., queryId: _Optional[str] = ...) -> None: ... class GetNextResultRowResponse(_message.Message): - __slots__ = ["resultRow"] + __slots__ = ("resultRow",) RESULTROW_FIELD_NUMBER: _ClassVar[int] resultRow: bytes def __init__(self, resultRow: _Optional[bytes] = ...) -> None: ... class GetNextResultBatchRequest(_message.Message): - __slots__ = ["engineIP", "sessionId", "queryId", "asRowData"] + __slots__ = ("engineIP", "sessionId", "queryId", "asRowData") ENGINEIP_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] QUERYID_FIELD_NUMBER: _ClassVar[int] @@ -265,13 +269,13 @@ class GetNextResultBatchRequest(_message.Message): def __init__(self, engineIP: _Optional[str] = ..., sessionId: _Optional[str] = ..., queryId: _Optional[str] = ..., asRowData: bool = ...) -> None: ... class GetNextResultBatchResponse(_message.Message): - __slots__ = ["resultBatch"] + __slots__ = ("resultBatch",) RESULTBATCH_FIELD_NUMBER: _ClassVar[int] resultBatch: bytes def __init__(self, resultBatch: _Optional[bytes] = ...) -> None: ... class GetResultMetadataRequest(_message.Message): - __slots__ = ["engineIP", "sessionId", "queryId"] + __slots__ = ("engineIP", "sessionId", "queryId") ENGINEIP_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] QUERYID_FIELD_NUMBER: _ClassVar[int] @@ -281,13 +285,13 @@ class GetResultMetadataRequest(_message.Message): def __init__(self, engineIP: _Optional[str] = ..., sessionId: _Optional[str] = ..., queryId: _Optional[str] = ...) -> None: ... class GetResultMetadataResponse(_message.Message): - __slots__ = ["resultMetaData"] + __slots__ = ("resultMetaData",) RESULTMETADATA_FIELD_NUMBER: _ClassVar[int] resultMetaData: bytes def __init__(self, resultMetaData: _Optional[bytes] = ...) -> None: ... class AuthenticateRequest(_message.Message): - __slots__ = ["user", "password"] + __slots__ = ("user", "password") USER_FIELD_NUMBER: _ClassVar[int] PASSWORD_FIELD_NUMBER: _ClassVar[int] user: str @@ -295,13 +299,13 @@ class AuthenticateRequest(_message.Message): def __init__(self, user: _Optional[str] = ..., password: _Optional[str] = ...) -> None: ... class AuthenticateResponse(_message.Message): - __slots__ = ["sessionId"] + __slots__ = ("sessionId",) SESSIONID_FIELD_NUMBER: _ClassVar[int] sessionId: str def __init__(self, sessionId: _Optional[str] = ...) -> None: ... class GetTablesRequest(_message.Message): - __slots__ = ["sessionId", "schema"] + __slots__ = ("sessionId", "schema") SESSIONID_FIELD_NUMBER: _ClassVar[int] SCHEMA_FIELD_NUMBER: _ClassVar[int] sessionId: str @@ -309,7 +313,7 @@ class GetTablesRequest(_message.Message): def __init__(self, sessionId: _Optional[str] = ..., schema: _Optional[str] = ...) -> None: ... class GetTablesV2Request(_message.Message): - __slots__ = ["sessionId", "schema", "catalog"] + __slots__ = ("sessionId", "schema", "catalog") SESSIONID_FIELD_NUMBER: _ClassVar[int] SCHEMA_FIELD_NUMBER: _ClassVar[int] CATALOG_FIELD_NUMBER: _ClassVar[int] @@ -319,19 +323,19 @@ class GetTablesV2Request(_message.Message): def __init__(self, sessionId: _Optional[str] = ..., schema: _Optional[str] = ..., catalog: _Optional[str] = ...) -> None: ... class GetTablesResponse(_message.Message): - __slots__ = ["tables"] + __slots__ = ("tables",) TABLES_FIELD_NUMBER: _ClassVar[int] tables: _containers.RepeatedScalarFieldContainer[str] def __init__(self, tables: _Optional[_Iterable[str]] = ...) -> None: ... class GetSchemaNamesRequest(_message.Message): - __slots__ = ["sessionId"] + __slots__ = ("sessionId",) SESSIONID_FIELD_NUMBER: _ClassVar[int] sessionId: str def __init__(self, sessionId: _Optional[str] = ...) -> None: ... class GetSchemaNamesV2Request(_message.Message): - __slots__ = ["sessionId", "catalog"] + __slots__ = ("sessionId", "catalog") SESSIONID_FIELD_NUMBER: _ClassVar[int] CATALOG_FIELD_NUMBER: _ClassVar[int] sessionId: str @@ -339,13 +343,13 @@ class GetSchemaNamesV2Request(_message.Message): def __init__(self, sessionId: _Optional[str] = ..., catalog: _Optional[str] = ...) -> None: ... class GetSchemaNamesResponse(_message.Message): - __slots__ = ["schemas"] + __slots__ = ("schemas",) SCHEMAS_FIELD_NUMBER: _ClassVar[int] schemas: _containers.RepeatedScalarFieldContainer[str] def __init__(self, schemas: _Optional[_Iterable[str]] = ...) -> None: ... class GetColumnsRequest(_message.Message): - __slots__ = ["sessionId", "schema", "table"] + __slots__ = ("sessionId", "schema", "table") SESSIONID_FIELD_NUMBER: _ClassVar[int] SCHEMA_FIELD_NUMBER: _ClassVar[int] TABLE_FIELD_NUMBER: _ClassVar[int] @@ -355,7 +359,7 @@ class GetColumnsRequest(_message.Message): def __init__(self, sessionId: _Optional[str] = ..., schema: _Optional[str] = ..., table: _Optional[str] = ...) -> None: ... class GetColumnsV2Request(_message.Message): - __slots__ = ["sessionId", "schema", "table", "catalog"] + __slots__ = ("sessionId", "schema", "table", "catalog") SESSIONID_FIELD_NUMBER: _ClassVar[int] SCHEMA_FIELD_NUMBER: _ClassVar[int] TABLE_FIELD_NUMBER: _ClassVar[int] @@ -367,13 +371,13 @@ class GetColumnsV2Request(_message.Message): def __init__(self, sessionId: _Optional[str] = ..., schema: _Optional[str] = ..., table: _Optional[str] = ..., catalog: _Optional[str] = ...) -> None: ... class GetColumnsResponse(_message.Message): - __slots__ = ["fieldInfo"] + __slots__ = ("fieldInfo",) FIELDINFO_FIELD_NUMBER: _ClassVar[int] fieldInfo: _containers.RepeatedCompositeFieldContainer[GFieldInfo] def __init__(self, fieldInfo: _Optional[_Iterable[_Union[GFieldInfo, _Mapping]]] = ...) -> None: ... class StatusRequest(_message.Message): - __slots__ = ["engineIP", "sessionId", "queryId"] + __slots__ = ("engineIP", "sessionId", "queryId") ENGINEIP_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] QUERYID_FIELD_NUMBER: _ClassVar[int] @@ -383,7 +387,7 @@ class StatusRequest(_message.Message): def __init__(self, engineIP: _Optional[str] = ..., sessionId: _Optional[str] = ..., queryId: _Optional[str] = ...) -> None: ... class StatusResponse(_message.Message): - __slots__ = ["status", "rowCount"] + __slots__ = ("status", "rowCount") STATUS_FIELD_NUMBER: _ClassVar[int] ROWCOUNT_FIELD_NUMBER: _ClassVar[int] status: bool @@ -391,7 +395,7 @@ class StatusResponse(_message.Message): def __init__(self, status: bool = ..., rowCount: _Optional[int] = ...) -> None: ... class AddCatalogsRequest(_message.Message): - __slots__ = ["sessionId", "json"] + __slots__ = ("sessionId", "json") SESSIONID_FIELD_NUMBER: _ClassVar[int] JSON_FIELD_NUMBER: _ClassVar[int] sessionId: str @@ -399,17 +403,17 @@ class AddCatalogsRequest(_message.Message): def __init__(self, sessionId: _Optional[str] = ..., json: _Optional[str] = ...) -> None: ... class UpdateUsersRequest(_message.Message): - __slots__ = ["users"] + __slots__ = ("users",) USERS_FIELD_NUMBER: _ClassVar[int] users: bytes def __init__(self, users: _Optional[bytes] = ...) -> None: ... class UpdateUsersResponse(_message.Message): - __slots__ = [] + __slots__ = () def __init__(self) -> None: ... class SetPropsRequest(_message.Message): - __slots__ = ["sessionId", "props"] + __slots__ = ("sessionId", "props") SESSIONID_FIELD_NUMBER: _ClassVar[int] PROPS_FIELD_NUMBER: _ClassVar[int] sessionId: str @@ -417,41 +421,41 @@ class SetPropsRequest(_message.Message): def __init__(self, sessionId: _Optional[str] = ..., props: _Optional[str] = ...) -> None: ... class SetPropsResponse(_message.Message): - __slots__ = [] + __slots__ = () def __init__(self) -> None: ... class GetAddCatalogsRequest(_message.Message): - __slots__ = ["sessionId"] + __slots__ = ("sessionId",) SESSIONID_FIELD_NUMBER: _ClassVar[int] sessionId: str def __init__(self, sessionId: _Optional[str] = ...) -> None: ... class AddCatalogsResponse(_message.Message): - __slots__ = [] + __slots__ = () def __init__(self) -> None: ... class GetCatalogesRequest(_message.Message): - __slots__ = [] + __slots__ = () def __init__(self) -> None: ... class GetCatalogesResponse(_message.Message): - __slots__ = ["catalogResponses"] + __slots__ = ("catalogResponses",) CATALOGRESPONSES_FIELD_NUMBER: _ClassVar[int] catalogResponses: _containers.RepeatedCompositeFieldContainer[CatalogResponse] def __init__(self, catalogResponses: _Optional[_Iterable[_Union[CatalogResponse, _Mapping]]] = ...) -> None: ... class RefreshCatalogsRequest(_message.Message): - __slots__ = ["sessionId"] + __slots__ = ("sessionId",) SESSIONID_FIELD_NUMBER: _ClassVar[int] sessionId: str def __init__(self, sessionId: _Optional[str] = ...) -> None: ... class RefreshCatalogsResponse(_message.Message): - __slots__ = [] + __slots__ = () def __init__(self) -> None: ... class RemoteChunkRequest(_message.Message): - __slots__ = ["originalQueryId", "remoteQueryId", "sQueryHash"] + __slots__ = ("originalQueryId", "remoteQueryId", "sQueryHash") ORIGINALQUERYID_FIELD_NUMBER: _ClassVar[int] REMOTEQUERYID_FIELD_NUMBER: _ClassVar[int] SQUERYHASH_FIELD_NUMBER: _ClassVar[int] @@ -461,7 +465,7 @@ class RemoteChunkRequest(_message.Message): def __init__(self, originalQueryId: _Optional[str] = ..., remoteQueryId: _Optional[str] = ..., sQueryHash: _Optional[str] = ...) -> None: ... class RemoteChunkResponse(_message.Message): - __slots__ = ["error", "chunk"] + __slots__ = ("error", "chunk") ERROR_FIELD_NUMBER: _ClassVar[int] CHUNK_FIELD_NUMBER: _ClassVar[int] error: str @@ -469,7 +473,7 @@ class RemoteChunkResponse(_message.Message): def __init__(self, error: _Optional[str] = ..., chunk: _Optional[bytes] = ...) -> None: ... class ClearOrCancelQueryRequest(_message.Message): - __slots__ = ["engineIP", "sessionId", "queryId"] + __slots__ = ("engineIP", "sessionId", "queryId") ENGINEIP_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] QUERYID_FIELD_NUMBER: _ClassVar[int] @@ -479,131 +483,174 @@ class ClearOrCancelQueryRequest(_message.Message): def __init__(self, engineIP: _Optional[str] = ..., sessionId: _Optional[str] = ..., queryId: _Optional[str] = ...) -> None: ... class ClearOrCancelQueryResponse(_message.Message): - __slots__ = [] + __slots__ = () def __init__(self) -> None: ... class CreateDataFrameRequest(_message.Message): - __slots__ = ["parquetFilePath", "catalog", "schema", "sessionId", "engineIP", "userUUID", "dataframeNumber"] + __slots__ = ("parquetFilePath", "catalog", "schema", "table", "sessionId", "engineIP", "dataframeNumber", "createFromParquet") PARQUETFILEPATH_FIELD_NUMBER: _ClassVar[int] CATALOG_FIELD_NUMBER: _ClassVar[int] SCHEMA_FIELD_NUMBER: _ClassVar[int] + TABLE_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] ENGINEIP_FIELD_NUMBER: _ClassVar[int] - USERUUID_FIELD_NUMBER: _ClassVar[int] DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] + CREATEFROMPARQUET_FIELD_NUMBER: _ClassVar[int] parquetFilePath: str catalog: str schema: str + table: str sessionId: str engineIP: str - userUUID: str dataframeNumber: int - def __init__(self, parquetFilePath: _Optional[str] = ..., catalog: _Optional[str] = ..., schema: _Optional[str] = ..., sessionId: _Optional[str] = ..., engineIP: _Optional[str] = ..., userUUID: _Optional[str] = ..., dataframeNumber: _Optional[int] = ...) -> None: ... + createFromParquet: bool + def __init__(self, parquetFilePath: _Optional[str] = ..., catalog: _Optional[str] = ..., schema: _Optional[str] = ..., table: _Optional[str] = ..., sessionId: _Optional[str] = ..., engineIP: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., createFromParquet: bool = ...) -> None: ... class CreateDataFrameResponse(_message.Message): - __slots__ = ["queryId"] + __slots__ = ("queryId",) QUERYID_FIELD_NUMBER: _ClassVar[int] queryId: str def __init__(self, queryId: _Optional[str] = ...) -> None: ... class ProjectionOnDataFrameRequest(_message.Message): - __slots__ = ["userUUID", "queryId", "dataframeNumber", "sessionId", "field"] - USERUUID_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("queryId", "dataframeNumber", "sessionId", "field") QUERYID_FIELD_NUMBER: _ClassVar[int] DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] FIELD_FIELD_NUMBER: _ClassVar[int] - userUUID: str queryId: str dataframeNumber: int sessionId: str field: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, userUUID: _Optional[str] = ..., queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., field: _Optional[_Iterable[str]] = ...) -> None: ... + def __init__(self, queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., field: _Optional[_Iterable[str]] = ...) -> None: ... class ProjectionOnDataFrameResponse(_message.Message): - __slots__ = [] + __slots__ = () + def __init__(self) -> None: ... + +class ColumnAliasOnDataFrameRequest(_message.Message): + __slots__ = ("queryId", "dataframeNumber", "sessionId", "columnAliasMap") + class ColumnAliasMapEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... + QUERYID_FIELD_NUMBER: _ClassVar[int] + DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] + SESSIONID_FIELD_NUMBER: _ClassVar[int] + COLUMNALIASMAP_FIELD_NUMBER: _ClassVar[int] + queryId: str + dataframeNumber: int + sessionId: str + columnAliasMap: _containers.ScalarMap[str, str] + def __init__(self, queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., columnAliasMap: _Optional[_Mapping[str, str]] = ...) -> None: ... + +class ColumnAliasOnDataFrameResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class AggregateOnDataFrameRequest(_message.Message): + __slots__ = ("queryId", "dataframeNumber", "sessionId", "aggregateFunctionMap", "groupBy") + class AggregateFunctionMapEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: AggregateFunction + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[AggregateFunction, str]] = ...) -> None: ... + QUERYID_FIELD_NUMBER: _ClassVar[int] + DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] + SESSIONID_FIELD_NUMBER: _ClassVar[int] + AGGREGATEFUNCTIONMAP_FIELD_NUMBER: _ClassVar[int] + GROUPBY_FIELD_NUMBER: _ClassVar[int] + queryId: str + dataframeNumber: int + sessionId: str + aggregateFunctionMap: _containers.ScalarMap[str, AggregateFunction] + groupBy: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., aggregateFunctionMap: _Optional[_Mapping[str, AggregateFunction]] = ..., groupBy: _Optional[_Iterable[str]] = ...) -> None: ... + +class AggregateOnDataFrameResponse(_message.Message): + __slots__ = () def __init__(self) -> None: ... class FilterOnDataFrameRequest(_message.Message): - __slots__ = ["userUUID", "queryId", "dataframeNumber", "sessionId", "whereClause"] - USERUUID_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("queryId", "dataframeNumber", "sessionId", "whereClause") QUERYID_FIELD_NUMBER: _ClassVar[int] DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] WHERECLAUSE_FIELD_NUMBER: _ClassVar[int] - userUUID: str queryId: str dataframeNumber: int sessionId: str whereClause: str - def __init__(self, userUUID: _Optional[str] = ..., queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., whereClause: _Optional[str] = ...) -> None: ... + def __init__(self, queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., whereClause: _Optional[str] = ...) -> None: ... class FilterOnDataFrameResponse(_message.Message): - __slots__ = [] + __slots__ = () def __init__(self) -> None: ... class OrderByOnDataFrameRequest(_message.Message): - __slots__ = ["userUUID", "queryId", "dataframeNumber", "sessionId", "field", "sortDirection", "nullsDirection"] - USERUUID_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("queryId", "dataframeNumber", "sessionId", "orderByFieldMap") + class OrderByFieldMapEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: SortDirection + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[SortDirection, str]] = ...) -> None: ... QUERYID_FIELD_NUMBER: _ClassVar[int] DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] - FIELD_FIELD_NUMBER: _ClassVar[int] - SORTDIRECTION_FIELD_NUMBER: _ClassVar[int] - NULLSDIRECTION_FIELD_NUMBER: _ClassVar[int] - userUUID: str + ORDERBYFIELDMAP_FIELD_NUMBER: _ClassVar[int] queryId: str dataframeNumber: int sessionId: str - field: _containers.RepeatedScalarFieldContainer[str] - sortDirection: _containers.RepeatedScalarFieldContainer[SortDirection] - nullsDirection: _containers.RepeatedScalarFieldContainer[NullDirection] - def __init__(self, userUUID: _Optional[str] = ..., queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., field: _Optional[_Iterable[str]] = ..., sortDirection: _Optional[_Iterable[_Union[SortDirection, str]]] = ..., nullsDirection: _Optional[_Iterable[_Union[NullDirection, str]]] = ...) -> None: ... + orderByFieldMap: _containers.ScalarMap[str, SortDirection] + def __init__(self, queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., orderByFieldMap: _Optional[_Mapping[str, SortDirection]] = ...) -> None: ... class OrderByOnDataFrameResponse(_message.Message): - __slots__ = [] + __slots__ = () def __init__(self) -> None: ... class LimitOnDataFrameRequest(_message.Message): - __slots__ = ["userUUID", "queryId", "dataframeNumber", "sessionId", "fetchLimit"] - USERUUID_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("queryId", "dataframeNumber", "sessionId", "fetchLimit") QUERYID_FIELD_NUMBER: _ClassVar[int] DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] FETCHLIMIT_FIELD_NUMBER: _ClassVar[int] - userUUID: str queryId: str dataframeNumber: int sessionId: str fetchLimit: int - def __init__(self, userUUID: _Optional[str] = ..., queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., fetchLimit: _Optional[int] = ...) -> None: ... + def __init__(self, queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., fetchLimit: _Optional[int] = ...) -> None: ... class LimitOnDataFrameResponse(_message.Message): - __slots__ = [] + __slots__ = () def __init__(self) -> None: ... class ExecuteDataFrameRequest(_message.Message): - __slots__ = ["userUUID", "queryId", "dataframeNumber", "sessionId"] - USERUUID_FIELD_NUMBER: _ClassVar[int] + __slots__ = ("queryId", "dataframeNumber", "sessionId") QUERYID_FIELD_NUMBER: _ClassVar[int] DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] - userUUID: str queryId: str dataframeNumber: int sessionId: str - def __init__(self, userUUID: _Optional[str] = ..., queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ...) -> None: ... + def __init__(self, queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ...) -> None: ... class ExecuteDataFrameResponse(_message.Message): - __slots__ = [] + __slots__ = () def __init__(self) -> None: ... class DropUserContextRequest(_message.Message): - __slots__ = ["userUUID"] - USERUUID_FIELD_NUMBER: _ClassVar[int] - userUUID: str - def __init__(self, userUUID: _Optional[str] = ...) -> None: ... + __slots__ = ("sessionId",) + SESSIONID_FIELD_NUMBER: _ClassVar[int] + sessionId: str + def __init__(self, sessionId: _Optional[str] = ...) -> None: ... class DropUserContextResponse(_message.Message): - __slots__ = [] + __slots__ = () def __init__(self) -> None: ... diff --git a/e6data_python_connector/server/e6x_engine_pb2_grpc.py b/e6data_python_connector/server/e6x_engine_pb2_grpc.py index 4deb9e8..8c6f4b7 100644 --- a/e6data_python_connector/server/e6x_engine_pb2_grpc.py +++ b/e6data_python_connector/server/e6x_engine_pb2_grpc.py @@ -1,9 +1,33 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc - +import warnings import e6data_python_connector.server.e6x_engine_pb2 as e6x__engine__pb2 +GRPC_GENERATED_VERSION = '1.65.1' +GRPC_VERSION = grpc.__version__ +EXPECTED_ERROR_RELEASE = '1.66.0' +SCHEDULED_RELEASE_DATE = 'August 6, 2024' +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + warnings.warn( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in e6x_engine_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + + f' This warning will become an error in {EXPECTED_ERROR_RELEASE},' + + f' scheduled for release on {SCHEDULED_RELEASE_DATE}.', + RuntimeWarning + ) + class QueryEngineServiceStub(object): """Missing associated documentation comment in .proto file.""" @@ -18,182 +42,187 @@ def __init__(self, channel): '/QueryEngineService/clear', request_serializer=e6x__engine__pb2.ClearRequest.SerializeToString, response_deserializer=e6x__engine__pb2.ClearResponse.FromString, - ) + _registered_method=True) self.cancelQuery = channel.unary_unary( '/QueryEngineService/cancelQuery', request_serializer=e6x__engine__pb2.CancelQueryRequest.SerializeToString, response_deserializer=e6x__engine__pb2.CancelQueryResponse.FromString, - ) + _registered_method=True) self.clearOrCancelQuery = channel.unary_unary( '/QueryEngineService/clearOrCancelQuery', request_serializer=e6x__engine__pb2.ClearOrCancelQueryRequest.SerializeToString, response_deserializer=e6x__engine__pb2.ClearOrCancelQueryResponse.FromString, - ) + _registered_method=True) self.explain = channel.unary_unary( '/QueryEngineService/explain', request_serializer=e6x__engine__pb2.ExplainRequest.SerializeToString, response_deserializer=e6x__engine__pb2.ExplainResponse.FromString, - ) + _registered_method=True) self.dryRun = channel.unary_unary( '/QueryEngineService/dryRun', request_serializer=e6x__engine__pb2.DryRunRequest.SerializeToString, response_deserializer=e6x__engine__pb2.DryRunResponse.FromString, - ) + _registered_method=True) self.dryRunV2 = channel.unary_unary( '/QueryEngineService/dryRunV2', request_serializer=e6x__engine__pb2.DryRunRequestV2.SerializeToString, response_deserializer=e6x__engine__pb2.DryRunResponse.FromString, - ) + _registered_method=True) self.explainAnalyze = channel.unary_unary( '/QueryEngineService/explainAnalyze', request_serializer=e6x__engine__pb2.ExplainAnalyzeRequest.SerializeToString, response_deserializer=e6x__engine__pb2.ExplainAnalyzeResponse.FromString, - ) + _registered_method=True) self.prepareStatement = channel.unary_unary( '/QueryEngineService/prepareStatement', request_serializer=e6x__engine__pb2.PrepareStatementRequest.SerializeToString, response_deserializer=e6x__engine__pb2.PrepareStatementResponse.FromString, - ) + _registered_method=True) self.prepareStatementV2 = channel.unary_unary( '/QueryEngineService/prepareStatementV2', request_serializer=e6x__engine__pb2.PrepareStatementV2Request.SerializeToString, response_deserializer=e6x__engine__pb2.PrepareStatementResponse.FromString, - ) + _registered_method=True) self.executeStatement = channel.unary_unary( '/QueryEngineService/executeStatement', request_serializer=e6x__engine__pb2.ExecuteStatementRequest.SerializeToString, response_deserializer=e6x__engine__pb2.ExecuteStatementResponse.FromString, - ) + _registered_method=True) self.executeStatementV2 = channel.unary_unary( '/QueryEngineService/executeStatementV2', request_serializer=e6x__engine__pb2.ExecuteStatementV2Request.SerializeToString, response_deserializer=e6x__engine__pb2.ExecuteStatementResponse.FromString, - ) + _registered_method=True) self.getNextResultRow = channel.unary_unary( '/QueryEngineService/getNextResultRow', request_serializer=e6x__engine__pb2.GetNextResultRowRequest.SerializeToString, response_deserializer=e6x__engine__pb2.GetNextResultRowResponse.FromString, - ) + _registered_method=True) self.getNextResultBatch = channel.unary_unary( '/QueryEngineService/getNextResultBatch', request_serializer=e6x__engine__pb2.GetNextResultBatchRequest.SerializeToString, response_deserializer=e6x__engine__pb2.GetNextResultBatchResponse.FromString, - ) + _registered_method=True) self.getResultMetadata = channel.unary_unary( '/QueryEngineService/getResultMetadata', request_serializer=e6x__engine__pb2.GetResultMetadataRequest.SerializeToString, response_deserializer=e6x__engine__pb2.GetResultMetadataResponse.FromString, - ) + _registered_method=True) self.authenticate = channel.unary_unary( '/QueryEngineService/authenticate', request_serializer=e6x__engine__pb2.AuthenticateRequest.SerializeToString, response_deserializer=e6x__engine__pb2.AuthenticateResponse.FromString, - ) + _registered_method=True) self.getTables = channel.unary_unary( '/QueryEngineService/getTables', request_serializer=e6x__engine__pb2.GetTablesRequest.SerializeToString, response_deserializer=e6x__engine__pb2.GetTablesResponse.FromString, - ) + _registered_method=True) self.getTablesV2 = channel.unary_unary( '/QueryEngineService/getTablesV2', request_serializer=e6x__engine__pb2.GetTablesV2Request.SerializeToString, response_deserializer=e6x__engine__pb2.GetTablesResponse.FromString, - ) + _registered_method=True) self.getSchemaNames = channel.unary_unary( '/QueryEngineService/getSchemaNames', request_serializer=e6x__engine__pb2.GetSchemaNamesRequest.SerializeToString, response_deserializer=e6x__engine__pb2.GetSchemaNamesResponse.FromString, - ) + _registered_method=True) self.getSchemaNamesV2 = channel.unary_unary( '/QueryEngineService/getSchemaNamesV2', request_serializer=e6x__engine__pb2.GetSchemaNamesV2Request.SerializeToString, response_deserializer=e6x__engine__pb2.GetSchemaNamesResponse.FromString, - ) + _registered_method=True) self.getColumns = channel.unary_unary( '/QueryEngineService/getColumns', request_serializer=e6x__engine__pb2.GetColumnsRequest.SerializeToString, response_deserializer=e6x__engine__pb2.GetColumnsResponse.FromString, - ) + _registered_method=True) self.getColumnsV2 = channel.unary_unary( '/QueryEngineService/getColumnsV2', request_serializer=e6x__engine__pb2.GetColumnsV2Request.SerializeToString, response_deserializer=e6x__engine__pb2.GetColumnsResponse.FromString, - ) + _registered_method=True) self.updateUsers = channel.unary_unary( '/QueryEngineService/updateUsers', request_serializer=e6x__engine__pb2.UpdateUsersRequest.SerializeToString, response_deserializer=e6x__engine__pb2.UpdateUsersResponse.FromString, - ) + _registered_method=True) self.setProps = channel.unary_unary( '/QueryEngineService/setProps', request_serializer=e6x__engine__pb2.SetPropsRequest.SerializeToString, response_deserializer=e6x__engine__pb2.SetPropsResponse.FromString, - ) + _registered_method=True) self.status = channel.unary_unary( '/QueryEngineService/status', request_serializer=e6x__engine__pb2.StatusRequest.SerializeToString, response_deserializer=e6x__engine__pb2.StatusResponse.FromString, - ) + _registered_method=True) self.addCatalogs = channel.unary_unary( '/QueryEngineService/addCatalogs', request_serializer=e6x__engine__pb2.AddCatalogsRequest.SerializeToString, response_deserializer=e6x__engine__pb2.AddCatalogsResponse.FromString, - ) + _registered_method=True) self.getAddCatalogsResponse = channel.unary_unary( '/QueryEngineService/getAddCatalogsResponse', request_serializer=e6x__engine__pb2.GetAddCatalogsRequest.SerializeToString, response_deserializer=e6x__engine__pb2.GetAddCatalogsResponse.FromString, - ) + _registered_method=True) self.getCataloges = channel.unary_unary( '/QueryEngineService/getCataloges', request_serializer=e6x__engine__pb2.GetCatalogesRequest.SerializeToString, response_deserializer=e6x__engine__pb2.GetCatalogesResponse.FromString, - ) + _registered_method=True) self.getNextRemoteCachedChunk = channel.unary_unary( '/QueryEngineService/getNextRemoteCachedChunk', request_serializer=e6x__engine__pb2.RemoteChunkRequest.SerializeToString, response_deserializer=e6x__engine__pb2.RemoteChunkResponse.FromString, - ) + _registered_method=True) self.refreshCatalogs = channel.unary_unary( '/QueryEngineService/refreshCatalogs', request_serializer=e6x__engine__pb2.RefreshCatalogsRequest.SerializeToString, response_deserializer=e6x__engine__pb2.RefreshCatalogsResponse.FromString, - ) + _registered_method=True) self.createDataFrame = channel.unary_unary( '/QueryEngineService/createDataFrame', request_serializer=e6x__engine__pb2.CreateDataFrameRequest.SerializeToString, response_deserializer=e6x__engine__pb2.CreateDataFrameResponse.FromString, - ) + _registered_method=True) self.projectionOnDataFrame = channel.unary_unary( '/QueryEngineService/projectionOnDataFrame', request_serializer=e6x__engine__pb2.ProjectionOnDataFrameRequest.SerializeToString, response_deserializer=e6x__engine__pb2.ProjectionOnDataFrameResponse.FromString, - ) + _registered_method=True) + self.aggregateOnDataFrame = channel.unary_unary( + '/QueryEngineService/aggregateOnDataFrame', + request_serializer=e6x__engine__pb2.AggregateOnDataFrameRequest.SerializeToString, + response_deserializer=e6x__engine__pb2.AggregateOnDataFrameResponse.FromString, + _registered_method=True) self.filterOnDataFrame = channel.unary_unary( '/QueryEngineService/filterOnDataFrame', request_serializer=e6x__engine__pb2.FilterOnDataFrameRequest.SerializeToString, response_deserializer=e6x__engine__pb2.FilterOnDataFrameResponse.FromString, - ) + _registered_method=True) self.orderByOnDataFrame = channel.unary_unary( '/QueryEngineService/orderByOnDataFrame', request_serializer=e6x__engine__pb2.OrderByOnDataFrameRequest.SerializeToString, response_deserializer=e6x__engine__pb2.OrderByOnDataFrameResponse.FromString, - ) + _registered_method=True) self.limitOnDataFrame = channel.unary_unary( '/QueryEngineService/limitOnDataFrame', request_serializer=e6x__engine__pb2.LimitOnDataFrameRequest.SerializeToString, response_deserializer=e6x__engine__pb2.LimitOnDataFrameResponse.FromString, - ) + _registered_method=True) self.executeDataFrame = channel.unary_unary( '/QueryEngineService/executeDataFrame', request_serializer=e6x__engine__pb2.ExecuteDataFrameRequest.SerializeToString, response_deserializer=e6x__engine__pb2.ExecuteDataFrameResponse.FromString, - ) + _registered_method=True) self.dropUserContext = channel.unary_unary( '/QueryEngineService/dropUserContext', request_serializer=e6x__engine__pb2.DropUserContextRequest.SerializeToString, response_deserializer=e6x__engine__pb2.DropUserContextResponse.FromString, - ) + _registered_method=True) class QueryEngineServiceServicer(object): @@ -388,6 +417,12 @@ def projectionOnDataFrame(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def aggregateOnDataFrame(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def filterOnDataFrame(self, request, context): """Missing associated documentation comment in .proto file.""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) @@ -576,6 +611,11 @@ def add_QueryEngineServiceServicer_to_server(servicer, server): request_deserializer=e6x__engine__pb2.ProjectionOnDataFrameRequest.FromString, response_serializer=e6x__engine__pb2.ProjectionOnDataFrameResponse.SerializeToString, ), + 'aggregateOnDataFrame': grpc.unary_unary_rpc_method_handler( + servicer.aggregateOnDataFrame, + request_deserializer=e6x__engine__pb2.AggregateOnDataFrameRequest.FromString, + response_serializer=e6x__engine__pb2.AggregateOnDataFrameResponse.SerializeToString, + ), 'filterOnDataFrame': grpc.unary_unary_rpc_method_handler( servicer.filterOnDataFrame, request_deserializer=e6x__engine__pb2.FilterOnDataFrameRequest.FromString, @@ -605,6 +645,7 @@ def add_QueryEngineServiceServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'QueryEngineService', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('QueryEngineService', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. @@ -622,11 +663,21 @@ def clear(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/clear', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/clear', e6x__engine__pb2.ClearRequest.SerializeToString, e6x__engine__pb2.ClearResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def cancelQuery(request, @@ -639,11 +690,21 @@ def cancelQuery(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/cancelQuery', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/cancelQuery', e6x__engine__pb2.CancelQueryRequest.SerializeToString, e6x__engine__pb2.CancelQueryResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def clearOrCancelQuery(request, @@ -656,11 +717,21 @@ def clearOrCancelQuery(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/clearOrCancelQuery', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/clearOrCancelQuery', e6x__engine__pb2.ClearOrCancelQueryRequest.SerializeToString, e6x__engine__pb2.ClearOrCancelQueryResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def explain(request, @@ -673,11 +744,21 @@ def explain(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/explain', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/explain', e6x__engine__pb2.ExplainRequest.SerializeToString, e6x__engine__pb2.ExplainResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def dryRun(request, @@ -690,11 +771,21 @@ def dryRun(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/dryRun', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/dryRun', e6x__engine__pb2.DryRunRequest.SerializeToString, e6x__engine__pb2.DryRunResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def dryRunV2(request, @@ -707,11 +798,21 @@ def dryRunV2(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/dryRunV2', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/dryRunV2', e6x__engine__pb2.DryRunRequestV2.SerializeToString, e6x__engine__pb2.DryRunResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def explainAnalyze(request, @@ -724,11 +825,21 @@ def explainAnalyze(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/explainAnalyze', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/explainAnalyze', e6x__engine__pb2.ExplainAnalyzeRequest.SerializeToString, e6x__engine__pb2.ExplainAnalyzeResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def prepareStatement(request, @@ -741,11 +852,21 @@ def prepareStatement(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/prepareStatement', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/prepareStatement', e6x__engine__pb2.PrepareStatementRequest.SerializeToString, e6x__engine__pb2.PrepareStatementResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def prepareStatementV2(request, @@ -758,11 +879,21 @@ def prepareStatementV2(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/prepareStatementV2', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/prepareStatementV2', e6x__engine__pb2.PrepareStatementV2Request.SerializeToString, e6x__engine__pb2.PrepareStatementResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def executeStatement(request, @@ -775,11 +906,21 @@ def executeStatement(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/executeStatement', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/executeStatement', e6x__engine__pb2.ExecuteStatementRequest.SerializeToString, e6x__engine__pb2.ExecuteStatementResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def executeStatementV2(request, @@ -792,11 +933,21 @@ def executeStatementV2(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/executeStatementV2', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/executeStatementV2', e6x__engine__pb2.ExecuteStatementV2Request.SerializeToString, e6x__engine__pb2.ExecuteStatementResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def getNextResultRow(request, @@ -809,11 +960,21 @@ def getNextResultRow(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/getNextResultRow', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/getNextResultRow', e6x__engine__pb2.GetNextResultRowRequest.SerializeToString, e6x__engine__pb2.GetNextResultRowResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def getNextResultBatch(request, @@ -826,11 +987,21 @@ def getNextResultBatch(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/getNextResultBatch', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/getNextResultBatch', e6x__engine__pb2.GetNextResultBatchRequest.SerializeToString, e6x__engine__pb2.GetNextResultBatchResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def getResultMetadata(request, @@ -843,11 +1014,21 @@ def getResultMetadata(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/getResultMetadata', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/getResultMetadata', e6x__engine__pb2.GetResultMetadataRequest.SerializeToString, e6x__engine__pb2.GetResultMetadataResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def authenticate(request, @@ -860,11 +1041,21 @@ def authenticate(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/authenticate', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/authenticate', e6x__engine__pb2.AuthenticateRequest.SerializeToString, e6x__engine__pb2.AuthenticateResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def getTables(request, @@ -877,11 +1068,21 @@ def getTables(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/getTables', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/getTables', e6x__engine__pb2.GetTablesRequest.SerializeToString, e6x__engine__pb2.GetTablesResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def getTablesV2(request, @@ -894,11 +1095,21 @@ def getTablesV2(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/getTablesV2', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/getTablesV2', e6x__engine__pb2.GetTablesV2Request.SerializeToString, e6x__engine__pb2.GetTablesResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def getSchemaNames(request, @@ -911,11 +1122,21 @@ def getSchemaNames(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/getSchemaNames', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/getSchemaNames', e6x__engine__pb2.GetSchemaNamesRequest.SerializeToString, e6x__engine__pb2.GetSchemaNamesResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def getSchemaNamesV2(request, @@ -928,11 +1149,21 @@ def getSchemaNamesV2(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/getSchemaNamesV2', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/getSchemaNamesV2', e6x__engine__pb2.GetSchemaNamesV2Request.SerializeToString, e6x__engine__pb2.GetSchemaNamesResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def getColumns(request, @@ -945,11 +1176,21 @@ def getColumns(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/getColumns', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/getColumns', e6x__engine__pb2.GetColumnsRequest.SerializeToString, e6x__engine__pb2.GetColumnsResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def getColumnsV2(request, @@ -962,11 +1203,21 @@ def getColumnsV2(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/getColumnsV2', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/getColumnsV2', e6x__engine__pb2.GetColumnsV2Request.SerializeToString, e6x__engine__pb2.GetColumnsResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def updateUsers(request, @@ -979,11 +1230,21 @@ def updateUsers(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/updateUsers', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/updateUsers', e6x__engine__pb2.UpdateUsersRequest.SerializeToString, e6x__engine__pb2.UpdateUsersResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def setProps(request, @@ -996,11 +1257,21 @@ def setProps(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/setProps', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/setProps', e6x__engine__pb2.SetPropsRequest.SerializeToString, e6x__engine__pb2.SetPropsResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def status(request, @@ -1013,11 +1284,21 @@ def status(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/status', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/status', e6x__engine__pb2.StatusRequest.SerializeToString, e6x__engine__pb2.StatusResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def addCatalogs(request, @@ -1030,11 +1311,21 @@ def addCatalogs(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/addCatalogs', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/addCatalogs', e6x__engine__pb2.AddCatalogsRequest.SerializeToString, e6x__engine__pb2.AddCatalogsResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def getAddCatalogsResponse(request, @@ -1047,11 +1338,21 @@ def getAddCatalogsResponse(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/getAddCatalogsResponse', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/getAddCatalogsResponse', e6x__engine__pb2.GetAddCatalogsRequest.SerializeToString, e6x__engine__pb2.GetAddCatalogsResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def getCataloges(request, @@ -1064,11 +1365,21 @@ def getCataloges(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/getCataloges', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/getCataloges', e6x__engine__pb2.GetCatalogesRequest.SerializeToString, e6x__engine__pb2.GetCatalogesResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def getNextRemoteCachedChunk(request, @@ -1081,11 +1392,21 @@ def getNextRemoteCachedChunk(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/getNextRemoteCachedChunk', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/getNextRemoteCachedChunk', e6x__engine__pb2.RemoteChunkRequest.SerializeToString, e6x__engine__pb2.RemoteChunkResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def refreshCatalogs(request, @@ -1098,11 +1419,21 @@ def refreshCatalogs(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/refreshCatalogs', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/refreshCatalogs', e6x__engine__pb2.RefreshCatalogsRequest.SerializeToString, e6x__engine__pb2.RefreshCatalogsResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def createDataFrame(request, @@ -1115,11 +1446,21 @@ def createDataFrame(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/createDataFrame', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/createDataFrame', e6x__engine__pb2.CreateDataFrameRequest.SerializeToString, e6x__engine__pb2.CreateDataFrameResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def projectionOnDataFrame(request, @@ -1132,11 +1473,48 @@ def projectionOnDataFrame(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/projectionOnDataFrame', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/projectionOnDataFrame', e6x__engine__pb2.ProjectionOnDataFrameRequest.SerializeToString, e6x__engine__pb2.ProjectionOnDataFrameResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def aggregateOnDataFrame(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/aggregateOnDataFrame', + e6x__engine__pb2.AggregateOnDataFrameRequest.SerializeToString, + e6x__engine__pb2.AggregateOnDataFrameResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def filterOnDataFrame(request, @@ -1149,11 +1527,21 @@ def filterOnDataFrame(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/filterOnDataFrame', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/filterOnDataFrame', e6x__engine__pb2.FilterOnDataFrameRequest.SerializeToString, e6x__engine__pb2.FilterOnDataFrameResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def orderByOnDataFrame(request, @@ -1166,11 +1554,21 @@ def orderByOnDataFrame(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/orderByOnDataFrame', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/orderByOnDataFrame', e6x__engine__pb2.OrderByOnDataFrameRequest.SerializeToString, e6x__engine__pb2.OrderByOnDataFrameResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def limitOnDataFrame(request, @@ -1183,11 +1581,21 @@ def limitOnDataFrame(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/limitOnDataFrame', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/limitOnDataFrame', e6x__engine__pb2.LimitOnDataFrameRequest.SerializeToString, e6x__engine__pb2.LimitOnDataFrameResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def executeDataFrame(request, @@ -1200,11 +1608,21 @@ def executeDataFrame(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/executeDataFrame', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/executeDataFrame', e6x__engine__pb2.ExecuteDataFrameRequest.SerializeToString, e6x__engine__pb2.ExecuteDataFrameResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def dropUserContext(request, @@ -1217,8 +1635,18 @@ def dropUserContext(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/QueryEngineService/dropUserContext', + return grpc.experimental.unary_unary( + request, + target, + '/QueryEngineService/dropUserContext', e6x__engine__pb2.DropUserContextRequest.SerializeToString, e6x__engine__pb2.DropUserContextResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/e6x_engine.proto b/e6x_engine.proto index 81d6a99..3b381ad 100644 --- a/e6x_engine.proto +++ b/e6x_engine.proto @@ -304,10 +304,11 @@ message CreateDataFrameRequest string parquetFilePath = 1; string catalog = 2; string schema = 3; - string sessionId = 4; - string engineIP = 5; - string userUUID = 6; + string table = 4; + string sessionId = 5; + string engineIP = 6; int32 dataframeNumber = 7; + bool createFromParquet = 8; } message CreateDataFrameResponse @@ -317,23 +318,49 @@ message CreateDataFrameResponse message ProjectionOnDataFrameRequest { - string userUUID = 1; - string queryId = 2; - int32 dataframeNumber = 3; - string sessionId = 4; - repeated string field = 5; + string queryId = 1; + int32 dataframeNumber = 2; + string sessionId = 3; + repeated string field = 4; } message ProjectionOnDataFrameResponse {} +message ColumnAliasOnDataFrameRequest +{ + string queryId = 1; + int32 dataframeNumber = 2; + string sessionId = 3; + map columnAliasMap = 4; +} + +message ColumnAliasOnDataFrameResponse {} + +message AggregateOnDataFrameRequest +{ + string queryId = 1; + int32 dataframeNumber = 2; + string sessionId = 3; + map aggregateFunctionMap = 4; + repeated string groupBy = 5; +} + +enum AggregateFunction +{ + SUM = 0; + COUNT = 1; + COUNT_STAR = 2; + COUNT_DISTINCT = 3; +} + +message AggregateOnDataFrameResponse {} message FilterOnDataFrameRequest { - string userUUID = 1; - string queryId = 2; - int32 dataframeNumber = 3; - string sessionId = 4; - string whereClause = 5; + string queryId = 1; + int32 dataframeNumber = 2; + string sessionId = 3; + string whereClause = 4; } message FilterOnDataFrameResponse {} @@ -344,49 +371,38 @@ enum SortDirection DESC = 1; } -enum NullDirection -{ - FIRST = 0; - LAST = 1; -} - message OrderByOnDataFrameRequest { - string userUUID = 1; - string queryId = 2; - int32 dataframeNumber = 3; - string sessionId = 4; - repeated string field = 5; - repeated SortDirection sortDirection = 6; - repeated NullDirection nullsDirection = 7; + string queryId = 1; + int32 dataframeNumber = 2; + string sessionId = 3; + map orderByFieldMap = 4; } message OrderByOnDataFrameResponse {} message LimitOnDataFrameRequest { - string userUUID = 1; - string queryId = 2; - int32 dataframeNumber = 3; - string sessionId = 4; - int32 fetchLimit = 5; + string queryId = 1; + int32 dataframeNumber = 2; + string sessionId = 3; + int32 fetchLimit = 4; } message LimitOnDataFrameResponse {} message ExecuteDataFrameRequest { - string userUUID = 1; - string queryId = 2; - int32 dataframeNumber = 3; - string sessionId = 4; + string queryId = 1; + int32 dataframeNumber = 2; + string sessionId = 3; } message ExecuteDataFrameResponse {} message DropUserContextRequest { - string userUUID = 1; + string sessionId = 1; } message DropUserContextResponse {} @@ -456,6 +472,8 @@ service QueryEngineService { rpc projectionOnDataFrame(ProjectionOnDataFrameRequest) returns (ProjectionOnDataFrameResponse); + rpc aggregateOnDataFrame(AggregateOnDataFrameRequest) returns (AggregateOnDataFrameResponse); + rpc filterOnDataFrame(FilterOnDataFrameRequest) returns (FilterOnDataFrameResponse); rpc orderByOnDataFrame(OrderByOnDataFrameRequest) returns (OrderByOnDataFrameResponse); From ad0f5773af36a8b3aea065a374198452dcdc2ac1 Mon Sep 17 00:00:00 2001 From: Yash Date: Thu, 22 May 2025 20:29:51 +0530 Subject: [PATCH 9/9] changes for planner stickiness --- e6data_python_connector/e6data_grpc.py | 52 +++-- .../server/e6x_engine_pb2.py | 200 +++++++++--------- .../server/e6x_engine_pb2.pyi | 71 +++---- e6x_engine.proto | 33 +-- 4 files changed, 178 insertions(+), 178 deletions(-) diff --git a/e6data_python_connector/e6data_grpc.py b/e6data_python_connector/e6data_grpc.py index 0e478dc..4f6fe84 100644 --- a/e6data_python_connector/e6data_grpc.py +++ b/e6data_python_connector/e6data_grpc.py @@ -188,6 +188,8 @@ def __init__( self.cluster_uuid = cluster_uuid self._session_id = None self._host = host + # engine ip for stickiness + self._engine_ip = None self._port = port self._secure_channel = secure @@ -329,6 +331,7 @@ def get_session_id(self): metadata=_get_grpc_header(cluster=self.cluster_uuid) ) self._session_id = authenticate_response.sessionId + self._engine_ip = authenticate_response.engineIP else: raise e else: @@ -541,25 +544,23 @@ def cursor(self, catalog_name=None, db_name=None): return Cursor(self, database=db_name, catalog_name=catalog_name) def load_parquet(self, parquet_path) -> "DataFrame": - dataframe = DataFrame( - self, - file_path=parquet_path, - dataframe_number=self._dataframe_session.get_dataframe_number, - table_name=None - ) + dataframe = DataFrame(self, + file_path=parquet_path, + dataframe_number=self._dataframe_session.get_dataframe_number, + table_name=None, + engine_ip=self._engine_ip) self._dataframe_session.update_dataframe_map(dataframe=dataframe) return dataframe def load_table(self, table_name, database = None, catalog = None) -> "DataFrame": - dataframe = DataFrame( - self, - file_path=None, - dataframe_number=self._dataframe_session.get_dataframe_number, - table_name=table_name, - database=database, - catalog=catalog - ) + dataframe = DataFrame(self, + file_path=None, + dataframe_number=self._dataframe_session.get_dataframe_number, + table_name=table_name, + engine_ip=self._engine_ip, + database=database, + catalog=catalog) self._dataframe_session.update_dataframe_map(dataframe=dataframe) return dataframe @@ -1069,15 +1070,15 @@ def explain_analyse(self): class DataFrame: - def __init__(self, connection: Connection, file_path, dataframe_number, table_name, database = None, catalog = None): + def __init__(self, connection: Connection, file_path, dataframe_number, table_name, engine_ip, database = None, catalog = None): self._dataframe_number = dataframe_number self._connection = connection self._catalog = self._connection.catalog_name if catalog is None else catalog self._database = self._connection.database if database is None else database self._table_name = table_name self._file_path = file_path - self._engine_ip = connection.host self._sessionId = connection.get_session_id + self._engine_ip = engine_ip self._is_metadata_updated = False self._query_id = None self._data = None @@ -1113,6 +1114,7 @@ def select(self, *fields : str) -> "DataFrame": queryId=self._query_id, dataframeNumber=self._dataframe_number, sessionId=self._sessionId, + engineIP=self._engine_ip, field=projection_fields ) @@ -1146,6 +1148,7 @@ def get_agg_enum(function_name : str) -> AggregateFunction | None: queryId=self._query_id, dataframeNumber=self._dataframe_number, sessionId=self._sessionId, + engineIP=self._engine_ip, aggregateFunctionMap=agg_function_map, groupBy=group_by ) @@ -1160,6 +1163,7 @@ def where(self, where_clause : str) -> "DataFrame": queryId=self._query_id, dataframeNumber=self._dataframe_number, sessionId=self._sessionId, + engineIP=self._engine_ip, whereClause=where_clause ) @@ -1180,6 +1184,7 @@ def order_by(self, *field_list : str) -> "DataFrame": queryId=self._query_id, dataframeNumber=self._dataframe_number, sessionId=self._sessionId, + engineIP=self._engine_ip, orderByFieldMap=order_by_map ) @@ -1192,6 +1197,7 @@ def limit(self, fetch_limit : int) -> "DataFrame": queryId=self._query_id, dataframeNumber=self._dataframe_number, sessionId=self._sessionId, + engineIP=self._engine_ip, fetchLimit=fetch_limit ) @@ -1208,7 +1214,8 @@ def execute(self): execute_dataframe_request = e6x_engine_pb2.ExecuteDataFrameRequest( queryId=self._query_id, dataframeNumber=self._dataframe_number, - sessionId=self._sessionId + sessionId=self._sessionId, + engineIP=self._engine_ip, ) client.executeDataFrame(execute_dataframe_request) @@ -1255,11 +1262,13 @@ def fetchall(self): return rows class DataFrameSession: - def __init__(self, connection: Connection): + def __init__(self, connection: Connection, planner_ip): self._connection = connection self._dataframe_count = 0 self._dataframe_map = dict() self._is_terminated = False + self._session_id = connection.get_session_id + self._planner_ip = planner_ip def __exit__(self, exc_type, exc_val, exc_tb): self.terminate() @@ -1276,10 +1285,15 @@ def get_dataframe_number(self) -> int: def is_terminated(self) -> bool: return self._is_terminated + @property + def planner_ip(self): + return self._planner_ip + def terminate(self): if not self._is_terminated: drop_user_context_request = e6x_engine_pb2.DropUserContextRequest( - sessionId=self._connection.get_session_id + sessionId=self._session_id, + engineIP=self._planner_ip ) self._connection.client.dropUserContext(drop_user_context_request) diff --git a/e6data_python_connector/server/e6x_engine_pb2.py b/e6data_python_connector/server/e6x_engine_pb2.py index ea37609..ce1aaae 100644 --- a/e6data_python_connector/server/e6x_engine_pb2.py +++ b/e6data_python_connector/server/e6x_engine_pb2.py @@ -14,7 +14,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10\x65\x36x_engine.proto\"2\n\nGFieldInfo\x12\x11\n\tfieldName\x18\x01 \x01(\t\x12\x11\n\tfieldType\x18\x02 \x01(\t\"A\n\x13\x46\x61iledSchemaElement\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0e\n\x06reason\x18\x03 \x01(\t\"P\n\x16GetAddCatalogsResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\x12&\n\x08\x66\x61ilures\x18\x02 \x03(\x0b\x32\x14.FailedSchemaElement\"2\n\x0f\x43\x61talogResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tisDefault\x18\x02 \x01(\x08\"<\n\x0eParameterValue\x12\r\n\x05index\x18\x01 \x01(\x11\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\"D\n\x0c\x43learRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x0f\n\rClearResponse\"J\n\x12\x43\x61ncelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x15\n\x13\x43\x61ncelQueryResponse\"F\n\x0e\x45xplainRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\"\n\x0f\x45xplainResponse\x12\x0f\n\x07\x65xplain\x18\x01 \x01(\t\"Y\n\rDryRunRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\"%\n\x0e\x44ryRunResponse\x12\x13\n\x0b\x64ryrunValue\x18\x01 \x01(\t\"l\n\x0f\x44ryRunRequestV2\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x05 \x01(\t\"M\n\x15\x45xplainAnalyzeRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"m\n\x16\x45xplainAnalyzeResponse\x12\x16\n\x0e\x65xplainAnalyze\x18\x01 \x01(\t\x12\x10\n\x08isCached\x18\x02 \x01(\x08\x12\x13\n\x0bparsingTime\x18\x03 \x01(\x12\x12\x14\n\x0cqueueingTime\x18\x04 \x01(\x12\"b\n\x17PrepareStatementRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x13\n\x0bqueryString\x18\x03 \x01(\t\x12\x0f\n\x07quoting\x18\x04 \x01(\t\"u\n\x19PrepareStatementV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07quoting\x18\x05 \x01(\t\"=\n\x18PrepareStatementResponse\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\"@\n\x0eUserAccessInfo\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x10\n\x08userName\x18\x02 \x01(\t\x12\x0e\n\x06tokens\x18\x03 \x03(\t\"g\n\x17\x45xecuteStatementRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\"\x8a\x01\n\x19\x45xecuteStatementV2Request\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\x12\x1f\n\x06params\x18\x05 \x03(\x0b\x32\x0f.ParameterValue\"\x1a\n\x18\x45xecuteStatementResponse\"O\n\x17GetNextResultRowRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"-\n\x18GetNextResultRowResponse\x12\x11\n\tresultRow\x18\x02 \x01(\x0c\"w\n\x19GetNextResultBatchRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\tasRowData\x18\x04 \x01(\x08H\x00\x88\x01\x01\x42\x0c\n\n_asRowData\"1\n\x1aGetNextResultBatchResponse\x12\x13\n\x0bresultBatch\x18\x02 \x01(\x0c\"P\n\x18GetResultMetadataRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"3\n\x19GetResultMetadataResponse\x12\x16\n\x0eresultMetaData\x18\x01 \x01(\x0c\"5\n\x13\x41uthenticateRequest\x12\x0c\n\x04user\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\")\n\x14\x41uthenticateResponse\x12\x11\n\tsessionId\x18\x01 \x01(\t\"5\n\x10GetTablesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\"H\n\x12GetTablesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\"#\n\x11GetTablesResponse\x12\x0e\n\x06tables\x18\x01 \x03(\t\"*\n\x15GetSchemaNamesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"=\n\x17GetSchemaNamesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\")\n\x16GetSchemaNamesResponse\x12\x0f\n\x07schemas\x18\x01 \x03(\t\"E\n\x11GetColumnsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\"X\n\x13GetColumnsV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x04 \x01(\t\"4\n\x12GetColumnsResponse\x12\x1e\n\tfieldInfo\x18\x01 \x03(\x0b\x32\x0b.GFieldInfo\"E\n\rStatusRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"2\n\x0eStatusResponse\x12\x0e\n\x06status\x18\x02 \x01(\x08\x12\x10\n\x08rowCount\x18\x03 \x01(\x12\"5\n\x12\x41\x64\x64\x43\x61talogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0c\n\x04json\x18\x02 \x01(\t\"#\n\x12UpdateUsersRequest\x12\r\n\x05users\x18\x01 \x01(\x0c\"\x15\n\x13UpdateUsersResponse\"3\n\x0fSetPropsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\r\n\x05props\x18\x02 \x01(\t\"\x12\n\x10SetPropsResponse\"*\n\x15GetAddCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x15\n\x13\x41\x64\x64\x43\x61talogsResponse\"\x15\n\x13GetCatalogesRequest\"B\n\x14GetCatalogesResponse\x12*\n\x10\x63\x61talogResponses\x18\x01 \x03(\x0b\x32\x10.CatalogResponse\"+\n\x16RefreshCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x19\n\x17RefreshCatalogsResponse\"X\n\x12RemoteChunkRequest\x12\x17\n\x0foriginalQueryId\x18\x01 \x01(\t\x12\x15\n\rremoteQueryId\x18\x02 \x01(\t\x12\x12\n\nsQueryHash\x18\x03 \x01(\t\"3\n\x13RemoteChunkResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\r\n\x05\x63hunk\x18\x02 \x01(\x0c\"Q\n\x19\x43learOrCancelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x1c\n\x1a\x43learOrCancelQueryResponse\"\xba\x01\n\x16\x43reateDataFrameRequest\x12\x17\n\x0fparquetFilePath\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\r\n\x05table\x18\x04 \x01(\t\x12\x11\n\tsessionId\x18\x05 \x01(\t\x12\x10\n\x08\x65ngineIP\x18\x06 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x07 \x01(\x05\x12\x19\n\x11\x63reateFromParquet\x18\x08 \x01(\x08\"*\n\x17\x43reateDataFrameResponse\x12\x0f\n\x07queryId\x18\x01 \x01(\t\"j\n\x1cProjectionOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x02 \x01(\x05\x12\x11\n\tsessionId\x18\x03 \x01(\t\x12\r\n\x05\x66ield\x18\x04 \x03(\t\"\x1f\n\x1dProjectionOnDataFrameResponse\"\xdf\x01\n\x1d\x43olumnAliasOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x02 \x01(\x05\x12\x11\n\tsessionId\x18\x03 \x01(\t\x12J\n\x0e\x63olumnAliasMap\x18\x04 \x03(\x0b\x32\x32.ColumnAliasOnDataFrameRequest.ColumnAliasMapEntry\x1a\x35\n\x13\x43olumnAliasMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\" \n\x1e\x43olumnAliasOnDataFrameResponse\"\x92\x02\n\x1b\x41ggregateOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x02 \x01(\x05\x12\x11\n\tsessionId\x18\x03 \x01(\t\x12T\n\x14\x61ggregateFunctionMap\x18\x04 \x03(\x0b\x32\x36.AggregateOnDataFrameRequest.AggregateFunctionMapEntry\x12\x0f\n\x07groupBy\x18\x05 \x03(\t\x1aO\n\x19\x41ggregateFunctionMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0e\x32\x12.AggregateFunction:\x02\x38\x01\"\x1e\n\x1c\x41ggregateOnDataFrameResponse\"l\n\x18\x46ilterOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x02 \x01(\x05\x12\x11\n\tsessionId\x18\x03 \x01(\t\x12\x13\n\x0bwhereClause\x18\x04 \x01(\t\"\x1b\n\x19\x46ilterOnDataFrameResponse\"\xea\x01\n\x19OrderByOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x02 \x01(\x05\x12\x11\n\tsessionId\x18\x03 \x01(\t\x12H\n\x0forderByFieldMap\x18\x04 \x03(\x0b\x32/.OrderByOnDataFrameRequest.OrderByFieldMapEntry\x1a\x46\n\x14OrderByFieldMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1d\n\x05value\x18\x02 \x01(\x0e\x32\x0e.SortDirection:\x02\x38\x01\"\x1c\n\x1aOrderByOnDataFrameResponse\"j\n\x17LimitOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x02 \x01(\x05\x12\x11\n\tsessionId\x18\x03 \x01(\t\x12\x12\n\nfetchLimit\x18\x04 \x01(\x05\"\x1a\n\x18LimitOnDataFrameResponse\"V\n\x17\x45xecuteDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x02 \x01(\x05\x12\x11\n\tsessionId\x18\x03 \x01(\t\"\x1a\n\x18\x45xecuteDataFrameResponse\"+\n\x16\x44ropUserContextRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x19\n\x17\x44ropUserContextResponse*K\n\x11\x41ggregateFunction\x12\x07\n\x03SUM\x10\x00\x12\t\n\x05\x43OUNT\x10\x01\x12\x0e\n\nCOUNT_STAR\x10\x02\x12\x12\n\x0e\x43OUNT_DISTINCT\x10\x03*\"\n\rSortDirection\x12\x07\n\x03\x41SC\x10\x00\x12\x08\n\x04\x44\x45SC\x10\x01\x32\x90\x13\n\x12QueryEngineService\x12&\n\x05\x63lear\x12\r.ClearRequest\x1a\x0e.ClearResponse\x12\x38\n\x0b\x63\x61ncelQuery\x12\x13.CancelQueryRequest\x1a\x14.CancelQueryResponse\x12M\n\x12\x63learOrCancelQuery\x12\x1a.ClearOrCancelQueryRequest\x1a\x1b.ClearOrCancelQueryResponse\x12,\n\x07\x65xplain\x12\x0f.ExplainRequest\x1a\x10.ExplainResponse\x12)\n\x06\x64ryRun\x12\x0e.DryRunRequest\x1a\x0f.DryRunResponse\x12-\n\x08\x64ryRunV2\x12\x10.DryRunRequestV2\x1a\x0f.DryRunResponse\x12\x41\n\x0e\x65xplainAnalyze\x12\x16.ExplainAnalyzeRequest\x1a\x17.ExplainAnalyzeResponse\x12G\n\x10prepareStatement\x12\x18.PrepareStatementRequest\x1a\x19.PrepareStatementResponse\x12K\n\x12prepareStatementV2\x12\x1a.PrepareStatementV2Request\x1a\x19.PrepareStatementResponse\x12G\n\x10\x65xecuteStatement\x12\x18.ExecuteStatementRequest\x1a\x19.ExecuteStatementResponse\x12K\n\x12\x65xecuteStatementV2\x12\x1a.ExecuteStatementV2Request\x1a\x19.ExecuteStatementResponse\x12G\n\x10getNextResultRow\x12\x18.GetNextResultRowRequest\x1a\x19.GetNextResultRowResponse\x12M\n\x12getNextResultBatch\x12\x1a.GetNextResultBatchRequest\x1a\x1b.GetNextResultBatchResponse\x12J\n\x11getResultMetadata\x12\x19.GetResultMetadataRequest\x1a\x1a.GetResultMetadataResponse\x12;\n\x0c\x61uthenticate\x12\x14.AuthenticateRequest\x1a\x15.AuthenticateResponse\x12\x32\n\tgetTables\x12\x11.GetTablesRequest\x1a\x12.GetTablesResponse\x12\x36\n\x0bgetTablesV2\x12\x13.GetTablesV2Request\x1a\x12.GetTablesResponse\x12\x41\n\x0egetSchemaNames\x12\x16.GetSchemaNamesRequest\x1a\x17.GetSchemaNamesResponse\x12\x45\n\x10getSchemaNamesV2\x12\x18.GetSchemaNamesV2Request\x1a\x17.GetSchemaNamesResponse\x12\x35\n\ngetColumns\x12\x12.GetColumnsRequest\x1a\x13.GetColumnsResponse\x12\x39\n\x0cgetColumnsV2\x12\x14.GetColumnsV2Request\x1a\x13.GetColumnsResponse\x12\x38\n\x0bupdateUsers\x12\x13.UpdateUsersRequest\x1a\x14.UpdateUsersResponse\x12/\n\x08setProps\x12\x10.SetPropsRequest\x1a\x11.SetPropsResponse\x12)\n\x06status\x12\x0e.StatusRequest\x1a\x0f.StatusResponse\x12\x38\n\x0b\x61\x64\x64\x43\x61talogs\x12\x13.AddCatalogsRequest\x1a\x14.AddCatalogsResponse\x12I\n\x16getAddCatalogsResponse\x12\x16.GetAddCatalogsRequest\x1a\x17.GetAddCatalogsResponse\x12;\n\x0cgetCataloges\x12\x14.GetCatalogesRequest\x1a\x15.GetCatalogesResponse\x12\x45\n\x18getNextRemoteCachedChunk\x12\x13.RemoteChunkRequest\x1a\x14.RemoteChunkResponse\x12\x44\n\x0frefreshCatalogs\x12\x17.RefreshCatalogsRequest\x1a\x18.RefreshCatalogsResponse\x12\x44\n\x0f\x63reateDataFrame\x12\x17.CreateDataFrameRequest\x1a\x18.CreateDataFrameResponse\x12V\n\x15projectionOnDataFrame\x12\x1d.ProjectionOnDataFrameRequest\x1a\x1e.ProjectionOnDataFrameResponse\x12S\n\x14\x61ggregateOnDataFrame\x12\x1c.AggregateOnDataFrameRequest\x1a\x1d.AggregateOnDataFrameResponse\x12J\n\x11\x66ilterOnDataFrame\x12\x19.FilterOnDataFrameRequest\x1a\x1a.FilterOnDataFrameResponse\x12M\n\x12orderByOnDataFrame\x12\x1a.OrderByOnDataFrameRequest\x1a\x1b.OrderByOnDataFrameResponse\x12G\n\x10limitOnDataFrame\x12\x18.LimitOnDataFrameRequest\x1a\x19.LimitOnDataFrameResponse\x12G\n\x10\x65xecuteDataFrame\x12\x18.ExecuteDataFrameRequest\x1a\x19.ExecuteDataFrameResponse\x12\x44\n\x0f\x64ropUserContext\x12\x17.DropUserContextRequest\x1a\x18.DropUserContextResponseB\x02P\x01\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10\x65\x36x_engine.proto\"2\n\nGFieldInfo\x12\x11\n\tfieldName\x18\x01 \x01(\t\x12\x11\n\tfieldType\x18\x02 \x01(\t\"A\n\x13\x46\x61iledSchemaElement\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0e\n\x06reason\x18\x03 \x01(\t\"P\n\x16GetAddCatalogsResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\x12&\n\x08\x66\x61ilures\x18\x02 \x03(\x0b\x32\x14.FailedSchemaElement\"2\n\x0f\x43\x61talogResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tisDefault\x18\x02 \x01(\x08\"<\n\x0eParameterValue\x12\r\n\x05index\x18\x01 \x01(\x11\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\"D\n\x0c\x43learRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x0f\n\rClearResponse\"J\n\x12\x43\x61ncelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x15\n\x13\x43\x61ncelQueryResponse\"F\n\x0e\x45xplainRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\"\n\x0f\x45xplainResponse\x12\x0f\n\x07\x65xplain\x18\x01 \x01(\t\"Y\n\rDryRunRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\"%\n\x0e\x44ryRunResponse\x12\x13\n\x0b\x64ryrunValue\x18\x01 \x01(\t\"l\n\x0f\x44ryRunRequestV2\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x05 \x01(\t\"M\n\x15\x45xplainAnalyzeRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"m\n\x16\x45xplainAnalyzeResponse\x12\x16\n\x0e\x65xplainAnalyze\x18\x01 \x01(\t\x12\x10\n\x08isCached\x18\x02 \x01(\x08\x12\x13\n\x0bparsingTime\x18\x03 \x01(\x12\x12\x14\n\x0cqueueingTime\x18\x04 \x01(\x12\"b\n\x17PrepareStatementRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x13\n\x0bqueryString\x18\x03 \x01(\t\x12\x0f\n\x07quoting\x18\x04 \x01(\t\"u\n\x19PrepareStatementV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\x12\x13\n\x0bqueryString\x18\x04 \x01(\t\x12\x0f\n\x07quoting\x18\x05 \x01(\t\"=\n\x18PrepareStatementResponse\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x0f\n\x07queryId\x18\x02 \x01(\t\"@\n\x0eUserAccessInfo\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x10\n\x08userName\x18\x02 \x01(\t\x12\x0e\n\x06tokens\x18\x03 \x03(\t\"g\n\x17\x45xecuteStatementRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\"\x8a\x01\n\x19\x45xecuteStatementV2Request\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\x0eshouldNotCache\x18\x04 \x01(\x08\x12\x1f\n\x06params\x18\x05 \x03(\x0b\x32\x0f.ParameterValue\"\x1a\n\x18\x45xecuteStatementResponse\"O\n\x17GetNextResultRowRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"-\n\x18GetNextResultRowResponse\x12\x11\n\tresultRow\x18\x02 \x01(\x0c\"w\n\x19GetNextResultBatchRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\x12\x16\n\tasRowData\x18\x04 \x01(\x08H\x00\x88\x01\x01\x42\x0c\n\n_asRowData\"1\n\x1aGetNextResultBatchResponse\x12\x13\n\x0bresultBatch\x18\x02 \x01(\x0c\"P\n\x18GetResultMetadataRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"3\n\x19GetResultMetadataResponse\x12\x16\n\x0eresultMetaData\x18\x01 \x01(\x0c\"5\n\x13\x41uthenticateRequest\x12\x0c\n\x04user\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\";\n\x14\x41uthenticateResponse\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x10\n\x08\x65ngineIP\x18\x02 \x01(\t\"5\n\x10GetTablesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\"H\n\x12GetTablesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x03 \x01(\t\"#\n\x11GetTablesResponse\x12\x0e\n\x06tables\x18\x01 \x03(\t\"*\n\x15GetSchemaNamesRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"=\n\x17GetSchemaNamesV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\")\n\x16GetSchemaNamesResponse\x12\x0f\n\x07schemas\x18\x01 \x03(\t\"E\n\x11GetColumnsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\"X\n\x13GetColumnsV2Request\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0e\n\x06schema\x18\x02 \x01(\t\x12\r\n\x05table\x18\x03 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x04 \x01(\t\"4\n\x12GetColumnsResponse\x12\x1e\n\tfieldInfo\x18\x01 \x03(\x0b\x32\x0b.GFieldInfo\"E\n\rStatusRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"2\n\x0eStatusResponse\x12\x0e\n\x06status\x18\x02 \x01(\x08\x12\x10\n\x08rowCount\x18\x03 \x01(\x12\"5\n\x12\x41\x64\x64\x43\x61talogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x0c\n\x04json\x18\x02 \x01(\t\"#\n\x12UpdateUsersRequest\x12\r\n\x05users\x18\x01 \x01(\x0c\"\x15\n\x13UpdateUsersResponse\"3\n\x0fSetPropsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\r\n\x05props\x18\x02 \x01(\t\"\x12\n\x10SetPropsResponse\"*\n\x15GetAddCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x15\n\x13\x41\x64\x64\x43\x61talogsResponse\"\x15\n\x13GetCatalogesRequest\"B\n\x14GetCatalogesResponse\x12*\n\x10\x63\x61talogResponses\x18\x01 \x03(\x0b\x32\x10.CatalogResponse\"+\n\x16RefreshCatalogsRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\"\x19\n\x17RefreshCatalogsResponse\"X\n\x12RemoteChunkRequest\x12\x17\n\x0foriginalQueryId\x18\x01 \x01(\t\x12\x15\n\rremoteQueryId\x18\x02 \x01(\t\x12\x12\n\nsQueryHash\x18\x03 \x01(\t\"3\n\x13RemoteChunkResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\r\n\x05\x63hunk\x18\x02 \x01(\x0c\"Q\n\x19\x43learOrCancelQueryRequest\x12\x10\n\x08\x65ngineIP\x18\x01 \x01(\t\x12\x11\n\tsessionId\x18\x02 \x01(\t\x12\x0f\n\x07queryId\x18\x03 \x01(\t\"\x1c\n\x1a\x43learOrCancelQueryResponse\"\xba\x01\n\x16\x43reateDataFrameRequest\x12\x17\n\x0fparquetFilePath\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61talog\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\r\n\x05table\x18\x04 \x01(\t\x12\x11\n\tsessionId\x18\x05 \x01(\t\x12\x10\n\x08\x65ngineIP\x18\x06 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x07 \x01(\x05\x12\x19\n\x11\x63reateFromParquet\x18\x08 \x01(\x08\"*\n\x17\x43reateDataFrameResponse\x12\x0f\n\x07queryId\x18\x01 \x01(\t\"|\n\x1cProjectionOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x02 \x01(\x05\x12\x11\n\tsessionId\x18\x03 \x01(\t\x12\x10\n\x08\x65ngineIP\x18\x04 \x01(\t\x12\r\n\x05\x66ield\x18\x05 \x03(\t\"\x1f\n\x1dProjectionOnDataFrameResponse\"\xa4\x02\n\x1b\x41ggregateOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x02 \x01(\x05\x12\x11\n\tsessionId\x18\x03 \x01(\t\x12\x10\n\x08\x65ngineIP\x18\x04 \x01(\t\x12T\n\x14\x61ggregateFunctionMap\x18\x05 \x03(\x0b\x32\x36.AggregateOnDataFrameRequest.AggregateFunctionMapEntry\x12\x0f\n\x07groupBy\x18\x06 \x03(\t\x1aO\n\x19\x41ggregateFunctionMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0e\x32\x12.AggregateFunction:\x02\x38\x01\"\x1e\n\x1c\x41ggregateOnDataFrameResponse\"~\n\x18\x46ilterOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x02 \x01(\x05\x12\x11\n\tsessionId\x18\x03 \x01(\t\x12\x10\n\x08\x65ngineIP\x18\x04 \x01(\t\x12\x13\n\x0bwhereClause\x18\x05 \x01(\t\"\x1b\n\x19\x46ilterOnDataFrameResponse\"\xfc\x01\n\x19OrderByOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x02 \x01(\x05\x12\x11\n\tsessionId\x18\x03 \x01(\t\x12\x10\n\x08\x65ngineIP\x18\x04 \x01(\t\x12H\n\x0forderByFieldMap\x18\x05 \x03(\x0b\x32/.OrderByOnDataFrameRequest.OrderByFieldMapEntry\x1a\x46\n\x14OrderByFieldMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1d\n\x05value\x18\x02 \x01(\x0e\x32\x0e.SortDirection:\x02\x38\x01\"\x1c\n\x1aOrderByOnDataFrameResponse\"|\n\x17LimitOnDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x02 \x01(\x05\x12\x11\n\tsessionId\x18\x03 \x01(\t\x12\x10\n\x08\x65ngineIP\x18\x04 \x01(\t\x12\x12\n\nfetchLimit\x18\x05 \x01(\x05\"\x1a\n\x18LimitOnDataFrameResponse\"h\n\x17\x45xecuteDataFrameRequest\x12\x0f\n\x07queryId\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x61taframeNumber\x18\x02 \x01(\x05\x12\x11\n\tsessionId\x18\x03 \x01(\t\x12\x10\n\x08\x65ngineIP\x18\x04 \x01(\t\"\x1a\n\x18\x45xecuteDataFrameResponse\"=\n\x16\x44ropUserContextRequest\x12\x11\n\tsessionId\x18\x01 \x01(\t\x12\x10\n\x08\x65ngineIP\x18\x02 \x01(\t\"\x19\n\x17\x44ropUserContextResponse*K\n\x11\x41ggregateFunction\x12\x07\n\x03SUM\x10\x00\x12\t\n\x05\x43OUNT\x10\x01\x12\x0e\n\nCOUNT_STAR\x10\x02\x12\x12\n\x0e\x43OUNT_DISTINCT\x10\x03*\"\n\rSortDirection\x12\x07\n\x03\x41SC\x10\x00\x12\x08\n\x04\x44\x45SC\x10\x01\x32\x90\x13\n\x12QueryEngineService\x12&\n\x05\x63lear\x12\r.ClearRequest\x1a\x0e.ClearResponse\x12\x38\n\x0b\x63\x61ncelQuery\x12\x13.CancelQueryRequest\x1a\x14.CancelQueryResponse\x12M\n\x12\x63learOrCancelQuery\x12\x1a.ClearOrCancelQueryRequest\x1a\x1b.ClearOrCancelQueryResponse\x12,\n\x07\x65xplain\x12\x0f.ExplainRequest\x1a\x10.ExplainResponse\x12)\n\x06\x64ryRun\x12\x0e.DryRunRequest\x1a\x0f.DryRunResponse\x12-\n\x08\x64ryRunV2\x12\x10.DryRunRequestV2\x1a\x0f.DryRunResponse\x12\x41\n\x0e\x65xplainAnalyze\x12\x16.ExplainAnalyzeRequest\x1a\x17.ExplainAnalyzeResponse\x12G\n\x10prepareStatement\x12\x18.PrepareStatementRequest\x1a\x19.PrepareStatementResponse\x12K\n\x12prepareStatementV2\x12\x1a.PrepareStatementV2Request\x1a\x19.PrepareStatementResponse\x12G\n\x10\x65xecuteStatement\x12\x18.ExecuteStatementRequest\x1a\x19.ExecuteStatementResponse\x12K\n\x12\x65xecuteStatementV2\x12\x1a.ExecuteStatementV2Request\x1a\x19.ExecuteStatementResponse\x12G\n\x10getNextResultRow\x12\x18.GetNextResultRowRequest\x1a\x19.GetNextResultRowResponse\x12M\n\x12getNextResultBatch\x12\x1a.GetNextResultBatchRequest\x1a\x1b.GetNextResultBatchResponse\x12J\n\x11getResultMetadata\x12\x19.GetResultMetadataRequest\x1a\x1a.GetResultMetadataResponse\x12;\n\x0c\x61uthenticate\x12\x14.AuthenticateRequest\x1a\x15.AuthenticateResponse\x12\x32\n\tgetTables\x12\x11.GetTablesRequest\x1a\x12.GetTablesResponse\x12\x36\n\x0bgetTablesV2\x12\x13.GetTablesV2Request\x1a\x12.GetTablesResponse\x12\x41\n\x0egetSchemaNames\x12\x16.GetSchemaNamesRequest\x1a\x17.GetSchemaNamesResponse\x12\x45\n\x10getSchemaNamesV2\x12\x18.GetSchemaNamesV2Request\x1a\x17.GetSchemaNamesResponse\x12\x35\n\ngetColumns\x12\x12.GetColumnsRequest\x1a\x13.GetColumnsResponse\x12\x39\n\x0cgetColumnsV2\x12\x14.GetColumnsV2Request\x1a\x13.GetColumnsResponse\x12\x38\n\x0bupdateUsers\x12\x13.UpdateUsersRequest\x1a\x14.UpdateUsersResponse\x12/\n\x08setProps\x12\x10.SetPropsRequest\x1a\x11.SetPropsResponse\x12)\n\x06status\x12\x0e.StatusRequest\x1a\x0f.StatusResponse\x12\x38\n\x0b\x61\x64\x64\x43\x61talogs\x12\x13.AddCatalogsRequest\x1a\x14.AddCatalogsResponse\x12I\n\x16getAddCatalogsResponse\x12\x16.GetAddCatalogsRequest\x1a\x17.GetAddCatalogsResponse\x12;\n\x0cgetCataloges\x12\x14.GetCatalogesRequest\x1a\x15.GetCatalogesResponse\x12\x45\n\x18getNextRemoteCachedChunk\x12\x13.RemoteChunkRequest\x1a\x14.RemoteChunkResponse\x12\x44\n\x0frefreshCatalogs\x12\x17.RefreshCatalogsRequest\x1a\x18.RefreshCatalogsResponse\x12\x44\n\x0f\x63reateDataFrame\x12\x17.CreateDataFrameRequest\x1a\x18.CreateDataFrameResponse\x12V\n\x15projectionOnDataFrame\x12\x1d.ProjectionOnDataFrameRequest\x1a\x1e.ProjectionOnDataFrameResponse\x12S\n\x14\x61ggregateOnDataFrame\x12\x1c.AggregateOnDataFrameRequest\x1a\x1d.AggregateOnDataFrameResponse\x12J\n\x11\x66ilterOnDataFrame\x12\x19.FilterOnDataFrameRequest\x1a\x1a.FilterOnDataFrameResponse\x12M\n\x12orderByOnDataFrame\x12\x1a.OrderByOnDataFrameRequest\x1a\x1b.OrderByOnDataFrameResponse\x12G\n\x10limitOnDataFrame\x12\x18.LimitOnDataFrameRequest\x1a\x19.LimitOnDataFrameResponse\x12G\n\x10\x65xecuteDataFrame\x12\x18.ExecuteDataFrameRequest\x1a\x19.ExecuteDataFrameResponse\x12\x44\n\x0f\x64ropUserContext\x12\x17.DropUserContextRequest\x1a\x18.DropUserContextResponseB\x02P\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -22,16 +22,14 @@ if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'P\001' - _globals['_COLUMNALIASONDATAFRAMEREQUEST_COLUMNALIASMAPENTRY']._loaded_options = None - _globals['_COLUMNALIASONDATAFRAMEREQUEST_COLUMNALIASMAPENTRY']._serialized_options = b'8\001' _globals['_AGGREGATEONDATAFRAMEREQUEST_AGGREGATEFUNCTIONMAPENTRY']._loaded_options = None _globals['_AGGREGATEONDATAFRAMEREQUEST_AGGREGATEFUNCTIONMAPENTRY']._serialized_options = b'8\001' _globals['_ORDERBYONDATAFRAMEREQUEST_ORDERBYFIELDMAPENTRY']._loaded_options = None _globals['_ORDERBYONDATAFRAMEREQUEST_ORDERBYFIELDMAPENTRY']._serialized_options = b'8\001' - _globals['_AGGREGATEFUNCTION']._serialized_start=5215 - _globals['_AGGREGATEFUNCTION']._serialized_end=5290 - _globals['_SORTDIRECTION']._serialized_start=5292 - _globals['_SORTDIRECTION']._serialized_end=5326 + _globals['_AGGREGATEFUNCTION']._serialized_start=5099 + _globals['_AGGREGATEFUNCTION']._serialized_end=5174 + _globals['_SORTDIRECTION']._serialized_start=5176 + _globals['_SORTDIRECTION']._serialized_end=5210 _globals['_GFIELDINFO']._serialized_start=20 _globals['_GFIELDINFO']._serialized_end=70 _globals['_FAILEDSCHEMAELEMENT']._serialized_start=72 @@ -93,101 +91,95 @@ _globals['_AUTHENTICATEREQUEST']._serialized_start=2116 _globals['_AUTHENTICATEREQUEST']._serialized_end=2169 _globals['_AUTHENTICATERESPONSE']._serialized_start=2171 - _globals['_AUTHENTICATERESPONSE']._serialized_end=2212 - _globals['_GETTABLESREQUEST']._serialized_start=2214 - _globals['_GETTABLESREQUEST']._serialized_end=2267 - _globals['_GETTABLESV2REQUEST']._serialized_start=2269 - _globals['_GETTABLESV2REQUEST']._serialized_end=2341 - _globals['_GETTABLESRESPONSE']._serialized_start=2343 - _globals['_GETTABLESRESPONSE']._serialized_end=2378 - _globals['_GETSCHEMANAMESREQUEST']._serialized_start=2380 - _globals['_GETSCHEMANAMESREQUEST']._serialized_end=2422 - _globals['_GETSCHEMANAMESV2REQUEST']._serialized_start=2424 - _globals['_GETSCHEMANAMESV2REQUEST']._serialized_end=2485 - _globals['_GETSCHEMANAMESRESPONSE']._serialized_start=2487 - _globals['_GETSCHEMANAMESRESPONSE']._serialized_end=2528 - _globals['_GETCOLUMNSREQUEST']._serialized_start=2530 - _globals['_GETCOLUMNSREQUEST']._serialized_end=2599 - _globals['_GETCOLUMNSV2REQUEST']._serialized_start=2601 - _globals['_GETCOLUMNSV2REQUEST']._serialized_end=2689 - _globals['_GETCOLUMNSRESPONSE']._serialized_start=2691 - _globals['_GETCOLUMNSRESPONSE']._serialized_end=2743 - _globals['_STATUSREQUEST']._serialized_start=2745 - _globals['_STATUSREQUEST']._serialized_end=2814 - _globals['_STATUSRESPONSE']._serialized_start=2816 - _globals['_STATUSRESPONSE']._serialized_end=2866 - _globals['_ADDCATALOGSREQUEST']._serialized_start=2868 - _globals['_ADDCATALOGSREQUEST']._serialized_end=2921 - _globals['_UPDATEUSERSREQUEST']._serialized_start=2923 - _globals['_UPDATEUSERSREQUEST']._serialized_end=2958 - _globals['_UPDATEUSERSRESPONSE']._serialized_start=2960 - _globals['_UPDATEUSERSRESPONSE']._serialized_end=2981 - _globals['_SETPROPSREQUEST']._serialized_start=2983 - _globals['_SETPROPSREQUEST']._serialized_end=3034 - _globals['_SETPROPSRESPONSE']._serialized_start=3036 - _globals['_SETPROPSRESPONSE']._serialized_end=3054 - _globals['_GETADDCATALOGSREQUEST']._serialized_start=3056 - _globals['_GETADDCATALOGSREQUEST']._serialized_end=3098 - _globals['_ADDCATALOGSRESPONSE']._serialized_start=3100 - _globals['_ADDCATALOGSRESPONSE']._serialized_end=3121 - _globals['_GETCATALOGESREQUEST']._serialized_start=3123 - _globals['_GETCATALOGESREQUEST']._serialized_end=3144 - _globals['_GETCATALOGESRESPONSE']._serialized_start=3146 - _globals['_GETCATALOGESRESPONSE']._serialized_end=3212 - _globals['_REFRESHCATALOGSREQUEST']._serialized_start=3214 - _globals['_REFRESHCATALOGSREQUEST']._serialized_end=3257 - _globals['_REFRESHCATALOGSRESPONSE']._serialized_start=3259 - _globals['_REFRESHCATALOGSRESPONSE']._serialized_end=3284 - _globals['_REMOTECHUNKREQUEST']._serialized_start=3286 - _globals['_REMOTECHUNKREQUEST']._serialized_end=3374 - _globals['_REMOTECHUNKRESPONSE']._serialized_start=3376 - _globals['_REMOTECHUNKRESPONSE']._serialized_end=3427 - _globals['_CLEARORCANCELQUERYREQUEST']._serialized_start=3429 - _globals['_CLEARORCANCELQUERYREQUEST']._serialized_end=3510 - _globals['_CLEARORCANCELQUERYRESPONSE']._serialized_start=3512 - _globals['_CLEARORCANCELQUERYRESPONSE']._serialized_end=3540 - _globals['_CREATEDATAFRAMEREQUEST']._serialized_start=3543 - _globals['_CREATEDATAFRAMEREQUEST']._serialized_end=3729 - _globals['_CREATEDATAFRAMERESPONSE']._serialized_start=3731 - _globals['_CREATEDATAFRAMERESPONSE']._serialized_end=3773 - _globals['_PROJECTIONONDATAFRAMEREQUEST']._serialized_start=3775 - _globals['_PROJECTIONONDATAFRAMEREQUEST']._serialized_end=3881 - _globals['_PROJECTIONONDATAFRAMERESPONSE']._serialized_start=3883 - _globals['_PROJECTIONONDATAFRAMERESPONSE']._serialized_end=3914 - _globals['_COLUMNALIASONDATAFRAMEREQUEST']._serialized_start=3917 - _globals['_COLUMNALIASONDATAFRAMEREQUEST']._serialized_end=4140 - _globals['_COLUMNALIASONDATAFRAMEREQUEST_COLUMNALIASMAPENTRY']._serialized_start=4087 - _globals['_COLUMNALIASONDATAFRAMEREQUEST_COLUMNALIASMAPENTRY']._serialized_end=4140 - _globals['_COLUMNALIASONDATAFRAMERESPONSE']._serialized_start=4142 - _globals['_COLUMNALIASONDATAFRAMERESPONSE']._serialized_end=4174 - _globals['_AGGREGATEONDATAFRAMEREQUEST']._serialized_start=4177 - _globals['_AGGREGATEONDATAFRAMEREQUEST']._serialized_end=4451 - _globals['_AGGREGATEONDATAFRAMEREQUEST_AGGREGATEFUNCTIONMAPENTRY']._serialized_start=4372 - _globals['_AGGREGATEONDATAFRAMEREQUEST_AGGREGATEFUNCTIONMAPENTRY']._serialized_end=4451 - _globals['_AGGREGATEONDATAFRAMERESPONSE']._serialized_start=4453 - _globals['_AGGREGATEONDATAFRAMERESPONSE']._serialized_end=4483 - _globals['_FILTERONDATAFRAMEREQUEST']._serialized_start=4485 - _globals['_FILTERONDATAFRAMEREQUEST']._serialized_end=4593 - _globals['_FILTERONDATAFRAMERESPONSE']._serialized_start=4595 - _globals['_FILTERONDATAFRAMERESPONSE']._serialized_end=4622 - _globals['_ORDERBYONDATAFRAMEREQUEST']._serialized_start=4625 - _globals['_ORDERBYONDATAFRAMEREQUEST']._serialized_end=4859 - _globals['_ORDERBYONDATAFRAMEREQUEST_ORDERBYFIELDMAPENTRY']._serialized_start=4789 - _globals['_ORDERBYONDATAFRAMEREQUEST_ORDERBYFIELDMAPENTRY']._serialized_end=4859 - _globals['_ORDERBYONDATAFRAMERESPONSE']._serialized_start=4861 - _globals['_ORDERBYONDATAFRAMERESPONSE']._serialized_end=4889 - _globals['_LIMITONDATAFRAMEREQUEST']._serialized_start=4891 - _globals['_LIMITONDATAFRAMEREQUEST']._serialized_end=4997 - _globals['_LIMITONDATAFRAMERESPONSE']._serialized_start=4999 - _globals['_LIMITONDATAFRAMERESPONSE']._serialized_end=5025 - _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_start=5027 - _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_end=5113 - _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_start=5115 - _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_end=5141 - _globals['_DROPUSERCONTEXTREQUEST']._serialized_start=5143 - _globals['_DROPUSERCONTEXTREQUEST']._serialized_end=5186 - _globals['_DROPUSERCONTEXTRESPONSE']._serialized_start=5188 - _globals['_DROPUSERCONTEXTRESPONSE']._serialized_end=5213 - _globals['_QUERYENGINESERVICE']._serialized_start=5329 - _globals['_QUERYENGINESERVICE']._serialized_end=7777 + _globals['_AUTHENTICATERESPONSE']._serialized_end=2230 + _globals['_GETTABLESREQUEST']._serialized_start=2232 + _globals['_GETTABLESREQUEST']._serialized_end=2285 + _globals['_GETTABLESV2REQUEST']._serialized_start=2287 + _globals['_GETTABLESV2REQUEST']._serialized_end=2359 + _globals['_GETTABLESRESPONSE']._serialized_start=2361 + _globals['_GETTABLESRESPONSE']._serialized_end=2396 + _globals['_GETSCHEMANAMESREQUEST']._serialized_start=2398 + _globals['_GETSCHEMANAMESREQUEST']._serialized_end=2440 + _globals['_GETSCHEMANAMESV2REQUEST']._serialized_start=2442 + _globals['_GETSCHEMANAMESV2REQUEST']._serialized_end=2503 + _globals['_GETSCHEMANAMESRESPONSE']._serialized_start=2505 + _globals['_GETSCHEMANAMESRESPONSE']._serialized_end=2546 + _globals['_GETCOLUMNSREQUEST']._serialized_start=2548 + _globals['_GETCOLUMNSREQUEST']._serialized_end=2617 + _globals['_GETCOLUMNSV2REQUEST']._serialized_start=2619 + _globals['_GETCOLUMNSV2REQUEST']._serialized_end=2707 + _globals['_GETCOLUMNSRESPONSE']._serialized_start=2709 + _globals['_GETCOLUMNSRESPONSE']._serialized_end=2761 + _globals['_STATUSREQUEST']._serialized_start=2763 + _globals['_STATUSREQUEST']._serialized_end=2832 + _globals['_STATUSRESPONSE']._serialized_start=2834 + _globals['_STATUSRESPONSE']._serialized_end=2884 + _globals['_ADDCATALOGSREQUEST']._serialized_start=2886 + _globals['_ADDCATALOGSREQUEST']._serialized_end=2939 + _globals['_UPDATEUSERSREQUEST']._serialized_start=2941 + _globals['_UPDATEUSERSREQUEST']._serialized_end=2976 + _globals['_UPDATEUSERSRESPONSE']._serialized_start=2978 + _globals['_UPDATEUSERSRESPONSE']._serialized_end=2999 + _globals['_SETPROPSREQUEST']._serialized_start=3001 + _globals['_SETPROPSREQUEST']._serialized_end=3052 + _globals['_SETPROPSRESPONSE']._serialized_start=3054 + _globals['_SETPROPSRESPONSE']._serialized_end=3072 + _globals['_GETADDCATALOGSREQUEST']._serialized_start=3074 + _globals['_GETADDCATALOGSREQUEST']._serialized_end=3116 + _globals['_ADDCATALOGSRESPONSE']._serialized_start=3118 + _globals['_ADDCATALOGSRESPONSE']._serialized_end=3139 + _globals['_GETCATALOGESREQUEST']._serialized_start=3141 + _globals['_GETCATALOGESREQUEST']._serialized_end=3162 + _globals['_GETCATALOGESRESPONSE']._serialized_start=3164 + _globals['_GETCATALOGESRESPONSE']._serialized_end=3230 + _globals['_REFRESHCATALOGSREQUEST']._serialized_start=3232 + _globals['_REFRESHCATALOGSREQUEST']._serialized_end=3275 + _globals['_REFRESHCATALOGSRESPONSE']._serialized_start=3277 + _globals['_REFRESHCATALOGSRESPONSE']._serialized_end=3302 + _globals['_REMOTECHUNKREQUEST']._serialized_start=3304 + _globals['_REMOTECHUNKREQUEST']._serialized_end=3392 + _globals['_REMOTECHUNKRESPONSE']._serialized_start=3394 + _globals['_REMOTECHUNKRESPONSE']._serialized_end=3445 + _globals['_CLEARORCANCELQUERYREQUEST']._serialized_start=3447 + _globals['_CLEARORCANCELQUERYREQUEST']._serialized_end=3528 + _globals['_CLEARORCANCELQUERYRESPONSE']._serialized_start=3530 + _globals['_CLEARORCANCELQUERYRESPONSE']._serialized_end=3558 + _globals['_CREATEDATAFRAMEREQUEST']._serialized_start=3561 + _globals['_CREATEDATAFRAMEREQUEST']._serialized_end=3747 + _globals['_CREATEDATAFRAMERESPONSE']._serialized_start=3749 + _globals['_CREATEDATAFRAMERESPONSE']._serialized_end=3791 + _globals['_PROJECTIONONDATAFRAMEREQUEST']._serialized_start=3793 + _globals['_PROJECTIONONDATAFRAMEREQUEST']._serialized_end=3917 + _globals['_PROJECTIONONDATAFRAMERESPONSE']._serialized_start=3919 + _globals['_PROJECTIONONDATAFRAMERESPONSE']._serialized_end=3950 + _globals['_AGGREGATEONDATAFRAMEREQUEST']._serialized_start=3953 + _globals['_AGGREGATEONDATAFRAMEREQUEST']._serialized_end=4245 + _globals['_AGGREGATEONDATAFRAMEREQUEST_AGGREGATEFUNCTIONMAPENTRY']._serialized_start=4166 + _globals['_AGGREGATEONDATAFRAMEREQUEST_AGGREGATEFUNCTIONMAPENTRY']._serialized_end=4245 + _globals['_AGGREGATEONDATAFRAMERESPONSE']._serialized_start=4247 + _globals['_AGGREGATEONDATAFRAMERESPONSE']._serialized_end=4277 + _globals['_FILTERONDATAFRAMEREQUEST']._serialized_start=4279 + _globals['_FILTERONDATAFRAMEREQUEST']._serialized_end=4405 + _globals['_FILTERONDATAFRAMERESPONSE']._serialized_start=4407 + _globals['_FILTERONDATAFRAMERESPONSE']._serialized_end=4434 + _globals['_ORDERBYONDATAFRAMEREQUEST']._serialized_start=4437 + _globals['_ORDERBYONDATAFRAMEREQUEST']._serialized_end=4689 + _globals['_ORDERBYONDATAFRAMEREQUEST_ORDERBYFIELDMAPENTRY']._serialized_start=4619 + _globals['_ORDERBYONDATAFRAMEREQUEST_ORDERBYFIELDMAPENTRY']._serialized_end=4689 + _globals['_ORDERBYONDATAFRAMERESPONSE']._serialized_start=4691 + _globals['_ORDERBYONDATAFRAMERESPONSE']._serialized_end=4719 + _globals['_LIMITONDATAFRAMEREQUEST']._serialized_start=4721 + _globals['_LIMITONDATAFRAMEREQUEST']._serialized_end=4845 + _globals['_LIMITONDATAFRAMERESPONSE']._serialized_start=4847 + _globals['_LIMITONDATAFRAMERESPONSE']._serialized_end=4873 + _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_start=4875 + _globals['_EXECUTEDATAFRAMEREQUEST']._serialized_end=4979 + _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_start=4981 + _globals['_EXECUTEDATAFRAMERESPONSE']._serialized_end=5007 + _globals['_DROPUSERCONTEXTREQUEST']._serialized_start=5009 + _globals['_DROPUSERCONTEXTREQUEST']._serialized_end=5070 + _globals['_DROPUSERCONTEXTRESPONSE']._serialized_start=5072 + _globals['_DROPUSERCONTEXTRESPONSE']._serialized_end=5097 + _globals['_QUERYENGINESERVICE']._serialized_start=5213 + _globals['_QUERYENGINESERVICE']._serialized_end=7661 # @@protoc_insertion_point(module_scope) diff --git a/e6data_python_connector/server/e6x_engine_pb2.pyi b/e6data_python_connector/server/e6x_engine_pb2.pyi index 1daf725..68b3310 100644 --- a/e6data_python_connector/server/e6x_engine_pb2.pyi +++ b/e6data_python_connector/server/e6x_engine_pb2.pyi @@ -299,10 +299,12 @@ class AuthenticateRequest(_message.Message): def __init__(self, user: _Optional[str] = ..., password: _Optional[str] = ...) -> None: ... class AuthenticateResponse(_message.Message): - __slots__ = ("sessionId",) + __slots__ = ("sessionId", "engineIP") SESSIONID_FIELD_NUMBER: _ClassVar[int] + ENGINEIP_FIELD_NUMBER: _ClassVar[int] sessionId: str - def __init__(self, sessionId: _Optional[str] = ...) -> None: ... + engineIP: str + def __init__(self, sessionId: _Optional[str] = ..., engineIP: _Optional[str] = ...) -> None: ... class GetTablesRequest(_message.Message): __slots__ = ("sessionId", "schema") @@ -513,46 +515,25 @@ class CreateDataFrameResponse(_message.Message): def __init__(self, queryId: _Optional[str] = ...) -> None: ... class ProjectionOnDataFrameRequest(_message.Message): - __slots__ = ("queryId", "dataframeNumber", "sessionId", "field") + __slots__ = ("queryId", "dataframeNumber", "sessionId", "engineIP", "field") QUERYID_FIELD_NUMBER: _ClassVar[int] DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] + ENGINEIP_FIELD_NUMBER: _ClassVar[int] FIELD_FIELD_NUMBER: _ClassVar[int] queryId: str dataframeNumber: int sessionId: str + engineIP: str field: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., field: _Optional[_Iterable[str]] = ...) -> None: ... + def __init__(self, queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., engineIP: _Optional[str] = ..., field: _Optional[_Iterable[str]] = ...) -> None: ... class ProjectionOnDataFrameResponse(_message.Message): __slots__ = () def __init__(self) -> None: ... -class ColumnAliasOnDataFrameRequest(_message.Message): - __slots__ = ("queryId", "dataframeNumber", "sessionId", "columnAliasMap") - class ColumnAliasMapEntry(_message.Message): - __slots__ = ("key", "value") - KEY_FIELD_NUMBER: _ClassVar[int] - VALUE_FIELD_NUMBER: _ClassVar[int] - key: str - value: str - def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... - QUERYID_FIELD_NUMBER: _ClassVar[int] - DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] - SESSIONID_FIELD_NUMBER: _ClassVar[int] - COLUMNALIASMAP_FIELD_NUMBER: _ClassVar[int] - queryId: str - dataframeNumber: int - sessionId: str - columnAliasMap: _containers.ScalarMap[str, str] - def __init__(self, queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., columnAliasMap: _Optional[_Mapping[str, str]] = ...) -> None: ... - -class ColumnAliasOnDataFrameResponse(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - class AggregateOnDataFrameRequest(_message.Message): - __slots__ = ("queryId", "dataframeNumber", "sessionId", "aggregateFunctionMap", "groupBy") + __slots__ = ("queryId", "dataframeNumber", "sessionId", "engineIP", "aggregateFunctionMap", "groupBy") class AggregateFunctionMapEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -563,37 +544,41 @@ class AggregateOnDataFrameRequest(_message.Message): QUERYID_FIELD_NUMBER: _ClassVar[int] DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] + ENGINEIP_FIELD_NUMBER: _ClassVar[int] AGGREGATEFUNCTIONMAP_FIELD_NUMBER: _ClassVar[int] GROUPBY_FIELD_NUMBER: _ClassVar[int] queryId: str dataframeNumber: int sessionId: str + engineIP: str aggregateFunctionMap: _containers.ScalarMap[str, AggregateFunction] groupBy: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., aggregateFunctionMap: _Optional[_Mapping[str, AggregateFunction]] = ..., groupBy: _Optional[_Iterable[str]] = ...) -> None: ... + def __init__(self, queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., engineIP: _Optional[str] = ..., aggregateFunctionMap: _Optional[_Mapping[str, AggregateFunction]] = ..., groupBy: _Optional[_Iterable[str]] = ...) -> None: ... class AggregateOnDataFrameResponse(_message.Message): __slots__ = () def __init__(self) -> None: ... class FilterOnDataFrameRequest(_message.Message): - __slots__ = ("queryId", "dataframeNumber", "sessionId", "whereClause") + __slots__ = ("queryId", "dataframeNumber", "sessionId", "engineIP", "whereClause") QUERYID_FIELD_NUMBER: _ClassVar[int] DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] + ENGINEIP_FIELD_NUMBER: _ClassVar[int] WHERECLAUSE_FIELD_NUMBER: _ClassVar[int] queryId: str dataframeNumber: int sessionId: str + engineIP: str whereClause: str - def __init__(self, queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., whereClause: _Optional[str] = ...) -> None: ... + def __init__(self, queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., engineIP: _Optional[str] = ..., whereClause: _Optional[str] = ...) -> None: ... class FilterOnDataFrameResponse(_message.Message): __slots__ = () def __init__(self) -> None: ... class OrderByOnDataFrameRequest(_message.Message): - __slots__ = ("queryId", "dataframeNumber", "sessionId", "orderByFieldMap") + __slots__ = ("queryId", "dataframeNumber", "sessionId", "engineIP", "orderByFieldMap") class OrderByFieldMapEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -604,52 +589,60 @@ class OrderByOnDataFrameRequest(_message.Message): QUERYID_FIELD_NUMBER: _ClassVar[int] DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] + ENGINEIP_FIELD_NUMBER: _ClassVar[int] ORDERBYFIELDMAP_FIELD_NUMBER: _ClassVar[int] queryId: str dataframeNumber: int sessionId: str + engineIP: str orderByFieldMap: _containers.ScalarMap[str, SortDirection] - def __init__(self, queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., orderByFieldMap: _Optional[_Mapping[str, SortDirection]] = ...) -> None: ... + def __init__(self, queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., engineIP: _Optional[str] = ..., orderByFieldMap: _Optional[_Mapping[str, SortDirection]] = ...) -> None: ... class OrderByOnDataFrameResponse(_message.Message): __slots__ = () def __init__(self) -> None: ... class LimitOnDataFrameRequest(_message.Message): - __slots__ = ("queryId", "dataframeNumber", "sessionId", "fetchLimit") + __slots__ = ("queryId", "dataframeNumber", "sessionId", "engineIP", "fetchLimit") QUERYID_FIELD_NUMBER: _ClassVar[int] DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] + ENGINEIP_FIELD_NUMBER: _ClassVar[int] FETCHLIMIT_FIELD_NUMBER: _ClassVar[int] queryId: str dataframeNumber: int sessionId: str + engineIP: str fetchLimit: int - def __init__(self, queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., fetchLimit: _Optional[int] = ...) -> None: ... + def __init__(self, queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., engineIP: _Optional[str] = ..., fetchLimit: _Optional[int] = ...) -> None: ... class LimitOnDataFrameResponse(_message.Message): __slots__ = () def __init__(self) -> None: ... class ExecuteDataFrameRequest(_message.Message): - __slots__ = ("queryId", "dataframeNumber", "sessionId") + __slots__ = ("queryId", "dataframeNumber", "sessionId", "engineIP") QUERYID_FIELD_NUMBER: _ClassVar[int] DATAFRAMENUMBER_FIELD_NUMBER: _ClassVar[int] SESSIONID_FIELD_NUMBER: _ClassVar[int] + ENGINEIP_FIELD_NUMBER: _ClassVar[int] queryId: str dataframeNumber: int sessionId: str - def __init__(self, queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ...) -> None: ... + engineIP: str + def __init__(self, queryId: _Optional[str] = ..., dataframeNumber: _Optional[int] = ..., sessionId: _Optional[str] = ..., engineIP: _Optional[str] = ...) -> None: ... class ExecuteDataFrameResponse(_message.Message): __slots__ = () def __init__(self) -> None: ... class DropUserContextRequest(_message.Message): - __slots__ = ("sessionId",) + __slots__ = ("sessionId", "engineIP") SESSIONID_FIELD_NUMBER: _ClassVar[int] + ENGINEIP_FIELD_NUMBER: _ClassVar[int] sessionId: str - def __init__(self, sessionId: _Optional[str] = ...) -> None: ... + engineIP: str + def __init__(self, sessionId: _Optional[str] = ..., engineIP: _Optional[str] = ...) -> None: ... class DropUserContextResponse(_message.Message): __slots__ = () diff --git a/e6x_engine.proto b/e6x_engine.proto index 3b381ad..16c158e 100644 --- a/e6x_engine.proto +++ b/e6x_engine.proto @@ -174,8 +174,12 @@ message AuthenticateRequest{ string password = 2; } +// passing session IP as a session and session objects are local to planner +// session is per connection not per statement +// so to maintain stickiness in planner we will send session and the planner IP from which session is created message AuthenticateResponse{ string sessionId = 1; + string engineIP = 2; } message GetTablesRequest{ @@ -321,28 +325,20 @@ message ProjectionOnDataFrameRequest string queryId = 1; int32 dataframeNumber = 2; string sessionId = 3; - repeated string field = 4; + string engineIP = 4; + repeated string field = 5; } message ProjectionOnDataFrameResponse {} -message ColumnAliasOnDataFrameRequest -{ - string queryId = 1; - int32 dataframeNumber = 2; - string sessionId = 3; - map columnAliasMap = 4; -} - -message ColumnAliasOnDataFrameResponse {} - message AggregateOnDataFrameRequest { string queryId = 1; int32 dataframeNumber = 2; string sessionId = 3; - map aggregateFunctionMap = 4; - repeated string groupBy = 5; + string engineIP = 4; + map aggregateFunctionMap = 5; + repeated string groupBy = 6; } enum AggregateFunction @@ -360,7 +356,8 @@ message FilterOnDataFrameRequest string queryId = 1; int32 dataframeNumber = 2; string sessionId = 3; - string whereClause = 4; + string engineIP = 4; + string whereClause = 5; } message FilterOnDataFrameResponse {} @@ -376,7 +373,8 @@ message OrderByOnDataFrameRequest string queryId = 1; int32 dataframeNumber = 2; string sessionId = 3; - map orderByFieldMap = 4; + string engineIP = 4; + map orderByFieldMap = 5; } message OrderByOnDataFrameResponse {} @@ -386,7 +384,8 @@ message LimitOnDataFrameRequest string queryId = 1; int32 dataframeNumber = 2; string sessionId = 3; - int32 fetchLimit = 4; + string engineIP = 4; + int32 fetchLimit = 5; } message LimitOnDataFrameResponse {} @@ -396,6 +395,7 @@ message ExecuteDataFrameRequest string queryId = 1; int32 dataframeNumber = 2; string sessionId = 3; + string engineIP = 4; } message ExecuteDataFrameResponse {} @@ -403,6 +403,7 @@ message ExecuteDataFrameResponse {} message DropUserContextRequest { string sessionId = 1; + string engineIP = 2; } message DropUserContextResponse {}