def refresh(self, executor, callbacks, completer_options=None):
if completer_options is None:<EOL><INDENT>completer_options = {}<EOL><DEDENT>if self.is_refreshing():<EOL><INDENT>self._restart_refresh.set()<EOL>return [(None, None, None, '<STR_LIT>')]<EOL><DEDENT>else:<EOL><INDENT>self._completer_thread = threading.Thread(<EOL>target=self._bg_refresh,<EOL>args=(executor, callbacks, completer_options),<EOL>name='<STR_LIT>')<EOL>self._completer_thread.setDaemon(True)<EOL>self._completer_thread.start()<EOL>return [(None, None, None,<EOL>'<STR_LIT>')]<EOL><DEDENT>
Creates a SQLCompleter object and populates it with the relevant
        completion suggestions in a background thread.

        executor - SQLExecute object, used to extract the credentials to connect
                   to the database.
        callbacks - A function or a list of functions to call after the thread
                    has completed the refresh. The newly created completion
                    object will be passed in as an argument to each callback.
        completer_options - dict of options to pass to SQLCompleter.