Add VARIANT type to ColumnInfoTypeName for correct SEA metadata#1388
Merged
sreekanth-db merged 4 commits intomainfrom Apr 9, 2026
Merged
Add VARIANT type to ColumnInfoTypeName for correct SEA metadata#1388sreekanth-db merged 4 commits intomainfrom
sreekanth-db merged 4 commits intomainfrom
Conversation
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>
vikrantpuppala
approved these changes
Apr 8, 2026
3 tasks
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
nullforgetColumnClassName()becauseColumnInfoTypeNamehad noVARIANTenum value, causing Jackson deserialization to fail silentlyVARIANTto 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)Test plan
DatabricksTypeUtilTest— 59 tests pass (includes new VARIANT assertions intestGetColumnType,testGetColumnTypeClassName,testGetColumnInfoType,testIsSigned)DatabricksResultSetMetaDataTest— 28 tests passexample_run_variantagainst live workspace — both THRIFT and SEA returnColumnClassName=java.lang.String, ColumnTypeName=VARIANTThis pull request was AI-assisted by Isaac.