summaryrefslogtreecommitdiff
path: root/alot/db
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2021-01-31 10:32:36 +0100
committerAnton Khirnov <anton@khirnov.net>2021-01-31 10:32:36 +0100
commit999de45bad934654a7b1f1d874d08fbe0922660f (patch)
tree2ce04fe7c0212d398a3c5c0dc6405acaf49e87e2 /alot/db
parent50bcdf5aedb336e86278f02b89ac2725f3ea7940 (diff)
buffers/search: fix handling malformed queries
Diffstat (limited to 'alot/db')
-rw-r--r--alot/db/errors.py4
-rw-r--r--alot/db/manager.py13
2 files changed, 12 insertions, 5 deletions
diff --git a/alot/db/errors.py b/alot/db/errors.py
index bd2564f9..d5fd9f9a 100644
--- a/alot/db/errors.py
+++ b/alot/db/errors.py
@@ -12,6 +12,10 @@ class DatabaseROError(DatabaseError):
"""cannot write to read-only database"""
pass
+class QueryError(DatabaseError):
+ """malformed query"""
+ pass
+
class NonexistantObjectError(DatabaseError):
diff --git a/alot/db/manager.py b/alot/db/manager.py
index e57af181..aa67ed40 100644
--- a/alot/db/manager.py
+++ b/alot/db/manager.py
@@ -11,9 +11,8 @@ import os
from notmuch2 import Database, NotmuchError
-from .errors import DatabaseError
-from .errors import DatabaseROError
-from .errors import NonexistantObjectError
+from .errors import (DatabaseError, DatabaseROError, NonexistantObjectError,
+ QueryError)
from .sort import ORDER
from .thread import Thread
from ..settings.const import settings
@@ -214,8 +213,12 @@ class DBManager:
with self._db_ro() as db:
exclude_tags = self._exclude_tags | exclude_tags
- for t in db.threads(querystring, sort = sort, exclude_tags = exclude_tags):
- yield t.threadid
+ try:
+ for t in db.threads(querystring, sort = sort,
+ exclude_tags = exclude_tags):
+ yield t.threadid
+ except NotmuchError as e:
+ raise QueryError from e
async def startup(self):
self._write_queue = asyncio.Queue()