Skip to content
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 36 additions & 6 deletions NEXT_CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,47 @@

## [Unreleased]

### BREAKING CHANGES in 3.4.1
### BREAKING CHANGES in 3.4.1 — Metadata JDBC Spec Compliance
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

overall, i think we should stick to the added/updated/fixed structure that we have

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a major change, so we wanted to highlight this explicitly.


1. **`getTables()`: Percent sign (`%`) in catalog argument is now treated as a literal character, not a wildcard.** Previously returned all tables; now returns zero rows unless a catalog named "%" exists. JDBC spec: catalog is an exact-match parameter, not a pattern. Migration: Pass `null` to search all catalogs.
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.

2. **`getColumnTypeName()`: DECIMAL columns now return `"DECIMAL"` without precision/scale** (e.g., `"DECIMAL"` not `"DECIMAL(10,2)"`). Use `getPrecision()` and `getScale()` for numeric constraints. JDBC spec: `getColumnTypeName()` returns the base type name only.
* **`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; now returns zero rows.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

now returns zero rows is not always correct (e.g., catalog name containing underscore). Shall we remove it ?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rephrased

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated

Use `null` to search all catalogs.

3. **For DBSQL warehouses, metadata operations are now powered by SHOW SQL commands.** SQL Exec API mode already was powered by SHOW commands, now the same is true for Thrift server mode as well. To revert to native Thrift metadata RPCs, set `UseQueryForMetadata` to `0`.
* **`getTables` with empty types array: Now returns zero rows per JDBC spec.**
Previously ignored the empty array and returned all table types. Use `null` to
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think previously thrift didn't return all types for empty types array, only SEA did. Shall we remove previous behaviour from the changelog ?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

return all types.

4. **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.
* **`getColumnTypeName()` for DECIMAL: Now returns `"DECIMAL"` without
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DECIMAL columns now preserve precision/scale suffix right ?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

precision/scale suffix.** Use `getPrecision()` and `getScale()` to retrieve
numeric constraints.

### Added
* **`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.

* **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.

### Enhancements & New Features
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we not add a new section and move this under added / updated/ fixed?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

moved to added/updated


* 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
- `EnableGeoSpatialSupport` no longer requires `EnableComplexDatatypeSupport=1`. Geospatial types (GEOMETRY, GEOGRAPHY) can now be enabled independently of complex type support (ARRAY, MAP, STRUCT).
Expand Down
Loading