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
{{ message }}
Repository navigation
Commit a53722f
Browse filesBrowse the repository at this point in the historyBrowse files
[fix](lance) Revalidate SHOW targets against the current dataset locator
Tighten the SHOW LANCE INDEX JOBS / SHOW LANCE INDEX JOB authorization
boundary in three ways:
- Exception-safe target resolution. getDbNullable/getTableNullable can
throw for external catalogs (expired credentials, remote provider
faults). Any resolution failure is now handled exactly like an
unresolvable target under the existing orphan semantics: the detail
command answers non-ADMIN callers with the fixed not-found response
instead of leaking the provider error, and one bad target no longer
aborts the whole listing. The provider error is never surfaced.
- Durable-locator revalidation. After a job reaches a terminal state and
releases its guard, a legitimate ALTER can repoint the same db.table
names at a different dataset. LanceExternalCatalog gains
resolveCurrentIndexJobLocator(db, table), which reuses the reader's
table-access resolution plus LanceIndexDatasetLocator.normalize and
returns null on any failure. Both SHOW commands now treat a target as
resolvable only when the names resolve AND the current locator is
non-null AND equals the job's persisted normalized locator; otherwise
the row follows the orphan (ADMIN-only) rule, so a user holding SHOW
on the repointed table cannot read the old dataset's history. The
listing resolves each unique (catalogId, db, table) locator once per
run through a dedupe cache (failed resolutions are cached too). Non-
Lance catalog instances keep the name-resolution-only rule.
- FROM db-name normalization. The FROM database filter compared the raw
requested string, so under lower_case_database_names = 1/2 a FROM DB1
filter missed jobs persisted under the resolved name db1. The
requested name is now resolved through the target catalog (explicit
or current) and replaced by the database's full name before the exact
comparison; an unresolvable name or a failed resolution keeps the raw
string and never fails the statement.
Tests: provider failures during resolution are orphan-like for the list
(omitted for non-ADMIN, visible to ADMIN) and byte-identical to the
missing response for the detail command; locator match keeps ordinary
table-level SHOW, while a repointed or unresolvable locator hides the
row/returns not-found for non-ADMIN and stays visible to ADMIN; one
listing resolves a shared target's locator once; FROM DB1 normalizes to
db1 through the catalog and falls back to the raw string when the
catalog cannot resolve it.
0 commit comments