summaryrefslogtreecommitdiffstats
path: root/pym/portage/cache/sqlite.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-09-18 12:01:59 -0700
committerZac Medico <zmedico@gentoo.org>2012-09-18 12:01:59 -0700
commit8279b1e6626e634b4e8f5175180cf17cf09d5b8a (patch)
treec0603aed47fb849f25869ffc5eaaf93c529d2769 /pym/portage/cache/sqlite.py
parent1d9b8968460c4bdb44daeda3454ef0ef5035c398 (diff)
downloadportage-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.
Diffstat (limited to 'pym/portage/cache/sqlite.py')
-rw-r--r--pym/portage/cache/sqlite.py16
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