From 85303d02cf2ddddfe6e865e9ccf21c034b68a835 Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Sun, 26 Jul 2009 12:11:03 +0200 Subject: [PATCH] [entropy.services.ugc.interfaces] improve speed of search_* functions --- libraries/entropy/services/ugc/interfaces.py | 34 +++++++++++++++++--- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/libraries/entropy/services/ugc/interfaces.py b/libraries/entropy/services/ugc/interfaces.py index 34f35e0d0..763a1c338 100644 --- a/libraries/entropy/services/ugc/interfaces.py +++ b/libraries/entropy/services/ugc/interfaces.py @@ -822,7 +822,11 @@ class Server(RemoteDatabase): if iddoctypes is None: iddoctypes = self.DOC_TYPES.values() - iddoctypes_str = "("+', '.join([str(x) for x in iddoctypes])+")" + + if len(iddoctypes) == 1: + iddoctypes_str = " = %s" % (iddoctypes[0],) + else: + iddoctypes_str = "IN ("+', '.join([str(x) for x in iddoctypes])+")" myterm = "%"+pkgkey_string+"%" @@ -882,7 +886,12 @@ class Server(RemoteDatabase): if iddoctypes is None: iddoctypes = self.DOC_TYPES.values() - iddoctypes_str = "("+', '.join([str(x) for x in iddoctypes])+")" + + if len(iddoctypes) == 1: + iddoctypes_str = " = %s" % (iddoctypes[0],) + else: + iddoctypes_str = "IN ("+', '.join([str(x) for x in iddoctypes])+")" + myterm = "%"+pkgkey_string+"%" search_params = [myterm,results_offset,results_limit] @@ -942,7 +951,12 @@ class Server(RemoteDatabase): if iddoctypes is None: iddoctypes = self.DOC_TYPES.values() - iddoctypes_str = "("+', '.join([str(x) for x in iddoctypes])+")" + + if len(iddoctypes) == 1: + iddoctypes_str = " = %s" % (iddoctypes[0],) + else: + iddoctypes_str = "IN ("+', '.join([str(x) for x in iddoctypes])+")" + myterm = "%"+pkgkey_string+"%" search_params = [myterm,myterm,myterm,results_offset,results_limit] @@ -1001,7 +1015,12 @@ class Server(RemoteDatabase): if iddoctypes is None: iddoctypes = self.DOC_TYPES.values() - iddoctypes_str = "("+', '.join([str(x) for x in iddoctypes])+")" + + if len(iddoctypes) == 1: + iddoctypes_str = " = %s" % (iddoctypes[0],) + else: + iddoctypes_str = "IN ("+', '.join([str(x) for x in iddoctypes])+")" + myterm = "%"+keyword_string+"%" search_params = [myterm,results_offset,results_limit] @@ -1061,7 +1080,12 @@ class Server(RemoteDatabase): if iddoctypes is None: iddoctypes = self.DOC_TYPES.values() - iddoctypes_str = "("+', '.join([str(x) for x in iddoctypes])+")" + + if len(iddoctypes) == 1: + iddoctypes_str = " = %s" % (iddoctypes[0],) + else: + iddoctypes_str = "IN ("+', '.join([str(x) for x in iddoctypes])+")" + try: myterm = int(iddoc_string) except ValueError: