From 9914d7368c4b2d04c1ec8c8b3501a8459a37d409 Mon Sep 17 00:00:00 2001 From: Wataru Ishida Date: Fri, 17 Nov 2017 05:15:53 +0000 Subject: [PATCH] [configdb] fix bug of leaving unwanted columns in a hash Current implementation doesn't remove unwanted columes with set_entry like below. >>> set_entry('table', 'key', {'key1': 'value1', 'key2': 'value2'}) >>> set_entry('table', 'key', {'key1': 'value3'}) >>> get_entry('table', 'key') {'key1': 'value3', 'key2': 'value2'} This commit fix this bug. Signed-off-by: Wataru Ishida --- src/swsssdk/configdb.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/swsssdk/configdb.py b/src/swsssdk/configdb.py index 20e7f2daf..3dbd896e3 100644 --- a/src/swsssdk/configdb.py +++ b/src/swsssdk/configdb.py @@ -155,7 +155,12 @@ def set_entry(self, table, key, data): if data == None: client.delete(_hash) else: + original = self.get_entry(table, key) client.hmset(_hash, self.__typed_to_raw(data)) + for k in [ k for k in original.keys() if k not in data.keys() ]: + if type(original[k]) == list: + k = k + '@' + client.hdel(_hash, self.serialize_key(k)) def get_entry(self, table, key): """Read a table entry from config db.