From 316ce9659acdec0bc45f8a33825ae3b076199b24 Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Thu, 2 Dec 2021 12:01:17 -0800 Subject: Fix set_property_atomic() boolean type casting In set_property_atomic() we pass an integer query filter for the deleted field, since most projects use an integer for this column. However, in glance the column is a boolean, which trips up postgres since the types are different (mysql and sqlite work fine). This minor change to use False instead of 0 should fix that for postgres users. Change-Id: I5149df76943c1c19f3204b904c0e2d3ef846bdf7 Closes-Bug: #1953063 (cherry picked from commit 753c74c343ab4ef32879a3dd95c3a956af77f869) --- glance/db/sqlalchemy/api.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/glance/db/sqlalchemy/api.py b/glance/db/sqlalchemy/api.py index 48dfd0e45..b8794fb2d 100644 --- a/glance/db/sqlalchemy/api.py +++ b/glance/db/sqlalchemy/api.py @@ -873,13 +873,13 @@ def image_set_property_atomic(image_id, name, value): table = models.ImageProperty.__table__ # This should be: - # UPDATE image_properties SET value=$value, deleted=0 - # WHERE name=$name AND deleted!=0 + # UPDATE image_properties SET value=$value, deleted=False + # WHERE name=$name AND deleted!=False result = connection.execute(table.update().where( sa_sql.and_(table.c.name == name, table.c.image_id == image_id, - table.c.deleted != 0)).values( - value=value, deleted=0)) + table.c.deleted != False)).values( + value=value, deleted=False)) if result.rowcount == 1: # Found and updated a deleted property, so we win return @@ -924,7 +924,7 @@ def image_delete_property_atomic(image_id, name, value): sa_sql.and_(table.c.name == name, table.c.value == value, table.c.image_id == image_id, - table.c.deleted == 0))) + table.c.deleted == False))) if result.rowcount == 1: return -- cgit v1.2.1