Skip to content

Commit dc50985

Browse files
committed
Merge upstream main and preserve unreleased telemetry note
Signed-off-by: Ali Abouelazm <aliazm419@gmail.com>
2 parents c4595fe + e7a02cd commit dc50985

21 files changed

Lines changed: 456 additions & 79 deletions

‎.github/actions/bot-prelude/action.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ inputs:
3131
# value to move every bot to a new engine commit; never @main.
3232
description: 'Engine commit SHA (full 40-char) to install.'
3333
required: false
34-
default: '654a31d0d26d2b77bcb58e84f1e4abe018f9fd5a'
34+
default: 'ac3b08eab993ef14bf997a9bf4c776fa5acb16d8'
3535
engine-repo:
3636
description: 'owner/name of the engine repo.'
3737
required: false
@@ -84,7 +84,7 @@ runs:
8484
- name: Setup Node (for the Claude Code CLI the SDK spawns)
8585
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
8686
with:
87-
node-version: '20'
87+
node-version: '22'
8888

8989
- name: Install engine + Claude SDK/CLI
9090
uses: ./.github/actions/install-bot-engine

‎.github/actions/install-bot-engine/action.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ inputs:
3434
sdk-version:
3535
description: 'claude-agent-sdk version. Keep in sync with the engine at the pinned SHA.'
3636
required: false
37-
default: '0.2.102'
37+
default: '0.2.167'
3838
cli-version:
3939
description: '@anthropic-ai/claude-code version. Keep in sync with the engine at the pinned SHA.'
4040
required: false
41-
default: '2.1.61'
41+
default: '2.1.300'
4242

4343
runs:
4444
using: composite

‎CHANGELOG.md‎

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,18 @@
22

33
# Unreleased
44
- Include the available SQL statement ID in Thrift failure telemetry so errors can be correlated with the failed statement.
5-
- Add the `escape_catalog_name` connection parameter (default `False`) to opt in to escaping unescaped `_` in metadata catalog names on Thrift and kernel connections. Existing escapes and `%` wildcards are preserved.
5+
6+
# 4.8.0 (2026-10-24)
7+
- Upgrade Databricks SQL Kernel to 1.3.0 to address security findings.
8+
- Update locked Black and certifi dependencies to address security findings.
9+
- Fix Arrow result fetching for queries that return duplicate column names.
10+
11+
# 4.7.0 (2026-10-20)
12+
- Upgrade Databricks SQL Kernel to 1.2.0.
13+
- Add the kernel-only `enable_geospatial_support` option (default `False`) to return GEOMETRY / GEOGRAPHY values as SRID/WKB objects instead of WKT/EWKT strings.
14+
- Add opt-in `escape_catalog_name` support (default `False`) for metadata queries on Thrift and kernel connections.
15+
- Share feature-flag values across connections to the same workspace, with typed reads and coordinated refreshes.
16+
- Allow Apache Thrift 0.25.x and OAuthlib 4.x, including security fixes while preserving support for large Thrift results.
617

718
# 4.6.0 (2026-09-24)
819
- Upgrade Databricks SQL Kernel to 1.1.0; the kernel dependency is now stable and no longer experimental.

‎CONNECTION_PARAMETERS.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ to change without notice.
153153
| `max_download_threads` | `int` | ✅ | ❌ | `10` | Worker threads for cloud-fetch downloads. Not forwarded to the kernel. |
154154
| `enable_query_result_lz4_compression` | `bool` | ✅ | ❌ | `True` | LZ4-compress result payloads. Not forwarded; the kernel handles compression internally. |
155155
| `_disable_pandas` | `bool` | ✅ | ✅ | `False` | Skip the pandas-based Arrow→row deserialization and materialize rows directly with PyArrow. This is a **Python-side** result-conversion toggle, not a wire option: the kernel returns results as Arrow (`RecordBatch`es) and the connector runs the *same* `_convert_arrow_table` for both backends, so the flag is honored on the kernel path too. Affects only row fetches (`fetchone`/`fetchmany`/`fetchall`); the `fetch*_arrow` methods return the Arrow table unchanged regardless of this flag. |
156+
| `enable_geospatial_support` | `bool` | ❌ | ✅ | `False` | Return GEOMETRY / GEOGRAPHY as `{"srid": int, "wkb": bytes}` values when `True`, or as WKT / EWKT strings when `False`. This is a local result conversion and is never forwarded to SEA. |
156157
| `_use_arrow_native_complex_types` | `bool` | ✅ | ✅ | `True` | Return `ARRAY`/`MAP`/`STRUCT` as native Arrow types instead of JSON strings. Forwarded to the kernel. |
157158
| `_use_arrow_native_decimals` | `bool` | ✅ | ❌ | `True` | Thrift wire encoding for `DECIMAL`: `True` → native Arrow `decimal128`, `False` → Arrow string. **No value-level effect**, though: the connector unconditionally re-casts the column back to `decimal128` (`convert_decimals_in_arrow_table`, `thrift_backend.py`), so both `fetchall()` and `fetchall_arrow()` yield `Decimal` / `decimal128(p,s)` either way (verified live). Not forwarded to the kernel, which always returns native Arrow decimals. |
158159
| `_use_arrow_native_timestamps` | `bool` | ✅ | ❌ | `True` | Thrift wire encoding for `TIMESTAMP`: `True` → native Arrow timestamp (→ Python `datetime`), `False` → Arrow string (→ Python **`str`**). **Unlike decimals there is no re-cast**, so `False` genuinely surfaces strings — and `cursor.description` still reports the type code as `'timestamp'`, a mismatch to watch for (verified live). Note the connector always also sends the `spark.thriftserver.arrowBasedRowSet.timestampAsString=false` conf, but the `timestampAsArrow=False` flag wins. Not forwarded to the kernel, which always returns native Arrow timestamps. |

‎KERNEL_REV‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
ab1e6a707e4a15a3a7a8c78d8fdd12c752c51102
1+
d72c26492ad2fe2385b10eccd02e4ab462eec465

‎poetry.lock‎

Lines changed: 42 additions & 42 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎pyproject.toml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "databricks-sql-connector"
3-
version = "4.6.0"
3+
version = "4.8.0"
44
description = "Databricks SQL Connector for Python"
55
authors = ["Databricks <databricks-sql-connector-maintainers@databricks.com>"]
66
license = "Apache-2.0"
@@ -67,10 +67,10 @@ requests-kerberos = {version = "^0.15.0", optional = true}
6767
# is ``abi3`` with ``Requires-Python: >=3.9`` (built ``abi3-py39``); the
6868
# dependency remains gated to the connector's Python >= 3.10 support floor.
6969
#
70-
# Floor is 1.1.0 (``^1.1.0`` == ``>=1.1.0,<2.0.0``), allowing compatible
70+
# Floor is 1.3.0 (``^1.3.0`` == ``>=1.3.0,<2.0.0``), allowing compatible
7171
# 1.x releases while keeping the next major upgrade deliberate. The kernel's
7272
# pyarrow constraint remains >=23.0.1,<24.
73-
databricks-sql-kernel = {version = "^1.1.0", optional = true, python = ">=3.10"}
73+
databricks-sql-kernel = {version = "^1.3.0", optional = true, python = ">=3.10"}
7474

7575

7676
[tool.poetry.extras]

‎src/databricks/sql/__init__.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def __repr__(self):
7171
DATE = DBAPITypeObject("date")
7272
ROWID = DBAPITypeObject()
7373

74-
__version__ = "4.6.0"
74+
__version__ = "4.8.0"
7575
USER_AGENT_NAME = "PyDatabricksSqlConnector"
7676

7777
# These two functions are pyhive legacy

0 commit comments

Comments
 (0)