---
yum/rpmsack.py | 17 +++++++++++++++++
1 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/yum/rpmsack.py b/yum/rpmsack.py
index a0c65c8..42f63cf 100644
--- a/yum/rpmsack.py
+++ b/yum/rpmsack.py
@@ -453,6 +453,23 @@ class RPMDBPackageSack(PackageSackBase):
"""Returns a list of packages. Note that the packages are
always filtered to those matching the patterns/case. repoid is
ignored, and is just here for compatibility with non-rpmdb sacks.
"""
+
+ # See if we can load the "patterns" via. dbMatch('name', ...) because
+ # that's basically instant and walking the entire rpmdb isn't.
+ if not self._completely_loaded and patterns and not ignore_case:
+ for pat in patterns:
+ if '?' in pat or '*' in pat:
+ break
+ else:
+ ret = []
+ for pat in patterns:
+ pkgs = self.searchNames([pat])
+ if not pkgs:
+ break
+ ret.extend(pkgs)
+ else:
+ return ret
+
ret = []
if patterns and not ignore_case:
tpats = []
--
1.7.0.1
_______________________________________________
Yum-devel mailing list
[email protected]
http://lists.baseurl.org/mailman/listinfo/yum-devel