diff options
author | Zac Medico <zmedico@gentoo.org> | 2012-09-18 12:01:59 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2012-09-18 12:01:59 -0700 |
commit | 8279b1e6626e634b4e8f5175180cf17cf09d5b8a (patch) | |
tree | c0603aed47fb849f25869ffc5eaaf93c529d2769 | |
parent | 1d9b8968460c4bdb44daeda3454ef0ef5035c398 (diff) | |
download | portage-8279b1e6626e634b4e8f5175180cf17cf09d5b8a.tar.gz portage-8279b1e6626e634b4e8f5175180cf17cf09d5b8a.tar.bz2 portage-8279b1e6626e634b4e8f5175180cf17cf09d5b8a.zip |
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.
-rw-r--r-- | pym/portage/cache/sqlite.py | 16 |
1 files 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 |