e6data-python-connector 2.2.3rc1__tar.gz → 2.2.3rc4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. {e6data_python_connector-2.2.3rc1/e6data_python_connector.egg-info → e6data_python_connector-2.2.3rc4}/PKG-INFO +2 -2
  2. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/README.md +1 -1
  3. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/cluster_manager.py +6 -0
  4. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/e6data_grpc.py +71 -35
  5. e6data_python_connector-2.2.3rc4/e6data_python_connector/server/e6x_engine_pb2.py +140 -0
  6. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/server/e6x_engine_pb2.pyi +59 -63
  7. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/server/e6x_engine_pb2_grpc.py +116 -432
  8. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4/e6data_python_connector.egg-info}/PKG-INFO +2 -2
  9. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/setup.py +1 -1
  10. e6data_python_connector-2.2.3rc1/e6data_python_connector/server/e6x_engine_pb2.py +0 -141
  11. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/LICENSE +0 -0
  12. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/MANIFEST.in +0 -0
  13. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/__init__.py +0 -0
  14. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/cluster_server/__init__.py +0 -0
  15. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/cluster_server/cluster_pb2.py +0 -0
  16. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/cluster_server/cluster_pb2_grpc.py +0 -0
  17. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/common.py +0 -0
  18. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/constants.py +0 -0
  19. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/datainputstream.py +0 -0
  20. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/date_time_utils.py +0 -0
  21. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/dialect.py +0 -0
  22. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/e6x_vector/__init__.py +0 -0
  23. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/e6x_vector/constants.py +0 -0
  24. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/e6x_vector/ttypes.py +0 -0
  25. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/exceptions.py +0 -0
  26. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/server/QueryEngineService.py +0 -0
  27. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/server/__init__.py +0 -0
  28. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/server/constants.py +0 -0
  29. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/server/ttypes.py +0 -0
  30. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector/typeId.py +0 -0
  31. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector.egg-info/SOURCES.txt +0 -0
  32. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector.egg-info/dependency_links.txt +0 -0
  33. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector.egg-info/entry_points.txt +0 -0
  34. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector.egg-info/requires.txt +0 -0
  35. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/e6data_python_connector.egg-info/top_level.txt +0 -0
  36. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/pyproject.toml +0 -0
  37. {e6data_python_connector-2.2.3rc1 → e6data_python_connector-2.2.3rc4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: e6data-python-connector
3
- Version: 2.2.3rc1
3
+ Version: 2.2.3rc4
4
4
  Summary: Client for the e6data distributed SQL Engine.
5
5
  Home-page: https://github.com/e6x-labs/e6data-python-connector
6
6
  Author: e6data, Inc.
@@ -38,7 +38,7 @@ Dynamic: summary
38
38
 
39
39
  # e6data Python Connector
40
40
 
41
- ![version](https://img.shields.io/badge/version-2.2.3.rc1-blue.svg)
41
+ ![version](https://img.shields.io/badge/version-2.2.3rc4-blue.svg)
42
42
 
43
43
  ## Introduction
44
44
 
@@ -1,6 +1,6 @@
1
1
  # e6data Python Connector
2
2
 
3
- ![version](https://img.shields.io/badge/version-2.2.3.rc1-blue.svg)
3
+ ![version](https://img.shields.io/badge/version-2.2.3rc4-blue.svg)
4
4
 
5
5
  ## Introduction
6
6
 
@@ -220,6 +220,7 @@ class ClusterManager:
220
220
  payload,
221
221
  metadata=_get_grpc_header(cluster=self.cluster_uuid)
222
222
  )
223
+ print(f'Cluster resume response: {response}')
223
224
  elif current_status.status == 'active':
224
225
  return True
225
226
  elif current_status.status != 'resuming':
@@ -227,6 +228,7 @@ class ClusterManager:
227
228
  If cluster cannot be resumed due to its current state,
228
229
  or already in a process of resuming, terminate the operation.
229
230
  """
231
+ print(f'Cluster is not suspended status, raising error.')
230
232
  return False
231
233
 
232
234
  # Wait for the cluster to become active
@@ -240,12 +242,16 @@ class ClusterManager:
240
242
  status_payload,
241
243
  metadata=_get_grpc_header(cluster=self.cluster_uuid)
242
244
  )
245
+ print(f'Cluster status response: {response}')
243
246
  if response.status == 'active':
247
+ print('Cluster is now active, starting execution.')
244
248
  lock.set_active()
245
249
  return True
246
250
  if response.status in ['suspended', 'failed']:
251
+ print(f'Trying to resume the cluster, found status: {response.status}, raising error.')
247
252
  return False
248
253
  if time.time() > self._timeout:
254
+ print('Cluster resume timed out.')
249
255
  return False
250
256
  except _InactiveRpcError as e:
251
257
  pass
@@ -11,6 +11,7 @@ import datetime
11
11
  import logging
12
12
  import re
13
13
  import sys
14
+ import time
14
15
  from decimal import Decimal
15
16
  from io import BytesIO
16
17
  from ssl import CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED
@@ -68,14 +69,22 @@ TYPES_CONVERTER = {
68
69
 
69
70
  def re_auth(func):
70
71
  def wrapper(self, *args, **kwargs):
71
- try:
72
- return func(self, *args, **kwargs)
73
- except _InactiveRpcError as e:
74
- if e.code() == grpc.StatusCode.INTERNAL and 'Access denied' in e.details():
75
- self.connection.get_re_authenticate_session_id()
72
+ max_retry = 5
73
+ current_retry = 0
74
+ while current_retry < max_retry:
75
+ try:
76
76
  return func(self, *args, **kwargs)
77
- else:
78
- raise e
77
+ except _InactiveRpcError as e:
78
+ current_retry += 1
79
+ if current_retry == max_retry:
80
+ raise e
81
+ if e.code() == grpc.StatusCode.INTERNAL and 'Access denied' in e.details():
82
+ time.sleep(0.2)
83
+ _logger.info(f'RE_AUTH: Function Name: {func}')
84
+ _logger.info(f'RE_AUTH: Error Found {e}')
85
+ self.connection.get_re_authenticate_session_id()
86
+ else:
87
+ raise e
79
88
 
80
89
  return wrapper
81
90
 
@@ -165,6 +174,7 @@ class Connection(object):
165
174
  - max_receive_message_length: This parameter sets the maximum allowed size (in bytes) for incoming messages on the gRPC server.
166
175
  - max_send_message_length: Similar to max_receive_message_length, this parameter sets the maximum allowed size (in bytes) for outgoing messages from the gRPC client
167
176
  - grpc_prepare_timeout: Timeout for prepare statement API call (default to 10 minutes).
177
+ - keepalive_time_ms: This parameter defines the time, in milliseconds, Default to 30 seconds
168
178
  """
169
179
  if not username or not password:
170
180
  raise ValueError("username or password cannot be empty.")
@@ -184,39 +194,70 @@ class Connection(object):
184
194
 
185
195
  self._auto_resume = auto_resume
186
196
 
187
- self._keepalive_timeout_ms = 900000
188
- self._max_receive_message_length = -1
189
- self._max_send_message_length = 300 * 1024 * 1024 # mb
190
- self.grpc_prepare_timeout = 10 * 60 # 10 minutes
191
- self._planner_ip = None
192
-
193
- if isinstance(grpc_options, dict):
194
- self._keepalive_timeout_ms = grpc_options.get('keepalive_timeout_ms') or self._keepalive_timeout_ms
195
- self._max_receive_message_length = grpc_options.get(
196
- 'max_receive_message_length') or self._max_receive_message_length
197
- self._max_send_message_length = grpc_options.get('max_send_message_length') or self._max_send_message_length
198
- self.grpc_prepare_timeout = grpc_options.get('grpc_prepare_timeout') or self.grpc_prepare_timeout
197
+ self._grpc_options = grpc_options
198
+ if self._grpc_options is None:
199
+ self._grpc_options = dict()
200
+ self.grpc_prepare_timeout = self._grpc_options.get('grpc_prepare_timeout') or 10 * 60 # 10 minutes
199
201
  self._create_client()
200
202
 
203
+ @property
204
+ def _get_grpc_options(self):
205
+ """
206
+ Property to get gRPC options for the connection.
207
+
208
+ This method checks if the gRPC options are already cached. If not, it creates a copy of the
209
+ provided gRPC options and merges them with the default options. The merged options are then
210
+ cached for future use.
211
+
212
+ Returns:
213
+ list: A list of tuples containing gRPC options.
214
+ """
215
+ if not hasattr(self, '_cached_grpc_options'):
216
+ grpc_options = self._grpc_options.copy()
217
+ default_options = {
218
+ "keepalive_timeout_ms": 900000, # Time in milliseconds to keep the connection alive.
219
+ "max_receive_message_length": -1, # Maximum size of received messages.
220
+ "max_send_message_length": 300 * 1024 * 1024, # Maximum size of sent messages (300 MB).
221
+ "grpc_prepare_timeout": self.grpc_prepare_timeout, # Timeout for prepare statement API call.
222
+ "keepalive_time_ms": 30000, # Time in milliseconds between keep-alive pings.
223
+ "keepalive_permit_without_calls": 1, # Allow keep-alives with no active RPCs.
224
+ "http2.max_pings_without_data": 0, # Unlimited pings without data.
225
+ "http2.min_time_between_pings_ms": 15000, # Minimum time between pings (15 seconds).
226
+ "http2.min_ping_interval_without_data_ms": 15000, # Minimum interval between pings without data (15 seconds).
227
+ }
228
+ if grpc_options:
229
+ for key, value in grpc_options.items():
230
+ default_options[key] = value
231
+
232
+ self._cached_grpc_options = [(f'grpc.{key}', value) for key, value in default_options.items()]
233
+
234
+ return self._cached_grpc_options
235
+
201
236
  def _create_client(self):
237
+ """
238
+ Creates a gRPC client for the connection.
239
+
240
+ This method initializes a gRPC channel based on whether a secure channel is required or not.
241
+ It then creates a client stub for the QueryEngineService.
242
+
243
+ If the secure channel is enabled, it uses `grpc.secure_channel` with SSL credentials.
244
+ Otherwise, it uses `grpc.insecure_channel`.
245
+
246
+ The gRPC options are retrieved from the `_get_grpc_options` property.
247
+
248
+ Raises:
249
+ grpc.RpcError: If there is an error in creating the gRPC channel or client stub.
250
+ """
202
251
  if self._secure_channel:
203
252
  self._channel = grpc.secure_channel(
204
253
  target='{}:{}'.format(self._host, self._port),
205
- options=[
206
- ("grpc.keepalive_timeout_ms", self._keepalive_timeout_ms),
207
- ('grpc.max_send_message_length', self._max_send_message_length),
208
- ('grpc.max_receive_message_length', self._max_receive_message_length)
209
- ],
254
+ options=self._get_grpc_options,
210
255
  credentials=grpc.ssl_channel_credentials()
211
256
  )
212
257
  else:
213
258
  self._channel = grpc.insecure_channel(
214
259
  target='{}:{}'.format(self._host, self._port),
215
- options=[
216
- ("grpc.keepalive_timeout_ms", self._keepalive_timeout_ms),
217
- ('grpc.max_send_message_length', self._max_send_message_length),
218
- ('grpc.max_receive_message_length', self._max_receive_message_length)
219
- ]
260
+ options=self._get_grpc_options
220
261
  )
221
262
  self._client = e6x_engine_pb2_grpc.QueryEngineServiceStub(self._channel)
222
263
 
@@ -241,7 +282,6 @@ class Connection(object):
241
282
  metadata=_get_grpc_header(cluster=self.cluster_uuid)
242
283
  )
243
284
  self._session_id = authenticate_response.sessionId
244
- self._planner_ip = authenticate_response.plannerIp
245
285
  if not self._session_id:
246
286
  raise ValueError("Invalid credentials.")
247
287
  except _InactiveRpcError as e:
@@ -265,7 +305,6 @@ class Connection(object):
265
305
  metadata=_get_grpc_header(cluster=self.cluster_uuid)
266
306
  )
267
307
  self._session_id = authenticate_response.sessionId
268
- self._planner_ip = authenticate_response.plannerIp
269
308
  else:
270
309
  raise e
271
310
  else:
@@ -423,8 +462,6 @@ class Cursor(DBAPICursor):
423
462
 
424
463
  @property
425
464
  def metadata(self):
426
- if not self._engine_ip:
427
- self._engine_ip = self.connection._planner_ip
428
465
  return _get_grpc_header(engine_ip=self._engine_ip, cluster=self.connection.cluster_uuid)
429
466
 
430
467
  @property
@@ -570,8 +607,7 @@ class Cursor(DBAPICursor):
570
607
  sessionId=self.connection.get_session_id,
571
608
  schema=self._database,
572
609
  catalog=self._catalog_name,
573
- queryString=sql,
574
- plannerIp=self._engine_ip
610
+ queryString=sql
575
611
  )
576
612
  prepare_statement_response = client.prepareStatementV2(
577
613
  prepare_statement_request,
@@ -0,0 +1,140 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: e6x_engine.proto
4
+ """Generated protocol buffer code."""
5
+ from google.protobuf import descriptor as _descriptor
6
+ from google.protobuf import descriptor_pool as _descriptor_pool
7
+ from google.protobuf import symbol_database as _symbol_database
8
+ from google.protobuf.internal import builder as _builder
9
+ # @@protoc_insertion_point(imports)
10
+
11
+ _sym_db = _symbol_database.Default()
12
+
13
+
14
+
15
+
16
+ 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')
17
+
18
+ _globals = globals()
19
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
20
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'e6x_engine_pb2', _globals)
21
+ if _descriptor._USE_C_DESCRIPTORS == False:
22
+ DESCRIPTOR._options = None
23
+ DESCRIPTOR._serialized_options = b'P\001'
24
+ _globals['_GFIELDINFO']._serialized_start=20
25
+ _globals['_GFIELDINFO']._serialized_end=70
26
+ _globals['_FAILEDSCHEMAELEMENT']._serialized_start=72
27
+ _globals['_FAILEDSCHEMAELEMENT']._serialized_end=137
28
+ _globals['_GETADDCATALOGSRESPONSE']._serialized_start=139
29
+ _globals['_GETADDCATALOGSRESPONSE']._serialized_end=219
30
+ _globals['_CATALOGRESPONSE']._serialized_start=221
31
+ _globals['_CATALOGRESPONSE']._serialized_end=271
32
+ _globals['_PARAMETERVALUE']._serialized_start=273
33
+ _globals['_PARAMETERVALUE']._serialized_end=333
34
+ _globals['_CLEARREQUEST']._serialized_start=335
35
+ _globals['_CLEARREQUEST']._serialized_end=403
36
+ _globals['_CLEARRESPONSE']._serialized_start=405
37
+ _globals['_CLEARRESPONSE']._serialized_end=420
38
+ _globals['_CANCELQUERYREQUEST']._serialized_start=422
39
+ _globals['_CANCELQUERYREQUEST']._serialized_end=496
40
+ _globals['_CANCELQUERYRESPONSE']._serialized_start=498
41
+ _globals['_CANCELQUERYRESPONSE']._serialized_end=519
42
+ _globals['_EXPLAINREQUEST']._serialized_start=521
43
+ _globals['_EXPLAINREQUEST']._serialized_end=591
44
+ _globals['_EXPLAINRESPONSE']._serialized_start=593
45
+ _globals['_EXPLAINRESPONSE']._serialized_end=627
46
+ _globals['_DRYRUNREQUEST']._serialized_start=629
47
+ _globals['_DRYRUNREQUEST']._serialized_end=718
48
+ _globals['_DRYRUNRESPONSE']._serialized_start=720
49
+ _globals['_DRYRUNRESPONSE']._serialized_end=757
50
+ _globals['_DRYRUNREQUESTV2']._serialized_start=759
51
+ _globals['_DRYRUNREQUESTV2']._serialized_end=867
52
+ _globals['_EXPLAINANALYZEREQUEST']._serialized_start=869
53
+ _globals['_EXPLAINANALYZEREQUEST']._serialized_end=946
54
+ _globals['_EXPLAINANALYZERESPONSE']._serialized_start=948
55
+ _globals['_EXPLAINANALYZERESPONSE']._serialized_end=1057
56
+ _globals['_PREPARESTATEMENTREQUEST']._serialized_start=1059
57
+ _globals['_PREPARESTATEMENTREQUEST']._serialized_end=1157
58
+ _globals['_PREPARESTATEMENTV2REQUEST']._serialized_start=1159
59
+ _globals['_PREPARESTATEMENTV2REQUEST']._serialized_end=1276
60
+ _globals['_PREPARESTATEMENTRESPONSE']._serialized_start=1278
61
+ _globals['_PREPARESTATEMENTRESPONSE']._serialized_end=1339
62
+ _globals['_USERACCESSINFO']._serialized_start=1341
63
+ _globals['_USERACCESSINFO']._serialized_end=1405
64
+ _globals['_EXECUTESTATEMENTREQUEST']._serialized_start=1407
65
+ _globals['_EXECUTESTATEMENTREQUEST']._serialized_end=1510
66
+ _globals['_EXECUTESTATEMENTV2REQUEST']._serialized_start=1513
67
+ _globals['_EXECUTESTATEMENTV2REQUEST']._serialized_end=1651
68
+ _globals['_EXECUTESTATEMENTRESPONSE']._serialized_start=1653
69
+ _globals['_EXECUTESTATEMENTRESPONSE']._serialized_end=1679
70
+ _globals['_GETNEXTRESULTROWREQUEST']._serialized_start=1681
71
+ _globals['_GETNEXTRESULTROWREQUEST']._serialized_end=1760
72
+ _globals['_GETNEXTRESULTROWRESPONSE']._serialized_start=1762
73
+ _globals['_GETNEXTRESULTROWRESPONSE']._serialized_end=1807
74
+ _globals['_GETNEXTRESULTBATCHREQUEST']._serialized_start=1809
75
+ _globals['_GETNEXTRESULTBATCHREQUEST']._serialized_end=1928
76
+ _globals['_GETNEXTRESULTBATCHRESPONSE']._serialized_start=1930
77
+ _globals['_GETNEXTRESULTBATCHRESPONSE']._serialized_end=1979
78
+ _globals['_GETRESULTMETADATAREQUEST']._serialized_start=1981
79
+ _globals['_GETRESULTMETADATAREQUEST']._serialized_end=2061
80
+ _globals['_GETRESULTMETADATARESPONSE']._serialized_start=2063
81
+ _globals['_GETRESULTMETADATARESPONSE']._serialized_end=2114
82
+ _globals['_AUTHENTICATEREQUEST']._serialized_start=2116
83
+ _globals['_AUTHENTICATEREQUEST']._serialized_end=2169
84
+ _globals['_AUTHENTICATERESPONSE']._serialized_start=2171
85
+ _globals['_AUTHENTICATERESPONSE']._serialized_end=2212
86
+ _globals['_GETTABLESREQUEST']._serialized_start=2214
87
+ _globals['_GETTABLESREQUEST']._serialized_end=2267
88
+ _globals['_GETTABLESV2REQUEST']._serialized_start=2269
89
+ _globals['_GETTABLESV2REQUEST']._serialized_end=2341
90
+ _globals['_GETTABLESRESPONSE']._serialized_start=2343
91
+ _globals['_GETTABLESRESPONSE']._serialized_end=2378
92
+ _globals['_GETSCHEMANAMESREQUEST']._serialized_start=2380
93
+ _globals['_GETSCHEMANAMESREQUEST']._serialized_end=2422
94
+ _globals['_GETSCHEMANAMESV2REQUEST']._serialized_start=2424
95
+ _globals['_GETSCHEMANAMESV2REQUEST']._serialized_end=2485
96
+ _globals['_GETSCHEMANAMESRESPONSE']._serialized_start=2487
97
+ _globals['_GETSCHEMANAMESRESPONSE']._serialized_end=2528
98
+ _globals['_GETCOLUMNSREQUEST']._serialized_start=2530
99
+ _globals['_GETCOLUMNSREQUEST']._serialized_end=2599
100
+ _globals['_GETCOLUMNSV2REQUEST']._serialized_start=2601
101
+ _globals['_GETCOLUMNSV2REQUEST']._serialized_end=2689
102
+ _globals['_GETCOLUMNSRESPONSE']._serialized_start=2691
103
+ _globals['_GETCOLUMNSRESPONSE']._serialized_end=2743
104
+ _globals['_STATUSREQUEST']._serialized_start=2745
105
+ _globals['_STATUSREQUEST']._serialized_end=2814
106
+ _globals['_STATUSRESPONSE']._serialized_start=2816
107
+ _globals['_STATUSRESPONSE']._serialized_end=2866
108
+ _globals['_ADDCATALOGSREQUEST']._serialized_start=2868
109
+ _globals['_ADDCATALOGSREQUEST']._serialized_end=2921
110
+ _globals['_UPDATEUSERSREQUEST']._serialized_start=2923
111
+ _globals['_UPDATEUSERSREQUEST']._serialized_end=2958
112
+ _globals['_UPDATEUSERSRESPONSE']._serialized_start=2960
113
+ _globals['_UPDATEUSERSRESPONSE']._serialized_end=2981
114
+ _globals['_SETPROPSREQUEST']._serialized_start=2983
115
+ _globals['_SETPROPSREQUEST']._serialized_end=3034
116
+ _globals['_SETPROPSRESPONSE']._serialized_start=3036
117
+ _globals['_SETPROPSRESPONSE']._serialized_end=3054
118
+ _globals['_GETADDCATALOGSREQUEST']._serialized_start=3056
119
+ _globals['_GETADDCATALOGSREQUEST']._serialized_end=3098
120
+ _globals['_ADDCATALOGSRESPONSE']._serialized_start=3100
121
+ _globals['_ADDCATALOGSRESPONSE']._serialized_end=3121
122
+ _globals['_GETCATALOGESREQUEST']._serialized_start=3123
123
+ _globals['_GETCATALOGESREQUEST']._serialized_end=3144
124
+ _globals['_GETCATALOGESRESPONSE']._serialized_start=3146
125
+ _globals['_GETCATALOGESRESPONSE']._serialized_end=3212
126
+ _globals['_REFRESHCATALOGSREQUEST']._serialized_start=3214
127
+ _globals['_REFRESHCATALOGSREQUEST']._serialized_end=3257
128
+ _globals['_REFRESHCATALOGSRESPONSE']._serialized_start=3259
129
+ _globals['_REFRESHCATALOGSRESPONSE']._serialized_end=3284
130
+ _globals['_REMOTECHUNKREQUEST']._serialized_start=3286
131
+ _globals['_REMOTECHUNKREQUEST']._serialized_end=3374
132
+ _globals['_REMOTECHUNKRESPONSE']._serialized_start=3376
133
+ _globals['_REMOTECHUNKRESPONSE']._serialized_end=3427
134
+ _globals['_CLEARORCANCELQUERYREQUEST']._serialized_start=3429
135
+ _globals['_CLEARORCANCELQUERYREQUEST']._serialized_end=3510
136
+ _globals['_CLEARORCANCELQUERYRESPONSE']._serialized_start=3512
137
+ _globals['_CLEARORCANCELQUERYRESPONSE']._serialized_end=3540
138
+ _globals['_QUERYENGINESERVICE']._serialized_start=3543
139
+ _globals['_QUERYENGINESERVICE']._serialized_end=5377
140
+ # @@protoc_insertion_point(module_scope)