databricks-sql-connector 4.1.2__tar.gz → 4.1.3__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.
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/CHANGELOG.md +4 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/PKG-INFO +4 -2
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/pyproject.toml +1 -1
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/__init__.py +1 -1
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/backend/sea/utils/constants.py +1 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/backend/thrift_backend.py +42 -13
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/LICENSE +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/README.md +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/__init__.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/auth/__init__.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/auth/auth.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/auth/authenticators.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/auth/common.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/auth/endpoint.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/auth/oauth.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/auth/oauth_http_handler.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/auth/retry.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/auth/thrift_http_client.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/backend/databricks_client.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/backend/sea/backend.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/backend/sea/models/__init__.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/backend/sea/models/base.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/backend/sea/models/requests.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/backend/sea/models/responses.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/backend/sea/queue.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/backend/sea/result_set.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/backend/sea/utils/conversion.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/backend/sea/utils/filters.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/backend/sea/utils/http_client.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/backend/sea/utils/normalize.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/backend/types.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/backend/utils/__init__.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/backend/utils/guid_utils.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/client.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/cloudfetch/download_manager.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/cloudfetch/downloader.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/common/feature_flag.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/common/http.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/common/http_utils.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/common/unified_http_client.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/exc.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/experimental/__init__.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/experimental/oauth_persistence.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/parameters/__init__.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/parameters/native.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/parameters/py.typed +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/py.typed +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/result_set.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/session.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/telemetry/latency_logger.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/telemetry/models/endpoint_models.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/telemetry/models/enums.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/telemetry/models/event.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/telemetry/models/frontend_logs.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/telemetry/telemetry_client.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/telemetry/utils.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/thrift_api/TCLIService/TCLIService-remote +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/thrift_api/TCLIService/TCLIService.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/thrift_api/TCLIService/__init__.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/thrift_api/TCLIService/constants.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/thrift_api/TCLIService/ttypes.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/thrift_api/__init__.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/types.py +0 -0
- {databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/utils.py +0 -0
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Release History
|
|
2
2
|
|
|
3
|
+
# 4.1.3 (2025-09-17)
|
|
4
|
+
- Query tags integration (databricks/databricks-sql-python#663 by @sreekanth-db)
|
|
5
|
+
- Add variant support (databricks/databricks-sql-python#560 by @shivam2680)
|
|
6
|
+
|
|
3
7
|
# 4.1.2 (2025-08-22)
|
|
4
8
|
- Streaming ingestion support for PUT operation (databricks/databricks-sql-python#643 by @sreekanth-db)
|
|
5
9
|
- Removed use_threads argument on concat_tables for compatibility with pyarrow<14 (databricks/databricks-sql-python#684 by @jprakash-db)
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: databricks-sql-connector
|
|
3
|
-
Version: 4.1.
|
|
3
|
+
Version: 4.1.3
|
|
4
4
|
Summary: Databricks SQL Connector for Python
|
|
5
5
|
License: Apache-2.0
|
|
6
|
+
License-File: LICENSE
|
|
6
7
|
Author: Databricks
|
|
7
8
|
Author-email: databricks-sql-connector-maintainers@databricks.com
|
|
8
9
|
Requires-Python: >=3.8.0,<4.0.0
|
|
@@ -14,6 +15,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
14
15
|
Classifier: Programming Language :: Python :: 3.11
|
|
15
16
|
Classifier: Programming Language :: Python :: 3.12
|
|
16
17
|
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
17
19
|
Provides-Extra: pyarrow
|
|
18
20
|
Requires-Dist: lz4 (>=4.0.2,<5.0.0)
|
|
19
21
|
Requires-Dist: oauthlib (>=3.1.0,<4.0.0)
|
|
@@ -735,7 +735,7 @@ class ThriftDatabricksClient(DatabricksClient):
|
|
|
735
735
|
return pyarrow.schema([convert_col(col) for col in t_table_schema.columns])
|
|
736
736
|
|
|
737
737
|
@staticmethod
|
|
738
|
-
def _col_to_description(col, session_id_hex=None):
|
|
738
|
+
def _col_to_description(col, field=None, session_id_hex=None):
|
|
739
739
|
type_entry = col.typeDesc.types[0]
|
|
740
740
|
|
|
741
741
|
if type_entry.primitiveEntry:
|
|
@@ -764,12 +764,39 @@ class ThriftDatabricksClient(DatabricksClient):
|
|
|
764
764
|
else:
|
|
765
765
|
precision, scale = None, None
|
|
766
766
|
|
|
767
|
+
# Extract variant type from field if available
|
|
768
|
+
if field is not None:
|
|
769
|
+
try:
|
|
770
|
+
# Check for variant type in metadata
|
|
771
|
+
if field.metadata and b"Spark:DataType:SqlName" in field.metadata:
|
|
772
|
+
sql_type = field.metadata.get(b"Spark:DataType:SqlName")
|
|
773
|
+
if sql_type == b"VARIANT":
|
|
774
|
+
cleaned_type = "variant"
|
|
775
|
+
except Exception as e:
|
|
776
|
+
logger.debug(f"Could not extract variant type from field: {e}")
|
|
777
|
+
|
|
767
778
|
return col.columnName, cleaned_type, None, None, precision, scale, None
|
|
768
779
|
|
|
769
780
|
@staticmethod
|
|
770
|
-
def _hive_schema_to_description(
|
|
781
|
+
def _hive_schema_to_description(
|
|
782
|
+
t_table_schema, schema_bytes=None, session_id_hex=None
|
|
783
|
+
):
|
|
784
|
+
field_dict = {}
|
|
785
|
+
if pyarrow and schema_bytes:
|
|
786
|
+
try:
|
|
787
|
+
arrow_schema = pyarrow.ipc.read_schema(pyarrow.py_buffer(schema_bytes))
|
|
788
|
+
# Build a dictionary mapping column names to fields
|
|
789
|
+
for field in arrow_schema:
|
|
790
|
+
field_dict[field.name] = field
|
|
791
|
+
except Exception as e:
|
|
792
|
+
logger.debug(f"Could not parse arrow schema: {e}")
|
|
793
|
+
|
|
771
794
|
return [
|
|
772
|
-
ThriftDatabricksClient._col_to_description(
|
|
795
|
+
ThriftDatabricksClient._col_to_description(
|
|
796
|
+
col,
|
|
797
|
+
field_dict.get(col.columnName) if field_dict else None,
|
|
798
|
+
session_id_hex,
|
|
799
|
+
)
|
|
773
800
|
for col in t_table_schema.columns
|
|
774
801
|
]
|
|
775
802
|
|
|
@@ -802,11 +829,6 @@ class ThriftDatabricksClient(DatabricksClient):
|
|
|
802
829
|
or direct_results.resultSet.hasMoreRows
|
|
803
830
|
)
|
|
804
831
|
|
|
805
|
-
description = self._hive_schema_to_description(
|
|
806
|
-
t_result_set_metadata_resp.schema,
|
|
807
|
-
self._session_id_hex,
|
|
808
|
-
)
|
|
809
|
-
|
|
810
832
|
if pyarrow:
|
|
811
833
|
schema_bytes = (
|
|
812
834
|
t_result_set_metadata_resp.arrowSchema
|
|
@@ -819,6 +841,12 @@ class ThriftDatabricksClient(DatabricksClient):
|
|
|
819
841
|
else:
|
|
820
842
|
schema_bytes = None
|
|
821
843
|
|
|
844
|
+
description = self._hive_schema_to_description(
|
|
845
|
+
t_result_set_metadata_resp.schema,
|
|
846
|
+
schema_bytes,
|
|
847
|
+
self._session_id_hex,
|
|
848
|
+
)
|
|
849
|
+
|
|
822
850
|
lz4_compressed = t_result_set_metadata_resp.lz4Compressed
|
|
823
851
|
command_id = CommandId.from_thrift_handle(resp.operationHandle)
|
|
824
852
|
|
|
@@ -863,11 +891,6 @@ class ThriftDatabricksClient(DatabricksClient):
|
|
|
863
891
|
|
|
864
892
|
t_result_set_metadata_resp = resp.resultSetMetadata
|
|
865
893
|
|
|
866
|
-
description = self._hive_schema_to_description(
|
|
867
|
-
t_result_set_metadata_resp.schema,
|
|
868
|
-
self._session_id_hex,
|
|
869
|
-
)
|
|
870
|
-
|
|
871
894
|
if pyarrow:
|
|
872
895
|
schema_bytes = (
|
|
873
896
|
t_result_set_metadata_resp.arrowSchema
|
|
@@ -880,6 +903,12 @@ class ThriftDatabricksClient(DatabricksClient):
|
|
|
880
903
|
else:
|
|
881
904
|
schema_bytes = None
|
|
882
905
|
|
|
906
|
+
description = self._hive_schema_to_description(
|
|
907
|
+
t_result_set_metadata_resp.schema,
|
|
908
|
+
schema_bytes,
|
|
909
|
+
self._session_id_hex,
|
|
910
|
+
)
|
|
911
|
+
|
|
883
912
|
lz4_compressed = t_result_set_metadata_resp.lz4Compressed
|
|
884
913
|
is_staging_operation = t_result_set_metadata_resp.isStagingOperation
|
|
885
914
|
has_more_rows = resp.hasMoreRows
|
|
File without changes
|
|
File without changes
|
{databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/auth/auth.py
RENAMED
|
File without changes
|
|
File without changes
|
{databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/auth/common.py
RENAMED
|
File without changes
|
|
File without changes
|
{databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/auth/oauth.py
RENAMED
|
File without changes
|
|
File without changes
|
{databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/auth/retry.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
|
|
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
|
{databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/common/http.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
|
|
File without changes
|
{databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/py.typed
RENAMED
|
File without changes
|
{databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/result_set.py
RENAMED
|
File without changes
|
{databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/session.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/types.py
RENAMED
|
File without changes
|
{databricks_sql_connector-4.1.2 → databricks_sql_connector-4.1.3}/src/databricks/sql/utils.py
RENAMED
|
File without changes
|