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.
Files changed (87) hide show
  1. {e6data_python_connector-2.3.12rc1/e6data_python_connector.egg-info → e6data_python_connector-2.3.12rc11}/PKG-INFO +2 -2
  2. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/README.md +1 -1
  3. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/e6data_grpc.py +53 -13
  4. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11/e6data_python_connector.egg-info}/PKG-INFO +2 -2
  5. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/setup.py +1 -1
  6. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/LICENSE +0 -0
  7. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/MANIFEST.in +0 -0
  8. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/__init__.py +0 -0
  9. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/cluster_manager.py +0 -0
  10. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/cluster_server/__init__.py +0 -0
  11. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/cluster_server/cluster_pb2.py +0 -0
  12. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/cluster_server/cluster_pb2_grpc.py +0 -0
  13. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/common.py +0 -0
  14. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/connection_pool.py +0 -0
  15. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/constants.py +0 -0
  16. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/datainputstream.py +0 -0
  17. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/date_time_utils.py +0 -0
  18. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/dialect.py +0 -0
  19. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/e6x_vector/__init__.py +0 -0
  20. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/e6x_vector/constants.py +0 -0
  21. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/e6x_vector/ttypes.py +0 -0
  22. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/exceptions.py +0 -0
  23. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/server/QueryEngineService.py +0 -0
  24. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/server/__init__.py +0 -0
  25. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/server/constants.py +0 -0
  26. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/server/e6x_engine_pb2.py +0 -0
  27. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/server/e6x_engine_pb2.pyi +0 -0
  28. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/server/e6x_engine_pb2_grpc.py +0 -0
  29. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/server/ttypes.py +0 -0
  30. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/strategy.py +0 -0
  31. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector/typeId.py +0 -0
  32. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector.egg-info/SOURCES.txt +0 -0
  33. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector.egg-info/dependency_links.txt +0 -0
  34. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector.egg-info/entry_points.txt +0 -0
  35. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector.egg-info/requires.txt +0 -0
  36. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/e6data_python_connector.egg-info/top_level.txt +0 -0
  37. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/gen-py/__init__.py +0 -0
  38. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/gen-py/e6x_vector/__init__.py +0 -0
  39. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/gen-py/e6x_vector/constants.py +0 -0
  40. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/gen-py/e6x_vector/ttypes.py +0 -0
  41. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/pyproject.toml +0 -0
  42. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/setup.cfg +0 -0
  43. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/__init__.py +0 -0
  44. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/analyze_38_nines.py +0 -0
  45. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/analyze_all_cases.py +0 -0
  46. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/analyze_binary.py +0 -0
  47. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/analyze_correct_value.py +0 -0
  48. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/analyze_fields.py +0 -0
  49. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/check_decimal_errors.py +0 -0
  50. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/cleanup_test_files.py +0 -0
  51. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/debug_38_nines.py +0 -0
  52. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/debug_binary.py +0 -0
  53. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/final_test.py +0 -0
  54. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/move_tests.py +0 -0
  55. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/quick_test.py +0 -0
  56. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_38_nines.py +0 -0
  57. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_all_decimal128_cases.py +0 -0
  58. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_cluster_manager_efficiency.py +0 -0
  59. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_cluster_manager_none_strategy.py +0 -0
  60. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_cluster_manager_strategy.py +0 -0
  61. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_comprehensive.py +0 -0
  62. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_connection_pool.py +0 -0
  63. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_connection_pool_e2e.py +0 -0
  64. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_current_implementation.py +0 -0
  65. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_decimal128_binary_parsing.py +0 -0
  66. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_decimal128_parsing.py +0 -0
  67. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_fix.py +0 -0
  68. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_improved_parsing.py +0 -0
  69. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_known_case.py +0 -0
  70. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_manual_analysis.py +0 -0
  71. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_mock_server.py +0 -0
  72. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_multiprocessing_fix.py +0 -0
  73. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_new_implementation.py +0 -0
  74. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_pool_concurrency_simple.py +0 -0
  75. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_pool_threading_multiprocessing.py +0 -0
  76. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_simple_connection_pool.py +0 -0
  77. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_specific_binary.py +0 -0
  78. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_strategy.py +0 -0
  79. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_strategy_logic.py +0 -0
  80. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_strategy_persistence_fix.py +0 -0
  81. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_strategy_sharing_fix.py +0 -0
  82. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/test_user_binary_value.py +0 -0
  83. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/tests.py +0 -0
  84. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/tests_grpc.py +0 -0
  85. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/validate_decimal128.py +0 -0
  86. {e6data_python_connector-2.3.12rc1 → e6data_python_connector-2.3.12rc11}/test/validate_implementation.py +0 -0
  87. {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.12rc1
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
- ![version](https://img.shields.io/badge/version-2.3.12rc1-blue.svg)
42
+ ![version](https://img.shields.io/badge/version-2.3.12rc11-blue.svg)
43
43
 
44
44
  ## Introduction
45
45
 
@@ -1,6 +1,6 @@
1
1
  # e6data Python Connector
2
2
 
3
- ![version](https://img.shields.io/badge/version-2.3.12rc1-blue.svg)
3
+ ![version](https://img.shields.io/badge/version-2.3.12rc11-blue.svg)
4
4
 
5
5
  ## Introduction
6
6
 
@@ -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.12rc1
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
- ![version](https://img.shields.io/badge/version-2.3.12rc1-blue.svg)
42
+ ![version](https://img.shields.io/badge/version-2.3.12rc11-blue.svg)
43
43
 
44
44
  ## Introduction
45
45
 
@@ -12,7 +12,7 @@
12
12
 
13
13
  import setuptools
14
14
 
15
- VERSION = (2, 3, 12, 'rc1',)
15
+ VERSION = (2, 3, 12,'rc11')
16
16
 
17
17
 
18
18
  def get_long_desc():