You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(csharp/src/Drivers/Apache): enhance GetColumns with BASE_TYPE_NAME column (apache#2695)
## Summary
This PR enhances the C# ADBC driver's `GetColumns` functionality by
adding a new `BASE_TYPE_NAME` column to the result set. This column
provides the base type name without parameters or decorations, making it
easier for clients to identify the fundamental data type regardless of
its parameterization.
## Proposed Changes
- Added a new `BASE_TYPE_NAME` column to the `GetColumns` result schema
- Enhanced the `HiveServer2Statement` class to process and populate the
`BASE_TYPE_NAME` column
- Changed visibility modifiers for several methods from `protected` to
`public` or `internal` to enable the enhancement
- Added support for the `VARIANT` SQL type in the `SqlTypeNameParser`
- Created comprehensive unit tests to verify the functionality with
various data types
## Implementation Details
The implementation:
1. Intercepts `GetColumns` query results
2. Processes each row to extract the base type name using the existing
`SetPrecisionScaleAndTypeName` method
3. Adds the base type name as a new column in the result set
4. Preserves and potentially enhances precision and scale information
for parameterized types
## Benefits
- Simplifies client code that needs to identify base types (e.g., all
DECIMAL types regardless of precision/scale)
- Maintains compatibility with existing code as this is an additive
change
- Improves developer experience by providing clearer type information
## Testing
Added comprehensive unit tests that verify:
- The presence of the BASE_TYPE_NAME column in GetColumns results
- Correct base type extraction for simple types
- Correct base type extraction for complex types (DECIMAL, INTERVAL,
MAP, ARRAY, STRUCT)
- Precision and scale preservation for DECIMAL types
- Proper handling of type aliases (INT vs INTEGER)
0 commit comments