diff --git a/sat/memory/sqla.py b/sat/memory/sqla.py index e390a20e..a4e49990 100644 --- a/sat/memory/sqla.py +++ b/sat/memory/sqla.py @@ -19,6 +19,7 @@ import sys import time import asyncio +import copy from datetime import datetime from asyncio.subprocess import PIPE from pathlib import Path @@ -981,14 +982,15 @@ class Storage: )).scalar_one() except NoResultFound: raise exceptions.NotFound + old_value = copy.deepcopy(value) update_cb(value) - stmt = update(orm_col).filter_by(id=file_id) - if not value: + stmt = update(File).filter_by(id=file_id).values({column: value}) + if not old_value: # because JsonDefaultDict convert NULL to an empty dict, we have to - # test both for empty dict and None when we have and empty dict - stmt = stmt.where((orm_col == None) | (orm_col == value)) + # test both for empty dict and None when we have an empty dict + stmt = stmt.where((orm_col == None) | (orm_col == old_value)) else: - stmt = stmt.where(orm_col == value) + stmt = stmt.where(orm_col == old_value) result = await session.execute(stmt) await session.commit()