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 753c74c343)
(cherry picked from commit 316ce9659a)
This commit is contained in:
Dan Smith 2021-12-02 12:01:17 -08:00 committed by Christian Rohmann
parent b1d635c287
commit 677c89c236
1 changed files with 5 additions and 5 deletions

View File

@ -804,13 +804,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
@ -855,7 +855,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