databricks/databricks-jdbc v3.3.1
databricks/databricks-jdbc
Captured source
source ↗published Mar 19, 2026seen 5dcaptured 8hhttp 200method plain
Release Databricks OSS JDBC driver version 3.3.1
Repository: databricks/databricks-jdbc
Tag: v3.3.1
Published: 2026-03-19T08:12:08Z
Prerelease: no
Release notes:
Added
- Added
DatabaseMetaData.getProcedures()andDatabaseMetaData.getProcedureColumns()to discover stored procedures and their parameters. Queriesinformation_schema.routinesandinformation_schema.parametersusing parameterized SQL for both SEA and Thrift transports. - Added connection property
OAuthWebServerTimeoutto configure the OAuth browser authentication timeout for U2M (user-to-machine) flows, and also updated hardcoded 1-hour timeout to default 120 seconds timeout. - Added connection property
UseQueryForMetadatato use SQL SHOW commands instead of Thrift RPCs for metadata operations (getCatalogs, getSchemas, getTables, getColumns, getFunctions). This fixes incorrect wildcard matching where_was treated as a single-character wildcard in Thrift metadata pattern filters. - Added connection property
TreatMetadataCatalogNameAsPatternto control whether catalog names are treated as patterns in Thrift metadata RPCs. When disabled (default), unescaped_in catalog names is escaped to prevent single-character wildcard matching. This aligns with JDBC spec which treats catalogName as identifier and not pattern.
Updated
- Bumped
com.fasterxml.jackson.core:jackson-corefrom 2.18.3 to 2.18.6. - Fat jar now routes SDK and Apache HTTP client logs through Java Util Logging (JUL), removing the need for external logging libraries.
- Added Apache Arrow on-heap memory management for processing Arrow query results. Previously, Arrow result processing was unusable on JDK 16+ without passing the
--add-opens=java.base/java.nio=ALL-UNNAMEDJVM argument, due to stricter encapsulation of internal APIs. With this change, there is no JVM argument required - the driver automatically falls back to an on-heap memory path that uses standard JVM heap allocation instead of direct memory access. - Log timestamps now explicitly display timezone.
- [Breaking Change]
PreparedStatement.setTimestamp(int, Timestamp, Calendar)now properly applies Calendar timezone conversion using LocalDateTime pattern (inline withgetTimestamp). Previously Calendar parameter was ineffective. DatabaseMetaData.getColumns()with null catalog parameter now retrieves columns from all available catalogs when using SQL Execution API.
Fixed
- Fixed statement timeout when the server returns
TIMEDOUT_STATEdirectly in theExecuteStatementresponse (e.g. query queued under load), the driver now throwsSQLTimeoutExceptioninstead ofDatabricksHttpException. - Fixed Thrift polling infinite loop when server restarts invalidate operation handles, and added configurable timeout (
MetadataOperationTimeout, default 300s) with sleep between polls for metadata operations. - Fixed
DatabricksParameterMetaData.countParametersandDatabricksStatement.trimCommentsAndWhitespaceswith aSqlCommentParserutility class. - Fixed
rollback()to throwSQLExceptionwhen called in auto-commit mode (no active transaction), aligning with JDBC spec. Previously it silently sent a ROLLBACK command to the server. - Fixed
fetchAutoCommitStateFromServer()to accept both"1"/"0"and"true"/"false"responses fromSET AUTOCOMMITquery, since different server implementations return different formats. - Fixed socket leak in SDK HTTP client that prevented CRaC checkpointing. The SDK's connection pool was not shut down on
connection.close(), leaving TCP sockets open. - Fixed
IdleConnectionEvictorthread leak in long-running services. The feature-flags context shared per host was ref-counted incorrectly and held a stale connection UUID after the owning connection closed; on the next 15-minute refresh it silently recreated an HTTP client (and its evictor thread) that was never cleaned up. Connection UUIDs are now tracked idempotently and the stored connection context is updated when the owning connection closes. - Fixed Date fields within complex types (ARRAY, STRUCT, MAP) being returned as epoch day integers instead of proper date values.
- Fixed
DatabaseMetaData.getColumns()returning the column type name inCOLUMN_DEFfor columns with no default value.COLUMN_DEFnow correctly returnsnullper the JDBC specification. - Coalesce concurrent expired cloud fetch link refreshes into a single batch FetchResults RPC to prevent thread pool exhaustion under high concurrency.
Notability
notability 3.0/10Routine JDBC driver version bump