diff options
author | Jay Kamat <jaygkamat@gmail.com> | 2019-04-02 22:35:57 -0700 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2019-04-03 08:54:59 +0200 |
commit | 47289e45600c2f2eda8e9ec914c3e0f5a55da969 (patch) | |
tree | 0e35c0ea0f15c319d16420b70eb734b7e387fef6 | |
parent | 0a2c1771201b946372e80be795f02578f5136ca0 (diff) | |
download | qutebrowser-47289e45600c2f2eda8e9ec914c3e0f5a55da969.tar.gz qutebrowser-47289e45600c2f2eda8e9ec914c3e0f5a55da969.zip |
Fix 'too many SQL variables' variant
-rw-r--r-- | qutebrowser/completion/models/histcategory.py | 1 | ||||
-rw-r--r-- | 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) |