Repository navigation
feat: add opt-in metadata catalog name escaping - #985
Conversation
Signed-off-by: Vu Anh Phung <vu.phung@databricks.com>
Signed-off-by: Vu Anh Phung <vu.phung@databricks.com>
There was a problem hiding this comment.
Verdict: 1 Low
Looks good — a clean, well-tested opt-in feature. End-to-end wiring (connect → session → both backends) is correct, the Thrift/Kernel asymmetry (escaping on schemas/tables/columns vs. tables only) matches the documented behavior and the _catalog_or_none normalization, and the parametrized unit tests cover both backends thoroughly. One minor low-severity edge case noted in the escaping regex.
Signed-off-by: Vu Anh Phung <vu.phung@databricks.com>
There was a problem hiding this comment.
Verdict: 1 Low
Looks good — clean, opt-in, default-off feature that's well wired (Thrift via **kwargs, kernel explicitly in session.py) and thoroughly parametrized in tests. One low note: the escape regex only checks a single preceding backslash, so the "Match JDBC … regardless of backslash parity" comment doesn't actually match JDBC/LIKE semantics for even-length backslash runs (harmless in practice since catalog names lack backslashes). Also worth being aware: the parameter is a silent no-op on the SEA backend and on kernel schemas()/columns() by design — this matches the documented scope, so no change needed, just flagging for intent.
What type of PR is this?
Description
Catalog names containing
_can trigger unintended metadata pattern matching and extra catalog lookups. Add the opt-inescape_catalog_nameconnection parameter, defaulting toFalse, to escape unescaped underscores while preserving existing escapes and%wildcards.This applies to schemas, tables, and columns on Thrift and tables on kernel. Kernel schemas and columns already use exact catalog identifiers.
How is this tested?
628 tests passed, 3 skipped, including 198 metadata regression cases across both backends. Explicit cases document JDBC compatibility for even/odd backslash runs. Kernel calls are mocked. Black formatting and
git diff --checkpassed.Related Tickets & Documents
N/A