diff options
author | Alex Grönholm <alex.gronholm@nextday.fi> | 2021-01-11 01:29:59 +0200 |
---|---|---|
committer | Alex Grönholm <alex.gronholm@nextday.fi> | 2021-01-11 02:18:51 +0200 |
commit | aee17426505bf4857c62f5300f007fba04cdd1e0 (patch) | |
tree | 9acc8fea78915fc5b7581e52b5c01b876dd966a6 | |
parent | 341a25d2f870c3e681ce4f0cc85ee275d77f9ddc (diff) | |
download | apscheduler-aee17426505bf4857c62f5300f007fba04cdd1e0.tar.gz |
Fixed potential where clause error in the SQLAlchemy job store
Fixes #438.
-rw-r--r-- | apscheduler/jobstores/sqlalchemy.py | 4 | ||||
-rw-r--r-- | docs/versionhistory.rst | 2 |
2 files changed, 4 insertions, 2 deletions
diff --git a/apscheduler/jobstores/sqlalchemy.py b/apscheduler/jobstores/sqlalchemy.py index fecbd83..dcfd3e5 100644 --- a/apscheduler/jobstores/sqlalchemy.py +++ b/apscheduler/jobstores/sqlalchemy.py @@ -11,7 +11,7 @@ except ImportError: # pragma: nocover try: from sqlalchemy import ( - create_engine, Table, Column, MetaData, Unicode, Float, LargeBinary, select) + create_engine, Table, Column, MetaData, Unicode, Float, LargeBinary, select, and_) from sqlalchemy.exc import IntegrityError from sqlalchemy.sql.expression import null except ImportError: # pragma: nocover @@ -134,7 +134,7 @@ class SQLAlchemyJobStore(BaseJobStore): jobs = [] selectable = select([self.jobs_t.c.id, self.jobs_t.c.job_state]).\ order_by(self.jobs_t.c.next_run_time) - selectable = selectable.where(*conditions) if conditions else selectable + selectable = selectable.where(and_(*conditions)) if conditions else selectable failed_job_ids = set() for row in self.engine.execute(selectable): try: diff --git a/docs/versionhistory.rst b/docs/versionhistory.rst index 4e6775a..b050e26 100644 --- a/docs/versionhistory.rst +++ b/docs/versionhistory.rst @@ -21,6 +21,8 @@ APScheduler, see the :doc:`migration section <migration>`. * Fixed memory leak when coroutine jobs raise exceptions (due to reference cycles in tracebacks) * Fixed inability to schedule wrapped functions with extra arguments when the wrapped function cannot accept them but the wrapper can (original PR by Egor Malykh) +* Fixed potential ``where`` clause error in the SQLAlchemy job store when a subclass uses more than + one search condition 3.6.3 |