From 8279b1e6626e634b4e8f5175180cf17cf09d5b8a Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Tue, 18 Sep 2012 12:01:59 -0700 Subject: [PATCH] cache/sqlite.py: fix getitem order assumption The order assumption was incorrect when new columns were added, since they could be added in any order. --- pym/portage/cache/sqlite.py | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/pym/portage/cache/sqlite.py b/pym/portage/cache/sqlite.py index a6a3e066d..1038bb2ab 100644 --- a/pym/portage/cache/sqlite.py +++ b/pym/portage/cache/sqlite.py @@ -29,6 +29,7 @@ class database(fs_template.FsBased): self._allowed_keys = ["_mtime_", "_eclasses_"] self._allowed_keys.extend(self._known_keys) self._allowed_keys.sort() + self._allowed_keys_set = frozenset(self._allowed_keys) self.location = os.path.join(self.location, self.label.lstrip(os.path.sep).rstrip(os.path.sep)) @@ -93,9 +94,6 @@ class database(fs_template.FsBased): self._db_table["packages"]["table_name"] = mytable self._db_table["packages"]["package_id"] = "internal_db_package_id" self._db_table["packages"]["package_key"] = "portage_package_key" - self._db_table["packages"]["internal_columns"] = \ - [self._db_table["packages"]["package_id"], - self._db_table["packages"]["package_key"]] create_statement = [] create_statement.append("CREATE TABLE") create_statement.append(mytable) @@ -110,9 +108,6 @@ class database(fs_template.FsBased): create_statement.append(")") self._db_table["packages"]["create"] = " ".join(create_statement) - self._db_table["packages"]["columns"] = \ - self._db_table["packages"]["internal_columns"] + \ - self._allowed_keys cursor = self._db_cursor for k, v in self._db_table.items(): @@ -212,11 +207,10 @@ class database(fs_template.FsBased): else: raise cache_errors.CacheCorruption(cpv, "key is not unique") d = {} - internal_columns = self._db_table["packages"]["internal_columns"] - column_index = -1 - for k in self._db_table["packages"]["columns"]: - column_index +=1 - if k not in internal_columns: + allowed_keys_set = self._allowed_keys_set + for column_index, column_info in enumerate(cursor.description): + k = column_info[0] + if k in allowed_keys_set: d[k] = result[0][column_index] return d -- 2.26.2