summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2021-06-10 01:23:35 +0000
committerGerrit Code Review <review@openstack.org>2021-06-10 01:23:35 +0000
commit252733dce7ae7d335b982d36e96b64e7a29d4ef2 (patch)
tree3e56d4b731527f27d63dea00910ef708f9aa5f2b
parent0783e46e33236dc29833c2896920ade3d3f45126 (diff)
parent2f8625efbdd5ceba2c5d7b5444a8e263547a1f9f (diff)
downloadkeystone-252733dce7ae7d335b982d36e96b64e7a29d4ef2.tar.gz
Merge "Make DB queries compatible with SQLAlchemy 1.4.x"
-rw-r--r--keystone/common/sql/core.py8
-rw-r--r--keystone/identity/shadow_backends/sql.py3
2 files changed, 10 insertions, 1 deletions
diff --git a/keystone/common/sql/core.py b/keystone/common/sql/core.py
index ed84e5893..89169aaf3 100644
--- a/keystone/common/sql/core.py
+++ b/keystone/common/sql/core.py
@@ -119,6 +119,10 @@ ModelBase.__init__ = initialize_decorator(ModelBase.__init__)
class JsonBlob(sql_types.TypeDecorator):
impl = sql.Text
+ # NOTE(ralonsoh): set to True as any other TypeDecorator in SQLAlchemy
+ # https://docs.sqlalchemy.org/en/14/core/custom_types.html# \
+ # sqlalchemy.types.TypeDecorator.cache_ok
+ cache_ok = True
def process_bind_param(self, value, dialect):
return jsonutils.dumps(value)
@@ -144,6 +148,10 @@ class DateTimeInt(sql_types.TypeDecorator):
impl = sql.BigInteger
epoch = datetime.datetime.fromtimestamp(0, tz=pytz.UTC)
+ # NOTE(ralonsoh): set to True as any other TypeDecorator in SQLAlchemy
+ # https://docs.sqlalchemy.org/en/14/core/custom_types.html# \
+ # sqlalchemy.types.TypeDecorator.cache_ok
+ cache_ok = True
def process_bind_param(self, value, dialect):
if value is None:
diff --git a/keystone/identity/shadow_backends/sql.py b/keystone/identity/shadow_backends/sql.py
index 1d817c038..3e04b332d 100644
--- a/keystone/identity/shadow_backends/sql.py
+++ b/keystone/identity/shadow_backends/sql.py
@@ -98,7 +98,8 @@ class ShadowUsers(base.ShadowUsersDriverBase):
x for x in hints.filters if x['name'] not in ('idp_id',
'protocol_id',
'unique_id')]
- query = query.filter(sqlalchemy.and_(*statements))
+ if statements:
+ query = query.filter(sqlalchemy.and_(*statements))
return query
def get_federated_users(self, hints):