summaryrefslogtreecommitdiff
path: root/qutebrowser/misc/sql.py
diff options
context:
space:
mode:
Diffstat (limited to 'qutebrowser/misc/sql.py')
-rw-r--r--qutebrowser/misc/sql.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/qutebrowser/misc/sql.py b/qutebrowser/misc/sql.py
index e3540e082..dd33621f6 100644
--- a/qutebrowser/misc/sql.py
+++ b/qutebrowser/misc/sql.py
@@ -36,6 +36,7 @@ class SqliteErrorCode:
"""
UNKNOWN = '-1'
+ ERROR = '1' # generic error code
BUSY = '5' # database is locked
READONLY = '8' # attempt to write a readonly database
IOERR = '10' # disk I/O error
@@ -73,6 +74,11 @@ class SqlEnvironmentError(SqlError):
"""
+class SqlLongQueryError(SqlError):
+
+ """Raised when a query is too long."""
+
+
class SqlBugError(SqlError):
"""Raised on an error interacting with the SQL database.
@@ -112,8 +118,11 @@ def raise_sqlite_error(msg, error):
if error_code in environmental_errors or qtbug_70506:
raise SqlEnvironmentError(msg, error)
- else:
- raise SqlBugError(msg, error)
+ if (error_code == SqliteErrorCode.ERROR and
+ driver_text == "Unable to execute statement" and
+ database_text.startswith("Expression tree is too large")):
+ raise SqlLongQueryError(msg, error)
+ raise SqlBugError(msg, error)
def init(db_path):