ReleaseDatabricks (DBRX)Databricks (DBRX)published May 26, 2026seen 5d

databricks/databricks-jdbc v3.4.1

databricks/databricks-jdbc

Open original ↗

Captured source

source ↗
published May 26, 2026seen 5dcaptured 8hhttp 200method plain

v3.4.1

Repository: databricks/databricks-jdbc

Tag: v3.4.1

Published: 2026-05-26T06:07:42Z

Prerelease: no

Release notes:

BREAKING CHANGES in 3.4.1

Metadata JDBC Spec Compliance

This release unifies metadata behavior across Thrift and SQL Exec API backends using SQL SHOW commands for all metadata operations on SQL warehouses. Several non-spec-compliant behaviors have been corrected. Review the changes below before upgrading. These changes do not affect metadata on All-Purpose Clusters.

  • getTables/getColumns/getSchemas: Catalog parameter is now treated as

an exact-match identifier per JDBC spec.** Passing % or wildcard patterns as catalog previously returned results across all catalogs. Use null to search all catalogs.

  • `getTables` with empty types array: Now returns zero rows per JDBC spec.

Use null to return all types.

  • `getSchemas`: Now includes `information_schema` in results. Excludes

global_temp schema (previously returned by Thrift for all catalogs).

  • getPrimaryKeys/getImportedKeys/getCrossReference with non-existent

catalog, schema, or table: Now returns empty ResultSet instead of throwing SQLException.**

  • getImportedKeys UPDATE_RULE/DELETE_RULE: Now returns 3 (NO_ACTION)

instead of 0 (CASCADE) for Thrift, and 3 instead of null for SEA.** This reflects that Unity Catalog foreign keys are informational and non-enforced.

  • PreparedStatement.setDate() now sends parameter type as DATE instead of

TIMESTAMP.** Previously, setDate() incorrectly serialized the parameter type as TIMESTAMP due to a mapping bug. Server-side behavior is unchanged (Databricks accepts both), but applications that inspect parameter types may see the difference.

Default Behavior Changes

  • **Native geospatial type support (GEOMETRY and GEOGRAPHY) is now enabled

by default.** getObject() now returns IGeometry/IGeography instances instead of EWKT strings. Set EnableGeoSpatialSupport=0 to restore the previous behavior.

  • `EnableArrow` connection property is deprecated and ignored. Arrow

serialization is now always enabled. Setting EnableArrow=0 previously disabled Arrow and forced columnar/JSON inline results; this value is now ignored and a deprecation warning is logged. For JSON inline results with SEA, disable CloudFetch via EnableQueryResultDownload=0. Exception: on AIX platforms and PowerPC architectures (os.arch contains ppc), EnableArrow is still honoured and defaults to disabled due to known Arrow native library compatibility issues.

Added

  • Added result set heartbeat / keep-alive to prevent server-side result expiry during slow consumption. When enabled via EnableHeartbeat=1, the driver periodically polls the backend to keep the operation alive while the client reads results. Configurable interval via HeartbeatIntervalSeconds (default 60s). Heartbeat automatically stops when results are fully consumed, ResultSet is closed, or the server returns a terminal state. Disabled by default due to cost implications (heartbeats keep the warehouse running).
  • Metadata operations now use SQL SHOW commands for both Thrift and SEA backends,

ensuring consistent behavior for SQL warehouses regardless of underlying protocol. To revert to native Thrift metadata RPCs, set UseQueryForMetadata=0.

Updated

  • Bump databricks-sdk-java from 0.69.0 to 0.106.0. The driver's own AgentDetector injection in UserAgentManager.setUserAgent is removed because SDK 0.106 now natively emits the agent/ User-Agent token via its built-in UserAgent.agentProvider(); keeping both layered produced a duplicate token on every SDK-routed request. The bootstrap buildUserAgentForConnectorService path retains its own AgentDetector call because it bypasses UserAgent.asString().
  • getColumnTypeName() for DECIMAL columns now preserves precision/scale suffix (e.g., "DECIMAL(10,2)") consistently across both Thrift and SEA backends.
  • EnableGeoSpatialSupport no longer requires EnableComplexDatatypeSupport=1. Geospatial types (GEOMETRY, GEOGRAPHY) can now be enabled independently of complex type support (ARRAY, MAP, STRUCT).
  • Arrow schema deserialization failures (Thrift metadata path) now surface a dedicated driver error code ARROW_SCHEMA_PARSING_ERROR (vendor code 22000) and a proper SQLSTATE 22000 (Data Exception) on the thrown SQLException, instead of the generic RESULT_SET_ERROR (1004) and the enum name as SQLSTATE. The exception message is unchanged.
  • When a Statement is re-executed, the previous server-side operation is now explicitly closed before starting the new execution, preventing orphaned server-side operations when Statements are reused.
  • Server-side operations are now closed proactively when ResultSet.close() is called, improving resource utilization. The client-side Statement remains open and reusable for re-execution.

Fixed

  • Bump shaded jackson-core from 2.18.6 to 2.18.7 to address SNYK-JAVA-COMFASTERXMLJACKSONCORE-15907551 (DoS via oversized JSON documents bypassing size limits). Fixes #1436.
  • Bump shaded httpclient5/httpcore5/httpcore5-h2 from 5.3.1 to 5.5.2 to address CVE-2025-8671 (HTTP/2 stream-reset DoS in httpcore5-h2). Fixes #1436.
  • Bump shaded netty-buffer/netty-common from 4.2.12.Final to 4.2.13.Final to clear OWASP scanner reports for the May 2026 batch of netty codec CVEs (CVE-2026-42577/42579/42580/42581/42582/42583/42584/42585/42586/42587, CVE-2026-44248, CVE-2026-41417, CVE-2026-42578). The driver does not use any netty HTTP/codec components — these vulnerabilities are not exploitable in this usage — but the bump silences the false-positive CPE matches.
  • Bump shaded commons-configuration2 from 2.10.1 to 2.15.0 to address CVE-2026-45205 (uncontrolled recursion when parsing untrusted YAML configurations). The driver does not parse untrusted YAML, so the practical risk is negligible.
  • Bump lz4-java from org.lz4:lz4-java:1.8.1 to at.yawk.lz4:lz4-java:1.10.1 to address CVE-2025-66566 (information leak via uncleared output buffers in the safe/unsafe Java decompressors). org.lz4:lz4-java:1.8.1 is a relocation-only POM that resolves to at.yawk.lz4:lz4-java:1.8.1,…

Excerpt shown — open the source for the full document.

Notability

notability 2.0/10

Routine JDBC driver update