Skip to content

Add VARIANT type to ColumnInfoTypeName for correct SEA metadata#1388

Merged
sreekanth-db merged 4 commits intomainfrom
worktree-variant-fix
Apr 9, 2026
Merged

Add VARIANT type to ColumnInfoTypeName for correct SEA metadata#1388
sreekanth-db merged 4 commits intomainfrom
worktree-variant-fix

Conversation

@sreekanth-db
Copy link
Copy Markdown
Collaborator

Summary

  • VARIANT columns in the SEA path returned null for getColumnClassName() because ColumnInfoTypeName had no VARIANT enum value, causing Jackson deserialization to fail silently
  • Added VARIANT to the enum and all relevant type mapping methods (getColumnInfoType, getColumnType, getColumnTypeClassName) so both SEA and Thrift paths return consistent metadata (java.lang.String, Types.OTHER)
  • Added test coverage for all new VARIANT mappings

Test plan

  • DatabricksTypeUtilTest — 59 tests pass (includes new VARIANT assertions in testGetColumnType, testGetColumnTypeClassName, testGetColumnInfoType, testIsSigned)
  • DatabricksResultSetMetaDataTest — 28 tests pass
  • E2E verification: ran example_run_variant against live workspace — both THRIFT and SEA return ColumnClassName=java.lang.String, ColumnTypeName=VARIANT

This pull request was AI-assisted by Isaac.

VARIANT columns in SEA path returned null for getColumnClassName()
because ColumnInfoTypeName had no VARIANT value, causing Jackson
deserialization to return null. Add VARIANT to the enum and type
mapping methods so both SEA and Thrift paths return consistent
metadata.

Signed-off-by: Sreekanth Vadigi <sreekanth.vadigi@databricks.com>

Co-authored-by: Isaac
Signed-off-by: Sreekanth Vadigi <sreekanth.vadigi@databricks.com>
Signed-off-by: Sreekanth Vadigi <sreekanth.vadigi@databricks.com>

Co-authored-by: Isaac
Signed-off-by: Sreekanth Vadigi <sreekanth.vadigi@databricks.com>
@sreekanth-db sreekanth-db enabled auto-merge (squash) April 9, 2026 19:50
@sreekanth-db sreekanth-db merged commit e0ef2e7 into main Apr 9, 2026
15 checks passed
@sreekanth-db sreekanth-db deleted the worktree-variant-fix branch April 9, 2026 20:08
gopalldb added a commit that referenced this pull request Apr 21, 2026
## Summary
Change the default value of `UseQueryForMetadata` from `0` to `1`,
making SQL SHOW commands the default for Thrift-mode metadata operations
instead of native Thrift RPCs. This aligns Thrift metadata behavior with
SEA mode for seamless server-side protocol switching.

## Breaking Change
This is a **breaking change** for users who depend on Thrift-native
metadata behavior. Key differences:
- Catalog parameter is now a literal identifier (not a wildcard pattern)
per JDBC spec
- Methods that threw exceptions for null/empty inputs now return empty
result sets
- `getFunctions` now works (was broken via native Thrift RPC)
- Result columns return stored values (lowercase) instead of preserving
input case

**To revert:** set `UseQueryForMetadata=0` in the connection string.

## Readiness
- Comparator analysis complete (Apr 8-16, 2026) — all gaps resolved
- Merged PRs: #1387 (GEOMETRY/GEOGRAPHY types), #1388 (VARIANT
className), #1390 (null key params), #1411 (case-sensitive cross
reference filter)

## Test plan
- [x] Comparator analysis validates parity between SHOW commands and
native RPCs
- [ ] Full unit test suite passes
- [ ] Integration tests pass with UseQueryForMetadata=1 (default)

This pull request was AI-assisted by Isaac.

---------

Signed-off-by: Gopal Lal <gopal.lal@databricks.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants