diff --git a/pipekit/drivers/base.py b/pipekit/drivers/base.py index 2ab2e97..d9f1ae7 100644 --- a/pipekit/drivers/base.py +++ b/pipekit/drivers/base.py @@ -66,11 +66,16 @@ class RemoteColumn: # identifiers; reject everything else before it reaches a query. # --------------------------------------------------------------------------- -_SAFE_IDENT = re.compile(r"^[A-Za-z_][A-Za-z0-9_$#]*$") +_SAFE_IDENT = re.compile(r"^[A-Za-z_][A-Za-z0-9_$#.]*$") def validate_identifier(value: str, field_name: str = "identifier") -> str: - if not isinstance(value, str) or not _SAFE_IDENT.match(value): + if not isinstance(value, str): + raise ValueError(f"invalid {field_name}: {value!r}") + # Strip surrounding double quotes — caller should pass the bare name + if value.startswith('"') and value.endswith('"') and len(value) > 2: + value = value[1:-1] + if not _SAFE_IDENT.match(value): raise ValueError(f"invalid {field_name}: {value!r}") return value