Skip to content

test(csharp): E2E metadata parity tests for Thrift and SEA#260

Open
msrathore-db wants to merge 1 commit intofeat/sea-metadata-part3from
feat/sea-metadata-part4
Open

test(csharp): E2E metadata parity tests for Thrift and SEA#260
msrathore-db wants to merge 1 commit intofeat/sea-metadata-part3from
feat/sea-metadata-part4

Conversation

@msrathore-db
Copy link
Collaborator

@msrathore-db msrathore-db commented Feb 27, 2026

🥞 Stacked PR

Use this link to review incremental changes only.

Summary

17 E2E tests asserting metadata parity between Thrift and SEA against main.adbc_testing.all_column_types.

Tests: GetCatalogs, GetTables, GetColumnsExtended, GetPrimaryKeys, GetTableSchema, GetTableTypes, GetInfo. Requires DATABRICKS_TEST_CONFIG_FILE.

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@msrathore-db msrathore-db force-pushed the feat/sea-metadata-part4 branch from 54f77e8 to cd97cce Compare March 2, 2026 09:46
@msrathore-db msrathore-db force-pushed the feat/sea-metadata-part3 branch from dbf4c74 to 3e07fa0 Compare March 2, 2026 09:46
@msrathore-db msrathore-db changed the title test(csharp): add E2E metadata assertion tests for Thrift and SEA test(csharp): E2E metadata parity tests for Thrift and SEA Mar 2, 2026
msrathore-db added a commit that referenced this pull request Mar 9, 2026
Implement metadata operations for the Statement Execution API (REST)
protocol, achieving parity with the existing Thrift implementation.

## Core Implementation
- IGetObjectsDataProvider async implementation for SEA in
  StatementExecutionConnection (GetCatalogs, GetSchemas, GetTables,
  GetColumns via SHOW commands)
- Statement-level metadata routing in StatementExecutionStatement
  (GetColumns, GetColumnsExtended, GetPrimaryKeys, GetCrossReference,
  GetTableSchema, GetTableTypes, GetInfo)
- SQL command builders (ShowCatalogs/Schemas/Tables/Columns/Keys/
  ForeignKeys) with pattern conversion (ADBC % → Databricks *)
- ColumnMetadataHelper for computing column metadata from type name
  strings (SEA-only, Thrift gets these from server)
- FlatColumnsResultBuilder for building flat GetColumns results
- MetadataUtilities for shared catalog/pattern helpers

## Connection Parameters
- EnablePKFK: gate PK/FK queries (default: true)
- EnableMultipleCatalogSupport: single vs multi-catalog mode
  (default: true), matching Thrift DatabricksConnection behavior
- DatabricksStatement-specific options silently accepted in SEA

## Design
- Shared MetadataSchemaFactory (hiveserver2) for Arrow schemas
- Shared GetObjectsResultBuilder for nested GetObjects structure
- Async internally, blocks once at ADBC sync boundary
- x-databricks-sea-can-run-fully-sync header for metadata queries
- Design doc: csharp/doc/sea-metadata-design.md

## Testing
- Unit tests for ShowCommands and MetadataUtilities (146 tests)
- E2E tests comparing Thrift and SEA parity (17 tests)
- Metadata comparator tool with schema type comparison

## Reviewed in
- hiveserver2: #21, #22 (merged)
- databricks: #257, #258, #259, #260, #261, #282 (reviewed)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
msrathore-db added a commit that referenced this pull request Mar 9, 2026
Implement metadata operations for the Statement Execution API (REST)
protocol, achieving parity with the existing Thrift implementation.

## Core Implementation
- IGetObjectsDataProvider async implementation for SEA in
  StatementExecutionConnection (GetCatalogs, GetSchemas, GetTables,
  GetColumns via SHOW commands)
- Statement-level metadata routing in StatementExecutionStatement
  (GetColumns, GetColumnsExtended, GetPrimaryKeys, GetCrossReference,
  GetTableSchema, GetTableTypes, GetInfo)
- SQL command builders (ShowCatalogs/Schemas/Tables/Columns/Keys/
  ForeignKeys) with pattern conversion (ADBC % → Databricks *)
- ColumnMetadataHelper for computing column metadata from type name
  strings (SEA-only, Thrift gets these from server)
- FlatColumnsResultBuilder for building flat GetColumns results
- MetadataUtilities for shared catalog/pattern helpers

## Connection Parameters
- EnablePKFK: gate PK/FK queries (default: true)
- EnableMultipleCatalogSupport: single vs multi-catalog mode
  (default: true), matching Thrift DatabricksConnection behavior
- DatabricksStatement-specific options silently accepted in SEA

## Design
- Shared MetadataSchemaFactory (hiveserver2) for Arrow schemas
- Shared GetObjectsResultBuilder for nested GetObjects structure
- Async internally, blocks once at ADBC sync boundary
- x-databricks-sea-can-run-fully-sync header for metadata queries
- Design doc: csharp/doc/sea-metadata-design.md

## Testing
- Unit tests for ShowCommands and MetadataUtilities (146 tests)
- E2E tests comparing Thrift and SEA parity (17 tests)
- Metadata comparator tool with schema type comparison

## Reviewed in
- hiveserver2: #21, #22 (merged)
- databricks: #257, #258, #259, #260, #261, #282 (reviewed)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
github-merge-queue bot pushed a commit that referenced this pull request Mar 10, 2026
## What's Changed
Implement metadata operations for the Statement Execution API (REST)
protocol, achieving parity with the existing Thrift implementation.

## Core Implementation
- IGetObjectsDataProvider async implementation for SEA in
StatementExecutionConnection (GetCatalogs, GetSchemas, GetTables,
GetColumns via SHOW commands)
- Statement-level metadata routing in StatementExecutionStatement
(GetColumns, GetColumnsExtended, GetPrimaryKeys, GetCrossReference,
GetTableSchema, GetTableTypes, GetInfo)
- SQL command builders (ShowCatalogs/Schemas/Tables/Columns/Keys/
ForeignKeys) with pattern conversion (ADBC % → Databricks *)
- ColumnMetadataHelper for computing column metadata from type name
strings (SEA-only, Thrift gets these from server)
- FlatColumnsResultBuilder for building flat GetColumns results
- MetadataUtilities for shared catalog/pattern helpers

## Connection Parameters
- EnablePKFK: gate PK/FK queries (default: true)
- EnableMultipleCatalogSupport: single vs multi-catalog mode (default:
true), matching Thrift DatabricksConnection behavior
- DatabricksStatement-specific options silently accepted in SEA

## Design
- Shared MetadataSchemaFactory (hiveserver2) for Arrow schemas
- Shared GetObjectsResultBuilder for nested GetObjects structure
- Async internally, blocks once at ADBC sync boundary
- x-databricks-sea-can-run-fully-sync header for metadata queries
- Design doc: csharp/doc/sea-metadata-design.md

## Testing
- Unit tests for ShowCommands and MetadataUtilities (146 tests)
- E2E tests comparing Thrift and SEA parity (17 tests)
- Metadata comparator tool with schema type comparison

## Reviewed in
- hiveserver2: #21, #22 (merged)
- databricks: #257, #258, #259, #260, #261, #282 (reviewed)

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.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