Skip to content

v3.3.2 — DEPRECATED, use v3.3.3 instead

Choose a tag to compare

@vikrantpuppala vikrantpuppala released this 28 Apr 09:58
· 30 commits to main since this release
d54693a

Warning

DEPRECATED — use v3.3.3 instead.
The published Maven Central POM for 3.3.2 declares an unresolvable transitive dependency on the internal com.databricks:databricks-jdbc-core coordinate (which is never published to Maven Central). Consumers bumping from 3.3.1 to 3.3.2 fail with Could not find artifact com.databricks:databricks-jdbc-core:jar:3.3.2. Tracking issue: #1431. Fixed in 3.3.3.

Added

  • Added CallableStatement support with IN parameters. Connection.prepareCall() now returns a working DatabricksCallableStatement that supports positional parameter binding and execution via {call proc(?)} JDBC escape syntax. OUT/INOUT parameters and named parameters throw SQLFeatureNotSupportedException.
  • Added AI coding agent detection to the User-Agent header. When the driver is invoked by a known AI coding agent (e.g. Claude Code, Cursor, Gemini CLI), agent/<product> is appended to the User-Agent string.

Updated

  • Added support for using SQL SHOW commands for Thrift-mode metadata operations (getTables, getColumns, getSchemas, getFunctions, getPrimaryKeys, getImportedKeys, getCrossReference). Enable by setting UseQueryForMetadata=1. This aligns Thrift metadata behavior with Statement Execution API (SEA) mode.

Fixed

  • Improved error messages for cancelled statements: operations cancelled via Statement.cancel() or closed connections now return SQL state HY008 (operation cancelled) instead of generic error codes, making it easier for applications to detect and handle cancellations.
  • Fixed race condition between chunk download error handling and result set close that could cause invalid state transition warnings (CHUNK_RELEASED -> DOWNLOAD_FAILED) during Arrow Cloud Fetch operations in resource-constrained environments.
  • Fixed EnableBatchedInserts silently falling back to individual execution when table or schema names contain special characters (e.g., hyphens) inside backtick-quoted identifiers. Added a warn log when the fallback occurs.
  • Fixed IntervalConverter crash (IllegalArgumentException: Invalid interval metadata) when INTERVAL columns are returned via CloudFetch. Arrow metadata from CloudFetch uses underscored format (INTERVAL_YEAR_MONTH, INTERVAL_DAY_TIME) which the driver's regex did not accept.
  • Fixed Statement being prematurely closed after queries that return inline results, which prevented re-execution, getResultSet(), and getExecutionResult() from working. Statements now remain open and reusable until explicitly closed by the caller.
  • Fixed primitive types within complex types (ARRAY, MAP, STRUCT) not being correctly parsed when Arrow serialization uses alternate formats: TIMESTAMP/TIMESTAMP_NTZ as epoch microseconds or component arrays, and BINARY as base64-encoded strings.
  • Fixed PARSE_SYNTAX_ERROR for column names containing special characters (e.g., dots) when EnableBatchedInserts is enabled, by re-quoting column names with backticks in reconstructed multi-row INSERT statements.
  • Fixed Volume ingestion for SEA mode, which was broken due to statement being closed prematurely.
  • Fixed unclear error: [null] messages during transient HTTP failures (e.g. 502 Bad Gateway) in Thrift polling. Error messages now include server error details and use SQL state 08S01 (communication link failure) so callers can identify retryable errors. Also fixed DatabricksError (RuntimeException) from SDK client being unhandled in CloudFetch download paths.
  • Fixed escaped pattern characters in catalogName for getSchemas, as returned catalogName should be unescaped.
  • Fixed getColumnClassName() returning null for VARIANT columns in SEA mode by adding VARIANT to the type system.
  • Fixed getColumns() returning DATA_TYPE=0 (NULL) for GEOMETRY/GEOGRAPHY columns in Thrift mode. Now returns Types.VARCHAR (12) when geospatial is disabled and Types.OTHER (1111) when enabled, consistent with SEA mode.
  • Fixed getCrossReference() returning 0 rows when parent args are passed in uppercase. The client-side filter used case-sensitive comparison against server-returned lowercase names.