fix(iceberg): scan into *interface{} in DROP SCHEMA CASCADE fallback#661
Merged
Conversation
The DROP SCHEMA ... CASCADE compatibility fallback scanned search_path and
member-table rows into *string. That works on the standalone (database/sql)
executor but fails on the Flight executor (control plane / worker), whose Scan
contract requires *interface{}:
iceberg DROP SCHEMA CASCADE fallback failed: scan search_path: scan:
destination 0 must be *interface{}
(hit by the Fivetran capability test). Scan into interface{} and coerce to
string via a scanStringColumn helper. The test mock previously required *string
— the inverse of the real RowSet — so it masked the bug; it now mirrors the
*interface{} contract and guards against regression.
Verified: server suite green; live Lakekeeper DROP SCHEMA CASCADE (schema with a
table) succeeds end-to-end.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.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.
What
Follow-up to #659. The Iceberg
DROP SCHEMA … CASCADEcompatibility fallback scanned thesearch_pathsetting and the member-table names into*string. That works on the standalonedatabase/sqlexecutor but fails on the Flight executor (control plane → worker), whoseScancontract requires*interface{}:Surfaced by the Fivetran capability test (
DROP SCHEMA IF EXISTS fivetran_testing_schema_… CASCADE), which runs through the multitenant control plane.Fix
interface{}and coerce tostringvia ascanStringColumnhelper, at both scan sites (search_path + member tables).*string— the inverse of the real Flight RowSet — which is why this slipped through. It now mirrors the real*interface{}contract, so a regression to a typed scan fails the test.Testing
go build ./...+-tags kubernetes— cleanserversuite green (incl. the DROP SCHEMA CASCADE fallback tests)DROP SCHEMA … CASCADEon a schema containing a table drops the member tables then the schema successfully.🤖 Generated with Claude Code