Skip to content

Commit aa29042

Browse files
authored
Cut new release 3.3.1 (#1281)
## Description - New version cut: 3.3.1 - Version bumped across all pom.xml files, Java source, tests, README, and release notes - NEXT_CHANGELOG entries moved to CHANGELOG.md and release-notes.txt ## Testing - Version string tests updated for 3.3.1 - CI will validate build and tests ## Additional Notes to the Reviewer Modeled after PR #1194 (release 3.2.1). OVERRIDE_FREEZE=true This pull request was AI-assisted by Isaac. --------- Signed-off-by: Madhavendra Rathore <madhavendra.rathore@databricks.com>
1 parent 28d6a13 commit aa29042

15 files changed

Lines changed: 79 additions & 42 deletions

File tree

CHANGELOG.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,33 @@
11
# Version Changelog
22

3+
## [v3.3.1] - 2026-03-17
4+
5+
### Added
6+
- Added `DatabaseMetaData.getProcedures()` and `DatabaseMetaData.getProcedureColumns()` to discover stored procedures and their parameters. Queries `information_schema.routines` and `information_schema.parameters` using parameterized SQL for both SEA and Thrift transports.
7+
- Added connection property `OAuthWebServerTimeout` to configure the OAuth browser authentication timeout for U2M (user-to-machine) flows, and also updated hardcoded 1-hour timeout to default 120 seconds timeout.
8+
- Added connection property `UseQueryForMetadata` to 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.
9+
- Added connection property `TreatMetadataCatalogNameAsPattern` to 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.
10+
11+
### Updated
12+
- Bumped `com.fasterxml.jackson.core:jackson-core` from 2.18.3 to 2.18.6.
13+
- Fat jar now routes SDK and Apache HTTP client logs through Java Util Logging (JUL), removing the need for external logging libraries.
14+
- 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-UNNAMED` JVM 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.
15+
- Log timestamps now explicitly display timezone.
16+
- **[Breaking Change]** `PreparedStatement.setTimestamp(int, Timestamp, Calendar)` now properly applies Calendar timezone conversion using LocalDateTime pattern (inline with `getTimestamp`). Previously Calendar parameter was ineffective.
17+
- `DatabaseMetaData.getColumns()` with null catalog parameter now retrieves columns from all available catalogs when using SQL Execution API.
18+
19+
### Fixed
20+
- Fixed statement timeout when the server returns `TIMEDOUT_STATE` directly in the `ExecuteStatement` response (e.g. query queued under load), the driver now throws `SQLTimeoutException` instead of `DatabricksHttpException`.
21+
- 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.
22+
- Fixed `DatabricksParameterMetaData.countParameters` and `DatabricksStatement.trimCommentsAndWhitespaces` with a `SqlCommentParser` utility class.
23+
- Fixed `rollback()` to throw `SQLException` when called in auto-commit mode (no active transaction), aligning with JDBC spec. Previously it silently sent a ROLLBACK command to the server.
24+
- Fixed `fetchAutoCommitStateFromServer()` to accept both `"1"`/`"0"` and `"true"`/`"false"` responses from `SET AUTOCOMMIT` query, since different server implementations return different formats.
25+
- 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.
26+
- Fixed `IdleConnectionEvictor` thread 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.
27+
- Fixed Date fields within complex types (ARRAY, STRUCT, MAP) being returned as epoch day integers instead of proper date values.
28+
- Fixed `DatabaseMetaData.getColumns()` returning the column type name in `COLUMN_DEF` for columns with no default value. `COLUMN_DEF` now correctly returns `null` per the JDBC specification.
29+
- Coalesce concurrent expired cloud fetch link refreshes into a single batch FetchResults RPC to prevent thread pool exhaustion under high concurrency.
30+
331
## [v3.2.1] - 2026-02-16
432

533
### Added

NEXT_CHANGELOG.md

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,30 +3,10 @@
33
## [Unreleased]
44

55
### Added
6-
- Added `DatabaseMetaData.getProcedures()` and `DatabaseMetaData.getProcedureColumns()` to discover stored procedures and their parameters. Queries `information_schema.routines` and `information_schema.parameters` using parameterized SQL for both SEA and Thrift transports.
7-
- Added connection property `OAuthWebServerTimeout` to configure the OAuth browser authentication timeout for U2M (user-to-machine) flows, and also updated hardcoded 1-hour timeout to default 120 seconds timeout.
8-
- Added connection property `UseQueryForMetadata` to 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.
9-
- Added connection property `TreatMetadataCatalogNameAsPattern` to 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.
106

117
### Updated
12-
- Bumped `com.fasterxml.jackson.core:jackson-core` from 2.18.3 to 2.18.6.
13-
- Fat jar now routes SDK and Apache HTTP client logs through Java Util Logging (JUL), removing the need for external logging libraries.
14-
- PECOBLR-1121 Arrow patch to circumvent Arrow issues with JDK 16+.
15-
- Log timestamps now explicitly display timezone.
16-
- **[Breaking Change]** `PreparedStatement.setTimestamp(int, Timestamp, Calendar)` now properly applies Calendar timezone conversion using LocalDateTime pattern (inline with `getTimestamp`). Previously Calendar parameter was ineffective.
17-
- `DatabaseMetaData.getColumns()` with null catalog parameter now retrieves columns from all available catalogs when using SQL Execution API.
188

199
### Fixed
20-
- Fixed statement timeout when the server returns `TIMEDOUT_STATE` directly in the `ExecuteStatement` response (e.g. query queued under load), the driver now throws `SQLTimeoutException` instead of `DatabricksHttpException`.
21-
- 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.
22-
- Fixed `DatabricksParameterMetaData.countParameters` and `DatabricksStatement.trimCommentsAndWhitespaces` with a `SqlCommentParser` utility class.
23-
- Fixed `rollback()` to throw `SQLException` when called in auto-commit mode (no active transaction), aligning with JDBC spec. Previously it silently sent a ROLLBACK command to the server.
24-
- Fixed `fetchAutoCommitStateFromServer()` to accept both `"1"`/`"0"` and `"true"`/`"false"` responses from `SET AUTOCOMMIT` query, since different server implementations return different formats.
25-
- 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.
26-
- Fixed `IdleConnectionEvictor` thread 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.
27-
- Fixed Date fields within complex types (ARRAY, STRUCT, MAP) being returned as epoch day integers instead of proper date values.
28-
- Fixed `DatabaseMetaData.getColumns()` returning the column type name in `COLUMN_DEF` for columns with no default value. `COLUMN_DEF` now correctly returns `null` per the JDBC specification.
29-
- Coalesce concurrent expired cloud fetch link refreshes into a single batch FetchResults RPC to prevent thread pool exhaustion under high concurrency.
3010

3111
---
3212
*Note: When making changes, please add your change under the appropriate section

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Add the following dependency to your `pom.xml`:
2020
<dependency>
2121
<groupId>com.databricks</groupId>
2222
<artifactId>databricks-jdbc</artifactId>
23-
<version>3.2.1</version>
23+
<version>3.3.1</version>
2424
</dependency>
2525
```
2626

assembly-thin/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<groupId>com.databricks</groupId>
99
<artifactId>databricks-jdbc-parent</artifactId>
10-
<version>3.2.2-SNAPSHOT</version>
10+
<version>3.3.1</version>
1111
</parent>
1212

1313
<artifactId>databricks-jdbc-thin</artifactId>
@@ -51,7 +51,7 @@
5151
<dependency>
5252
<groupId>com.databricks</groupId>
5353
<artifactId>databricks-jdbc-core</artifactId>
54-
<version>3.2.2-SNAPSHOT</version>
54+
<version>3.3.1</version>
5555
</dependency>
5656
</dependencies>
5757

assembly-uber/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<groupId>com.databricks</groupId>
99
<artifactId>databricks-jdbc-parent</artifactId>
10-
<version>3.2.2-SNAPSHOT</version>
10+
<version>3.3.1</version>
1111
</parent>
1212

1313
<artifactId>databricks-jdbc</artifactId>
@@ -51,7 +51,7 @@
5151
<dependency>
5252
<groupId>com.databricks</groupId>
5353
<artifactId>databricks-jdbc-core</artifactId>
54-
<version>3.2.2-SNAPSHOT</version>
54+
<version>3.3.1</version>
5555
</dependency>
5656
</dependencies>
5757

jdbc-core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.databricks</groupId>
88
<artifactId>databricks-jdbc-parent</artifactId>
9-
<version>3.2.2-SNAPSHOT</version>
9+
<version>3.3.1</version>
1010
</parent>
1111

1212
<artifactId>databricks-jdbc-core</artifactId>

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<groupId>com.databricks</groupId>
66
<artifactId>databricks-jdbc-parent</artifactId>
77
<!-- This value may be modified by a release script to reflect the current version of the driver. -->
8-
<version>3.2.2-SNAPSHOT</version>
8+
<version>3.3.1</version>
99
<packaging>pom</packaging>
1010
<name>Databricks JDBC Parent</name>
1111
<description>Parent POM for Databricks JDBC Driver.</description>
@@ -63,7 +63,7 @@
6363
<build-helper-maven-plugin.version>3.6.1</build-helper-maven-plugin.version>
6464

6565
<!-- Dependency Versions -->
66-
<databricks-jdbc-version>3.2.2-SNAPSHOT</databricks-jdbc-version>
66+
<databricks-jdbc-version>3.3.1</databricks-jdbc-version>
6767
<arrow.version>18.3.0</arrow.version>
6868
<commons-lang3.version>3.18.0</commons-lang3.version>
6969
<commons-configuration.version>2.10.1</commons-configuration.version>

release-notes.txt

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,35 @@ The release notes summarize enhancements, new features, known issues, workflow c
66

77
Version History ==============================================================
88

9+
3.3.1 ========================================================================
10+
Released 2026-03-17
11+
12+
Enhancements & New Features
13+
14+
* Added `DatabaseMetaData.getProcedures()` and `DatabaseMetaData.getProcedureColumns()` to discover stored procedures and their parameters. Queries `information_schema.routines` and `information_schema.parameters` using parameterized SQL for both SEA and Thrift transports.
15+
* Added connection property `OAuthWebServerTimeout` to configure the OAuth browser authentication timeout for U2M (user-to-machine) flows, and also updated hardcoded 1-hour timeout to default 120 seconds timeout.
16+
* Added connection property `UseQueryForMetadata` to 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.
17+
* Added connection property `TreatMetadataCatalogNameAsPattern` to 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.
18+
* Bumped `com.fasterxml.jackson.core:jackson-core` from 2.18.3 to 2.18.6.
19+
* Fat jar now routes SDK and Apache HTTP client logs through Java Util Logging (JUL), removing the need for external logging libraries.
20+
* 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-UNNAMED` JVM 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.
21+
* Log timestamps now explicitly display timezone.
22+
* [Breaking Change] `PreparedStatement.setTimestamp(int, Timestamp, Calendar)` now properly applies Calendar timezone conversion using LocalDateTime pattern. Previously Calendar parameter was ineffective.
23+
* `DatabaseMetaData.getColumns()` with null catalog parameter now retrieves columns from all available catalogs when using SQL Execution API.
24+
25+
Resolved Issues
26+
27+
* Fixed statement timeout when the server returns `TIMEDOUT_STATE` directly in the `ExecuteStatement` response, the driver now throws `SQLTimeoutException` instead of `DatabricksHttpException`.
28+
* 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.
29+
* Fixed `DatabricksParameterMetaData.countParameters` and `DatabricksStatement.trimCommentsAndWhitespaces` with a `SqlCommentParser` utility class.
30+
* Fixed `rollback()` to throw `SQLException` when called in auto-commit mode (no active transaction), aligning with JDBC spec.
31+
* Fixed `fetchAutoCommitStateFromServer()` to accept both `"1"`/`"0"` and `"true"`/`"false"` responses from `SET AUTOCOMMIT` query.
32+
* Fixed socket leak in SDK HTTP client that prevented CRaC checkpointing.
33+
* Fixed `IdleConnectionEvictor` thread leak in long-running services.
34+
* Fixed Date fields within complex types (ARRAY, STRUCT, MAP) being returned as epoch day integers instead of proper date values.
35+
* Fixed `DatabaseMetaData.getColumns()` returning the column type name in `COLUMN_DEF` for columns with no default value. `COLUMN_DEF` now correctly returns `null` per the JDBC specification.
36+
* Coalesce concurrent expired cloud fetch link refreshes into a single batch FetchResults RPC to prevent thread pool exhaustion under high concurrency.
37+
938
3.2.1 ========================================================================
1039
Released 2026-02-16
1140

src/main/java/com/databricks/jdbc/api/impl/DatabricksDatabaseMetaData.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public class DatabricksDatabaseMetaData implements DatabaseMetaData {
2727
public static final String DRIVER_NAME = "DatabricksJDBC";
2828
public static final String PRODUCT_NAME = "SparkSQL";
2929
public static final int DATABASE_MAJOR_VERSION = 3;
30-
public static final int DATABASE_MINOR_VERSION = 2;
30+
public static final int DATABASE_MINOR_VERSION = 3;
3131
public static final int DATABASE_PATCH_VERSION = 1;
3232
public static final Integer MAX_NAME_LENGTH = 128;
3333
public static final String NUMERIC_FUNCTIONS =

src/main/java/com/databricks/jdbc/common/util/DriverUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
public class DriverUtil {
2121

2222
private static final JdbcLogger LOGGER = JdbcLoggerFactory.getLogger(DriverUtil.class);
23-
private static final String DRIVER_VERSION = "3.2.1";
23+
private static final String DRIVER_VERSION = "3.3.1";
2424
private static final String DRIVER_NAME = "oss-jdbc";
2525
private static final String JDBC_VERSION = "4.3";
2626

0 commit comments

Comments
 (0)