sqlglot 30.24.0
- Source
- https://github.com/tobymao/sqlglot
- Artifact scanned
sqlglot-30.24.0-py3-none-any.whl- Compared with
sqlglot-30.23.0-py3-none-any.whl(0 signals introduced since)- Files
- 185 scanned, 5 skipped (binary, oversized, or unrecognised)
- Signals
- 1 critical · 0 warn · 4 info
- Scan time
- 8.4 s
- LLM review
- Reviewed by claude-haiku-5-5 (Anthropic): 5 of 5 warn and critical signals; 4 demoted to info.
- Disclude version
- 4.3.0
- Scanned (UTC)
- 2026-10-23 11:00
Signals
Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.
-
, = = =suspicious Dynamic import of a module named by a serialized class path during deserialization.Reasoning
The __import__ call loads a module whose path comes from a serialized class name string via rsplit, which is a dynamic deserialization mechanism. It is severity critical, but in a SQL parser's serde module this is a plausible legitimate design for reconstructing expression classes; the risk is that deserializing untrusted input could import arbitrary modules, which is worth noting.
-
= = returnlikely benign Lazy-loading of dialect classes via module __getattr__ caching into globals().Reasoning
This is a module-level __getattr__ lazy-loading pattern that caches a dialect class in globals() after getattr on its own submodule; the name is restricted to known dialect names, so it is a standard lazy import idiom rather than obfuscation.
-
returnlikely benign Executor evaluates compiled Python expression code in a controlled namespace.Reasoning
eval is used deliberately by the sqlglot executor to evaluate generated Python code for query expressions against a controlled env dict. It is a legitimate, if risky, design for a SQL-to-Python executor, and the code originates from the library's own compiler rather than untrusted external input in an obvious way.
-
= returnlikely benign Compiles generated Python code for SQL expression evaluation in the executor.Reasoning
compile of generated SQL-to-Python source with mode eval is part of the executor's query compilation pipeline; the input is the library's own generated code, not a hidden payload or encoded blob.
-
= returnlikely benign Lazy attribute loading for optimizer submodules cached into globals().Reasoning
Same module-level __getattr__ lazy-loading idiom caching a submodule attribute into globals(), raising AttributeError for unknown names; standard and benign.
Reproduce This Scan
Run disclude locally to verify. These commands scan the published file; the "new in this release" marks come from comparing it with the previous release's file, which they don't repeat. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.
|