Skip to content

Commit 6acf51b

Browse files
committed
fix: tighten DuckDB WASM SQL patch wrapper
1 parent f61711a commit 6acf51b

1 file changed

Lines changed: 11 additions & 3 deletions

File tree

marimo/_runtime/_wasm/_duckdb/__init__.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -433,17 +433,20 @@ def _wrapper(*args: Any, **kwargs: Any) -> Any:
433433
if frame is None or frame.f_back is None:
434434
return original(*args, **kwargs)
435435
caller_frame = frame.f_back
436+
eval_globals = caller_frame.f_globals
437+
eval_locals = caller_frame.f_locals
436438
try:
437439
return run_duckdb_sql_with_wasm_patch(
438440
original,
439441
args,
440442
kwargs,
441443
query_arg_index=query_arg_index,
442444
query_kwarg_names=query_kwarg_names,
443-
eval_globals=caller_frame.f_globals,
444-
eval_locals=caller_frame.f_locals,
445+
eval_globals=eval_globals,
446+
eval_locals=eval_locals,
445447
)
446448
finally:
449+
del caller_frame
447450
del frame
448451

449452
return _wrapper
@@ -688,14 +691,19 @@ def _require_sqlglot() -> None:
688691

689692
def _parse_duckdb_query(query: str) -> list[exp.Expression] | None:
690693
import sqlglot
694+
from sqlglot import exp as sqlglot_exp
691695

692696
try:
693697
parsed = sqlglot.parse(query, read="duckdb")
694698
except Exception as e:
695699
LOGGER.debug("Failed to parse DuckDB query for WASM patch: %s", e)
696700
return None
697701

698-
return [statement for statement in parsed if statement is not None]
702+
return [
703+
statement
704+
for statement in parsed
705+
if isinstance(statement, sqlglot_exp.Expression)
706+
]
699707

700708

701709
def _replace_remote_sources(

0 commit comments

Comments
 (0)