@@ -474,18 +474,21 @@ def __init__(self, editor_window):
474474 self .completer .setCaseSensitivity (Qt .CaseSensitivity .CaseInsensitive )
475475 self .completer .setWidget (self )
476476 self .completer .activated .connect (self .insert_completion )
477- self .update_completer_options ( )
478- self .sql_context = pl . SQLContext ( )
479-
480- def update_completer_options (self , data = None ):
481- if data is not None :
482- data = self ._filter_data_for_sql ( data )
483- self . sql_context . register_many ( data )
484- var_names = [ k for k , v in data . items ()]
477+ self .sql_context = pl . SQLContext ( eager = False )
478+ self .update_completer_options ({} )
479+
480+ def update_completer_options (self , data , selected = None ):
481+ data = self . _filter_data_for_sql ( data )
482+ if selected is not None and self ._handled_by_polars_sql ( selected ):
483+ data [ 'self' ] = selected
484+ col_names = selected . collect_schema (). names ()
485485 else :
486- var_names = []
487- logger .debug (f"available variables for SQL queries: { var_names } " )
488- completions = var_names + self .SQL_KEYWORDS
486+ col_names = []
487+ self .sql_context .register_many (data )
488+ table_names = [k for k , v in data .items ()]
489+ logger .debug (f"available tables for SQL queries: { table_names } " )
490+ logger .debug (f"available columns for SQL queries: { col_names } " )
491+ completions = table_names + col_names + self .SQL_KEYWORDS
489492 model = QStringListModel (completions , self .completer )
490493 self .completer .setModel (model )
491494
@@ -1246,6 +1249,8 @@ def set_current_array(self, array, expr_text):
12461249 # this method is also called to refresh the widget value because of an
12471250 # inplace setitem
12481251
1252+ if self .sql_widget is not None :
1253+ self .sql_widget .update_completer_options (self .data , selected = array )
12491254 # FIXME: we should never store the current_array but current_adapter instead
12501255 self .current_array = array
12511256 self .arraywidget .set_data (array )
0 commit comments