From 47289e45600c2f2eda8e9ec914c3e0f5a55da969 Mon Sep 17 00:00:00 2001 From: Jay Kamat Date: Tue, 2 Apr 2019 22:35:57 -0700 Subject: Fix 'too many SQL variables' variant --- qutebrowser/completion/models/histcategory.py | 1 + qutebrowser/misc/sql.py | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/qutebrowser/completion/models/histcategory.py b/qutebrowser/completion/models/histcategory.py index d53a899c7..a9ae1d9b2 100644 --- a/qutebrowser/completion/models/histcategory.py +++ b/qutebrowser/completion/models/histcategory.py @@ -107,6 +107,7 @@ class HistoryCategory(QSqlQueryModel): except sql.SqlKnownError as e: # Sometimes, the query we built up was invalid, for example, # due to a large amount of words. + # Also catches failures in the DB we can't solve. message.error("Error with SQL Query: {}".format(e.text())) return self.setQuery(self._query.query) diff --git a/qutebrowser/misc/sql.py b/qutebrowser/misc/sql.py index 72474a9f4..cd84b1fd6 100644 --- a/qutebrowser/misc/sql.py +++ b/qutebrowser/misc/sql.py @@ -111,10 +111,15 @@ def raise_sqlite_error(msg, error): driver_text == "Error opening database" and database_text == "out of memory") - if ((error_code in environmental_errors or qtbug_70506) or - (error_code == SqliteErrorCode.ERROR and - driver_text == "Unable to execute statement" and - database_text.startswith("Expression tree is too large"))): + # https://github.com/qutebrowser/qutebrowser/issues/4681 + # If the query we built was too long + too_long_err = ( + error_code == SqliteErrorCode.ERROR and + driver_text == "Unable to execute statement" and + (database_text.startswith("Expression tree is too large") or + database_text == "too many SQL variables")) + + if (error_code in environmental_errors or qtbug_70506 or too_long_err): raise SqlKnownError(msg, error) raise SqlBugError(msg, error) -- cgit v1.2.3-54-g00ecf