diff options
Diffstat (limited to 'qutebrowser/misc/sql.py')
-rw-r--r-- | qutebrowser/misc/sql.py | 13 |
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): |