e6data-python-connector 2.3.12rc1__tar.gz → 2.3.12rc11__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.
- {e6data_python_connector-2.3.12rc1/e6data_python_connector.egg-info → e6data_python_connector-2.3.12rc11}/PKG-INFO +2 -2
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/README.md +1 -1
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/e6data_grpc.py +53 -13
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11/e6data_python_connector.egg-info}/PKG-INFO +2 -2
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/setup.py +1 -1
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/LICENSE +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/MANIFEST.in +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/__init__.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/cluster_manager.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/cluster_server/__init__.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/cluster_server/cluster_pb2.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/cluster_server/cluster_pb2_grpc.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/common.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/connection_pool.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/constants.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/datainputstream.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/date_time_utils.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/dialect.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/e6x_vector/__init__.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/e6x_vector/constants.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/e6x_vector/ttypes.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/exceptions.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/server/QueryEngineService.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/server/__init__.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/server/constants.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/server/e6x_engine_pb2.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/server/e6x_engine_pb2.pyi +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/server/e6x_engine_pb2_grpc.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/server/ttypes.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/strategy.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/typeId.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector.egg-info/SOURCES.txt +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector.egg-info/dependency_links.txt +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector.egg-info/entry_points.txt +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector.egg-info/requires.txt +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector.egg-info/top_level.txt +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/gen-py/__init__.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/gen-py/e6x_vector/__init__.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/gen-py/e6x_vector/constants.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/gen-py/e6x_vector/ttypes.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/pyproject.toml +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/setup.cfg +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/__init__.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/analyze_38_nines.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/analyze_all_cases.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/analyze_binary.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/analyze_correct_value.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/analyze_fields.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/check_decimal_errors.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/cleanup_test_files.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/debug_38_nines.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/debug_binary.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/final_test.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/move_tests.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/quick_test.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_38_nines.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_all_decimal128_cases.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_cluster_manager_efficiency.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_cluster_manager_none_strategy.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_cluster_manager_strategy.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_comprehensive.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_connection_pool.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_connection_pool_e2e.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_current_implementation.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_decimal128_binary_parsing.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_decimal128_parsing.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_fix.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_improved_parsing.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_known_case.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_manual_analysis.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_mock_server.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_multiprocessing_fix.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_new_implementation.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_pool_concurrency_simple.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_pool_threading_multiprocessing.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_simple_connection_pool.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_specific_binary.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_strategy.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_strategy_logic.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_strategy_persistence_fix.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_strategy_sharing_fix.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_user_binary_value.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/tests.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/tests_grpc.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/validate_decimal128.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/validate_implementation.py +0 -0
- {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/verify_decimal_fix.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: e6data-python-connector
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.12rc11
|
|
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.
|
|
@@ -39,7 +39,7 @@ Dynamic: summary
|
|
|
39
39
|
|
|
40
40
|
# e6data Python Connector
|
|
41
41
|
|
|
42
|
-

|
|
43
43
|
|
|
44
44
|
## Introduction
|
|
45
45
|
|
|
@@ -388,7 +388,6 @@ class Connection(object):
|
|
|
388
388
|
self._auto_resume = auto_resume
|
|
389
389
|
|
|
390
390
|
self._grpc_options = grpc_options
|
|
391
|
-
|
|
392
391
|
if self._grpc_options is None:
|
|
393
392
|
self._grpc_options = dict()
|
|
394
393
|
self.grpc_prepare_timeout = self._grpc_options.get('grpc_prepare_timeout') or 10 * 60 # 10 minutes
|
|
@@ -398,15 +397,7 @@ class Connection(object):
|
|
|
398
397
|
The default maximum time on client side to wait for the cluster to resume is 5 minutes.
|
|
399
398
|
"""
|
|
400
399
|
self.grpc_auto_resume_timeout_seconds = self._grpc_options.pop('grpc_auto_resume_timeout_seconds')
|
|
401
|
-
|
|
402
|
-
self.timeout = 500
|
|
403
|
-
if 'timeout' in self._grpc_options:
|
|
404
|
-
"""
|
|
405
|
-
The default maximum time on client side to wait for the cluster to resume is 5 minutes.
|
|
406
|
-
"""
|
|
407
|
-
self.timeout = self._grpc_options.pop('timeout')
|
|
408
|
-
|
|
409
|
-
|
|
400
|
+
|
|
410
401
|
# Store debug flag and register with debug connections
|
|
411
402
|
self._debug = debug
|
|
412
403
|
if self._debug:
|
|
@@ -862,6 +853,56 @@ class Connection(object):
|
|
|
862
853
|
)
|
|
863
854
|
return dry_run_response.dryrunValue
|
|
864
855
|
|
|
856
|
+
def get_logical_plan(self, query, catalog=None, schema=None):
|
|
857
|
+
"""
|
|
858
|
+
Gets the logical execution plan for a query without executing it.
|
|
859
|
+
This method performs syntax, parsing, and plan compilation, then returns the logical plan.
|
|
860
|
+
|
|
861
|
+
Args:
|
|
862
|
+
query (str): The SQL query to get the plan for.
|
|
863
|
+
catalog (str, optional): Catalog name. Uses connection's catalog if not provided.
|
|
864
|
+
schema (str, optional): Schema/database name. Uses connection's database if not provided.
|
|
865
|
+
|
|
866
|
+
Returns:
|
|
867
|
+
dict: A dictionary with:
|
|
868
|
+
- 'success' (bool): True if plan generation succeeded, False otherwise
|
|
869
|
+
- 'plan' (str, optional): The logical plan string if successful
|
|
870
|
+
- 'error' (str, optional): Error message if plan generation failed
|
|
871
|
+
|
|
872
|
+
Example:
|
|
873
|
+
>>> result = conn.get_logical_plan("SELECT * FROM table")
|
|
874
|
+
>>> if result['success']:
|
|
875
|
+
... print(f"Plan: {result['plan']}")
|
|
876
|
+
>>> else:
|
|
877
|
+
... print(f"Error: {result['error']}")
|
|
878
|
+
"""
|
|
879
|
+
catalog_to_use = catalog if catalog is not None else self.catalog_name
|
|
880
|
+
schema_to_use = schema if schema is not None else self.database
|
|
881
|
+
|
|
882
|
+
try:
|
|
883
|
+
dry_run_request = e6x_engine_pb2.DryRunRequestV2(
|
|
884
|
+
sessionId=self.get_session_id,
|
|
885
|
+
schema=schema_to_use,
|
|
886
|
+
catalog=catalog_to_use,
|
|
887
|
+
queryString=query
|
|
888
|
+
)
|
|
889
|
+
|
|
890
|
+
dry_run_response = self._client.dryRunV2(
|
|
891
|
+
dry_run_request,
|
|
892
|
+
metadata=_get_grpc_header(cluster=self.cluster_name, strategy=_get_active_strategy())
|
|
893
|
+
)
|
|
894
|
+
|
|
895
|
+
return {
|
|
896
|
+
'success': True,
|
|
897
|
+
'plan': dry_run_response.dryrunValue
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
except Exception as e:
|
|
901
|
+
return {
|
|
902
|
+
'success': False,
|
|
903
|
+
'error': str(e)
|
|
904
|
+
}
|
|
905
|
+
|
|
865
906
|
def get_tables(self, catalog, database):
|
|
866
907
|
"""
|
|
867
908
|
Retrieves the list of tables from the specified catalog and database.
|
|
@@ -1452,14 +1493,13 @@ class Cursor(DBAPICursor):
|
|
|
1452
1493
|
get_next_result_batch_request = e6x_engine_pb2.GetNextResultBatchRequest(
|
|
1453
1494
|
engineIP=self._engine_ip,
|
|
1454
1495
|
sessionId=self.connection.get_session_id,
|
|
1455
|
-
queryId=self._query_id
|
|
1496
|
+
queryId=self._query_id
|
|
1456
1497
|
)
|
|
1457
1498
|
# Get fresh client after session access (may have been invalidated)
|
|
1458
1499
|
client = self.connection.client
|
|
1459
1500
|
get_next_result_batch_response = client.getNextResultBatch(
|
|
1460
1501
|
get_next_result_batch_request,
|
|
1461
|
-
metadata=self.metadata
|
|
1462
|
-
timeout=self.connection.timeout
|
|
1502
|
+
metadata=self.metadata
|
|
1463
1503
|
)
|
|
1464
1504
|
|
|
1465
1505
|
# Check for new strategy in batch response
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: e6data-python-connector
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.12rc11
|
|
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.
|
|
@@ -39,7 +39,7 @@ Dynamic: summary
|
|
|
39
39
|
|
|
40
40
|
# e6data Python Connector
|
|
41
41
|
|
|
42
|
-

|
|
43
43
|
|
|
44
44
|
## Introduction
|
|
45
45
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/gen-py/e6x_vector/ttypes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/analyze_38_nines.py
RENAMED
|
File without changes
|
{e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/analyze_all_cases.py
RENAMED
|
File without changes
|
{e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/analyze_binary.py
RENAMED
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/analyze_fields.py
RENAMED
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/cleanup_test_files.py
RENAMED
|
File without changes
|
{e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/debug_38_nines.py
RENAMED
|
File without changes
|
{e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/debug_binary.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_38_nines.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_comprehensive.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_known_case.py
RENAMED
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_mock_server.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_strategy.py
RENAMED
|
File without changes
|
{e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_strategy_logic.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/validate_decimal128.py
RENAMED
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/verify_decimal_fix.py
RENAMED
|
File without changes
|