summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJay Kamat <jaygkamat@gmail.com>2019-04-02 22:35:57 -0700
committerFlorian Bruhin <me@the-compiler.org>2019-04-03 08:54:59 +0200
commit47289e45600c2f2eda8e9ec914c3e0f5a55da969 (patch)
tree0e35c0ea0f15c319d16420b70eb734b7e387fef6
parent0a2c1771201b946372e80be795f02578f5136ca0 (diff)
downloadqutebrowser-47289e45600c2f2eda8e9ec914c3e0f5a55da969.tar.gz
qutebrowser-47289e45600c2f2eda8e9ec914c3e0f5a55da969.zip
Fix 'too many SQL variables' variant
-rw-r--r--qutebrowser/completion/models/histcategory.py1
-rw-r--r--qutebrowser/misc/sql.py13
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)