@@ -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
689692def _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
701709def _replace_remote_sources (
0 commit comments