Fix for cinder-manage db purge

When backend database is postgresql, "cinder-manage db purge" will throw
an exception. The root cause is that "deleted" column in table
quality_of_service_specs is of type boolean, but it is compared with an
integer. In mysql, there's no such issue because boolean in mysql is
tinyint(1).

Some logs:
DBAPIError exception wrapped from (psycopg2.ProgrammingError) operator
does not exist: boolean = integer

Closes-Bug: #1797048

Change-Id: I05b0edef4cc56518e99622599f01dbd6280a7f1b
Signed-off-by: Liang Fang <liang.a.fang@intel.com>
This commit is contained in:
Liang Fang 2018-10-10 02:12:46 -04:00
parent 23cfc4fdea
commit 042ad4025a
1 changed files with 3 additions and 3 deletions

View File

@ -6536,9 +6536,9 @@ def purge_deleted_rows(context, age_in_days):
if six.text_type(table) == "quality_of_service_specs":
session.query(models.QualityOfServiceSpecs).filter(
and_(models.QualityOfServiceSpecs.specs_id.isnot(
None), models.QualityOfServiceSpecs.deleted == 1,
models.QualityOfServiceSpecs.deleted_at <
deleted_age)).delete()
None), models.QualityOfServiceSpecs.
deleted.is_(True), models.QualityOfServiceSpecs.
deleted_at < deleted_age)).delete()
result = session.execute(
table.delete()
.where(table.c.deleted_at < deleted_age))