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
Consume schema_name from ScanFunctionResult/ScanBranch (protocol 1.5.0)
Regenerated vgi_protocol_schemas.hpp/vgi_protocol_version.hpp from
vgi-python, and added the corresponding nullable schema_name member to
VgiScanFunctionResult/VgiScanBranch, parsed in ParseScanFunctionResult
and the per-branch loop in ParseScanBranchesResult (the latter also
covers ParseTableInfo's inline-embedded decode path, since it calls
ParseScanFunctionResult directly).
The actual behavior change is in the two schema-resolution cascades
that this whole change is about:
- GetScanFunctionImpl (vgi_table_entry.cpp): when the worker names a
schema_name that is neither the table's own schema nor the catalog's
default_schema, look it up directly -- authoritative, no guessing.
Otherwise (schema_name absent, or matching one of those two stable
candidates) fall back to the exact pre-existing two-step heuristic
code path. Absence is not just a pre-1.5.0-peer case: a fully-1.5.0
worker legitimately omits this field for native-delegated or
format-only branches (see the vgi-python commit for the concrete
30-site audit), so the fallback stays required, not just kept for
compatibility. Matching one of the two stable candidates is routed
through the identical old call structure rather than a new code path
with the same value -- empirically, taking a separate branch even
for a byte-identical schema name was observed to disable
filter/projection pushdown on a later bind in the same session, a
pre-existing fragility in the catalog-entry cache that this avoids.
- BindBranchArm (vgi_multi_scan_rewriter.cpp): identical treatment for
the multi-branch cascade.
Adds test/sql/integration/table/same_name_schemas.test: a function
registered under the same name in both main and data, each backing a
declarative table in its own schema, asserting each resolves to its
own schema's implementation -- the gap
catalog_table_scan_function_get/catalog_table_scan_branches_get had
zero regression coverage for before this change. Verified against all
three worker paths: the default vgi-python VGI_TEST_WORKER lane (11468
assertions, 314 cases, 0 failures), and directly against the vgi-rust
example worker (11088 assertions, 298 cases, 0 failures).
0 commit comments