diff --git a/product/ZSQLCatalog/ColumnMap.py b/product/ZSQLCatalog/ColumnMap.py index dffd6b91aed54f6038c795bb713f2f4fd0a9ec09..29e597607bff3f125cfd1e52037b14f3d35aa5b8 100644 --- a/product/ZSQLCatalog/ColumnMap.py +++ b/product/ZSQLCatalog/ColumnMap.py @@ -34,7 +34,6 @@ from interfaces.column_map import IColumnMap from zope.interface.verify import verifyClass from zope.interface import implements from Products.ZSQLCatalog.interfaces.column_map import IColumnMap -from Products.ZSQLCatalog.SQLCatalog import profiler_decorator from Products.ZSQLCatalog.TableDefinition import (PlaceHolderTableDefinition, TableAlias, InnerJoin, @@ -56,7 +55,6 @@ class ColumnMap(object): implements(IColumnMap) - @profiler_decorator def __init__(self, catalog_table_name=None, table_override_map=None, @@ -110,7 +108,6 @@ class ColumnMap(object): "Cannot do left_joins while forcing implicit join" ) - @profiler_decorator def registerColumn(self, raw_column, group=DEFAULT_GROUP_ID, simple_query=None): assert ' as ' not in raw_column.lower() # Sanitize input: extract column from raw column (might contain COUNT, ...). @@ -151,7 +148,6 @@ class ColumnMap(object): def ignoreColumn(self, column): self.column_ignore_set.add(column) - @profiler_decorator def registerRelatedKey(self, related_column, column): # XXX: should we store the group, or directly the table on which the column is mapped ? # The former avoids duplicating data, but requires one more lookup (group + column -> table) @@ -168,7 +164,6 @@ class ColumnMap(object): self.related_group_dict[group] = related_column return group - @profiler_decorator def registerCatalog(self): """ Register catalog as being in use in query, and aliased with its own @@ -189,7 +184,6 @@ class ColumnMap(object): self.registerTable(self.catalog_table_name) self.resolveTable(self.catalog_table_name, self.catalog_table_name) - @profiler_decorator def registerRelatedKeyColumn(self, related_column, position, group): assert group in self.related_group_dict group = self.getRelatedKeyGroup(position, group) @@ -200,7 +194,6 @@ class ColumnMap(object): def getRelatedKeyGroup(self, position, group): return '%s_column_%s' % (group, position) - @profiler_decorator def registerTable(self, table_name, alias=None, group=DEFAULT_GROUP_ID): table_alias_dict = self.table_alias_dict table_alias_key = (group, table_name) @@ -216,7 +209,6 @@ class ColumnMap(object): elif alias is not None and alias != existing_value: raise ValueError, 'Table %r for group %r is aliased as %r, can\'t alias it now as %r' % (table_name, group, existing_value, alias) - @profiler_decorator def _mapColumns(self, column_table_map, table_usage_dict, column_name_set, group, vote_result_dict): mapping_dict = {} catalog_table_name = self.catalog_table_name @@ -320,7 +312,6 @@ class ColumnMap(object): if table_name != catalog_table_name: self._addJoinTableForColumn(table_name, column_name, group) - @profiler_decorator def build(self, sql_catalog): join_query_to_build_list = [] catalog_table_name = self.catalog_table_name @@ -497,7 +488,6 @@ class ColumnMap(object): else: return None - @profiler_decorator def resolveColumn(self, column, table_name, group=DEFAULT_GROUP_ID): assert group in self.registry assert column in self.registry[group] @@ -513,7 +503,6 @@ class ColumnMap(object): else: raise ValueError, 'Cannot remap a column to another table. column_map[%r] = %r, new = %r' % (column_map_key, column_map.get(column_map_key), table_name) - @profiler_decorator def resolveTable(self, table_name, alias, group=DEFAULT_GROUP_ID): table_alias_key = (group, table_name) assert table_alias_key in self.table_alias_dict @@ -545,7 +534,6 @@ class ColumnMap(object): return [] - @profiler_decorator def _addJoinTableForColumn(self, table_name, column, group=DEFAULT_GROUP_ID): """ Declare given table as requiring to be joined with catalog table on uid. diff --git a/product/ZSQLCatalog/Operator/ComparisonOperator.py b/product/ZSQLCatalog/Operator/ComparisonOperator.py index 79895d68bcacd376e030b4fde530005040ef2763..f152ccea8dac45e0fdb3dfeb17cf782ff3258c21 100644 --- a/product/ZSQLCatalog/Operator/ComparisonOperator.py +++ b/product/ZSQLCatalog/Operator/ComparisonOperator.py @@ -32,10 +32,9 @@ from OperatorBase import OperatorBase from Products.ZSQLCatalog.SQLExpression import SQLExpression from Products.ZSQLCatalog.interfaces.operator import IOperator from zope.interface.verify import verifyClass -from Products.ZSQLCatalog.SQLCatalog import profiler_decorator, list_type_list +from Products.ZSQLCatalog.SQLCatalog import list_type_list class ComparisonOperatorBase(OperatorBase): - @profiler_decorator def asSQLExpression(self, column, value_list, only_group_columns): """ In a Comparison Operator, rendering order is: @@ -53,7 +52,6 @@ class ComparisonOperatorBase(OperatorBase): verifyClass(IOperator, ComparisonOperatorBase) class MonovaluedComparisonOperator(ComparisonOperatorBase): - @profiler_decorator def renderValue(self, value_list): """ value_list must either be a non-list or a single-value list. @@ -65,7 +63,6 @@ class MonovaluedComparisonOperator(ComparisonOperatorBase): raise ValueError, '%r: value_list must not contain more than one item. Got %r' % (self, value_list) return self._renderValue(value_list) - @profiler_decorator def render(self, column, value_list): """ value_list must either be a non-list or a single-value list. @@ -80,7 +77,6 @@ class MonovaluedComparisonOperator(ComparisonOperatorBase): verifyClass(IOperator, MonovaluedComparisonOperator) class MultivaluedComparisonOperator(ComparisonOperatorBase): - @profiler_decorator def renderValue(self, value_list): """ value_list must be a multi-value list (more than one item). @@ -89,7 +85,6 @@ class MultivaluedComparisonOperator(ComparisonOperatorBase): raise ValueError, '%r: value_list must be a list of more than one item. Got %r' % (self, value_list) return '(%s)' % ', '.join(map(self._renderValue, value_list)) - @profiler_decorator def render(self, column, value_list): """ value_list must be a multi-value list (more than one item). @@ -105,7 +100,6 @@ class MatchComparisonOperator(MonovaluedComparisonOperator): MonovaluedComparisonOperator.__init__(self, operator, '') self.where_expression_format_string = 'MATCH (%%(column)s) AGAINST (%%(value_list)s%s)' % (mode, ) - @profiler_decorator def asSQLExpression(self, column, value_list, only_group_columns): """ This operator can emit a select expression, so it overrides @@ -150,7 +144,6 @@ class SphinxSEComparisonOperator(MonovaluedComparisonOperator): value_list = '%s;mode=extended2;limit=1000' % value_list return self._renderValue(value_list) - @profiler_decorator def asSQLExpression(self, column, value_list, only_group_columns): """ This operator can emit a select expression, so it overrides diff --git a/product/ZSQLCatalog/Operator/OperatorBase.py b/product/ZSQLCatalog/Operator/OperatorBase.py index 9151d3372fb74a300829495e210f762c0a35ebc7..e4b6eb50150339c55f3cfabc072ba0ec914f5b93 100644 --- a/product/ZSQLCatalog/Operator/OperatorBase.py +++ b/product/ZSQLCatalog/Operator/OperatorBase.py @@ -32,29 +32,23 @@ from zLOG import LOG from Products.ZSQLCatalog.interfaces.operator import IOperator from zope.interface.verify import verifyClass from zope.interface import implements -from Products.ZSQLCatalog.SQLCatalog import profiler_decorator -@profiler_decorator def escapeString(value): # Inspired from ERP5Type/Utils:sqlquote, but this product must not depend on it. return "'" + value.replace('\\', '\\\\').replace("'", "''") + "'" -@profiler_decorator def valueFloatRenderer(value): if isinstance(value, basestring): value = float(value.replace(' ', '')) return repr(value) -@profiler_decorator def valueDateTimeRenderer(value): return '"%s"' % (value.toZone('UTC').ISO(), ) -@profiler_decorator def valueDefaultRenderer(value): LOG('OperatorBase', 0, 'Unhandled value class: %s (%r). Converted to string and escaped.' % (value.__class__.__name__, value)) return escapeString(str(value)) -@profiler_decorator def valueNoneRenderer(value): return 'NULL' @@ -70,7 +64,6 @@ value_search_text_renderer = { 'DateTime': str, } -@profiler_decorator def valueDefaultSearchTextRenderer(value): """ This is just repr, but always surrounding text strings with doublequotes. @@ -81,7 +74,6 @@ def valueDefaultSearchTextRenderer(value): result = repr(value) return result -@profiler_decorator def columnFloatRenderer(column, format=None): """Format a float column. @@ -98,7 +90,6 @@ def columnFloatRenderer(column, format=None): column = "TRUNCATE(%s, %s)" % (column, len(format.split('.')[-1])) return column -@profiler_decorator def columnDefaultRenderer(column, format=None): return column @@ -122,7 +113,6 @@ class OperatorBase(object): def getOperatorSearchText(self): return self.operator_search_text - @profiler_decorator def _render(self, column, value): """ Render given column and value for use in SQL. @@ -142,7 +132,6 @@ class OperatorBase(object): value = self._renderValue(value) return column, value - @profiler_decorator def _renderValue(self, value): """ Render given value as string. @@ -156,7 +145,6 @@ class OperatorBase(object): value = value_renderer.get(value.__class__.__name__, valueDefaultRenderer)(value) return value - @profiler_decorator def asSearchText(self, value): return value_search_text_renderer.get(value.__class__.__name__, valueDefaultSearchTextRenderer)(value) diff --git a/product/ZSQLCatalog/Query/AutoQuery.py b/product/ZSQLCatalog/Query/AutoQuery.py index e0b7ddaccf44d00e72c8733178caa080336df03b..cf112d0435626258ebd3bf3420f653914afee359 100644 --- a/product/ZSQLCatalog/Query/AutoQuery.py +++ b/product/ZSQLCatalog/Query/AutoQuery.py @@ -32,7 +32,6 @@ from Query import Query from zLOG import LOG from Products.ZSQLCatalog.interfaces.query import IQuery from zope.interface.verify import verifyClass -from Products.ZSQLCatalog.SQLCatalog import profiler_decorator class AutoQuery(Query): """ @@ -46,7 +45,6 @@ class AutoQuery(Query): """ wrapped_query = None - @profiler_decorator def __init__(self, *args, **kw): """ Note: "operator" might contain a logical or a comparison operator. @@ -64,7 +62,6 @@ class AutoQuery(Query): raise ValueError, '"key" parameter cannot be used when more than one column is given. key=%r' % (self.search_key, ) self.search_key = kw.pop('key', None) - @profiler_decorator def _createWrappedQuery(self, sql_catalog): """ Create wrapped query. This requires being able to reach catalog, since @@ -112,25 +109,21 @@ class AutoQuery(Query): raise ValueError, '%r failed generating a query from its parameters.' % (self, ) self.wrapped_query = query - @profiler_decorator def _asSearchTextExpression(self, sql_catalog, column=None): if self.wrapped_query is None: self._createWrappedQuery(sql_catalog) return self.wrapped_query._asSearchTextExpression(sql_catalog, column=column) - @profiler_decorator def asSearchTextExpression(self, sql_catalog, column=None): if self.wrapped_query is None: self._createWrappedQuery(sql_catalog) return self.wrapped_query.asSearchTextExpression(sql_catalog, column=column) - @profiler_decorator def asSQLExpression(self, sql_catalog, column_map, only_group_columns): if self.wrapped_query is None: self._createWrappedQuery(sql_catalog) return self.wrapped_query.asSQLExpression(sql_catalog, column_map, only_group_columns=only_group_columns) - @profiler_decorator def registerColumnMap(self, sql_catalog, column_map): if self.wrapped_query is None: self._createWrappedQuery(sql_catalog) diff --git a/product/ZSQLCatalog/Query/ComplexQuery.py b/product/ZSQLCatalog/Query/ComplexQuery.py index 75a5eb9dcbc9f46da2c0d2a0d76d4c7b58fe8aa0..6b3e8d777511225866ad52d6ae5a7ae1e1f2d1ca 100644 --- a/product/ZSQLCatalog/Query/ComplexQuery.py +++ b/product/ZSQLCatalog/Query/ComplexQuery.py @@ -33,7 +33,6 @@ from Products.ZSQLCatalog.SQLExpression import SQLExpression from SQLQuery import SQLQuery from Products.ZSQLCatalog.interfaces.query import IQuery from zope.interface.verify import verifyClass -from Products.ZSQLCatalog.SQLCatalog import profiler_decorator from Products.ZSQLCatalog.Query.AutoQuery import AutoQuery from Products.ZSQLCatalog.Query.RelatedQuery import RelatedQuery @@ -46,7 +45,6 @@ class ComplexQuery(Query): """ A ComplexQuery represents logical operations between Query instances. """ - @profiler_decorator def __init__(self, *args, **kw): """ *args (tuple of Query or of list of Query) @@ -142,7 +140,6 @@ class ComplexQuery(Query): self.logical_operator == 'or'): raise NotImplementedError - @profiler_decorator def _asSearchTextExpression(self, sql_catalog, column=None): if column in (None, ''): query_column = column @@ -186,7 +183,6 @@ class ComplexQuery(Query): result = '%s:%s' % (column, result) return self_is_composed, result - @profiler_decorator def asSQLExpression(self, sql_catalog, column_map, only_group_columns): sql_expression_list = [x.asSQLExpression(sql_catalog, column_map, only_group_columns) for x in self.query_list] @@ -197,7 +193,6 @@ class ComplexQuery(Query): where_expression_operator=self.logical_operator, from_expression=self.from_expression) - @profiler_decorator def registerColumnMap(self, sql_catalog, column_map): for query in self.query_list: query.registerColumnMap(sql_catalog, column_map) @@ -205,7 +200,6 @@ class ComplexQuery(Query): def __repr__(self): return '<%s of %r.join(%r)>' % (self.__class__.__name__, self.logical_operator, self.query_list) - @profiler_decorator def setTableAliasList(self, table_alias_list): """ This function is here for backward compatibility. @@ -217,7 +211,6 @@ class ComplexQuery(Query): assert len(self.query_list) == 1 self.query_list[0].setTableAliasList(table_alias_list) - @profiler_decorator def setGroup(self, group): for query in self.query_list: query.setGroup(group) diff --git a/product/ZSQLCatalog/Query/EntireQuery.py b/product/ZSQLCatalog/Query/EntireQuery.py index 0b51f15004907c225dfe41dbabe33f264f2f34e4..b0203a2f399fcb7f6be2336a860d5a6b9f53e815 100644 --- a/product/ZSQLCatalog/Query/EntireQuery.py +++ b/product/ZSQLCatalog/Query/EntireQuery.py @@ -35,7 +35,6 @@ from zLOG import LOG from Products.ZSQLCatalog.interfaces.entire_query import IEntireQuery from zope.interface.verify import verifyClass from zope.interface import implements -from Products.ZSQLCatalog.SQLCatalog import profiler_decorator from Products.ZSQLCatalog.TableDefinition import LegacyTableDefinition def defaultDict(value): @@ -55,7 +54,6 @@ class EntireQuery(object): column_map = None - @profiler_decorator def __init__(self, query, order_by_list=(), group_by_list=(), @@ -82,7 +80,6 @@ class EntireQuery(object): def asSearchTextExpression(self, sql_catalog): return self.query.asSearchTextExpression(sql_catalog) - @profiler_decorator def asSQLExpression(self, sql_catalog, only_group_columns): column_map = self.column_map if column_map is None: diff --git a/product/ZSQLCatalog/Query/RelatedQuery.py b/product/ZSQLCatalog/Query/RelatedQuery.py index 951cf712728235ba42d3f268064f7f30b4f4c443..859f65bcf77a7b69ad79a590ddcd3899e7a87222 100644 --- a/product/ZSQLCatalog/Query/RelatedQuery.py +++ b/product/ZSQLCatalog/Query/RelatedQuery.py @@ -32,13 +32,11 @@ from Query import Query from Products.ZSQLCatalog.SQLExpression import SQLExpression from Products.ZSQLCatalog.interfaces.query import IQuery from zope.interface.verify import verifyClass -from Products.ZSQLCatalog.SQLCatalog import profiler_decorator class RelatedQuery(Query): """ A RelatedQuery represents the is a container for a join condition. """ - @profiler_decorator def __init__(self, search_key, join_condition=None, table_alias_list=None): """ search_key (SearchKey) @@ -53,7 +51,6 @@ class RelatedQuery(Query): self.join_condition = join_condition self.table_alias_list = table_alias_list - @profiler_decorator def setTableAliasList(self, table_alias_list): """ This function is here for backward compatibility. @@ -64,7 +61,6 @@ class RelatedQuery(Query): """ self.table_alias_list = table_alias_list - @profiler_decorator def _asSearchTextExpression(self, sql_catalog, column=None): assert column is None join_condition = self.join_condition @@ -74,7 +70,6 @@ class RelatedQuery(Query): result = join_condition.asSearchTextExpression(sql_catalog, column=self.search_key.getColumn()) return False, result - @profiler_decorator def asSQLExpression(self, sql_catalog, column_map, only_group_columns): sql_expression_list = [self.search_key.buildSQLExpression(sql_catalog, column_map, only_group_columns, self.group)] join_condition = self.join_condition @@ -82,7 +77,6 @@ class RelatedQuery(Query): sql_expression_list.append(join_condition.asSQLExpression(sql_catalog, column_map, only_group_columns)) return SQLExpression(self, sql_expression_list=sql_expression_list, where_expression_operator='and') - @profiler_decorator def registerColumnMap(self, sql_catalog, column_map): self.group = self.search_key.registerColumnMap(column_map, table_alias_list=self.table_alias_list) join_condition = self.join_condition diff --git a/product/ZSQLCatalog/Query/SimpleQuery.py b/product/ZSQLCatalog/Query/SimpleQuery.py index dd4c7c1faddf7e012c584c9e13e004836af36f5f..dae9d3a6cf3d8a5bf391b381bd1d0b513f2c2660 100644 --- a/product/ZSQLCatalog/Query/SimpleQuery.py +++ b/product/ZSQLCatalog/Query/SimpleQuery.py @@ -31,7 +31,7 @@ from Query import Query from Products.ZSQLCatalog.interfaces.query import IQuery from zope.interface.verify import verifyClass -from Products.ZSQLCatalog.SQLCatalog import profiler_decorator, list_type_list +from Products.ZSQLCatalog.SQLCatalog import list_type_list from zLOG import LOG, WARNING NULL_SEARCH_TEXT_OPERATOR_DICT = { @@ -46,7 +46,6 @@ class SimpleQuery(Query): A SimpleQuery represents a single comparison between a single column and one or more values. """ - @profiler_decorator def __init__(self, search_key=None, comparison_operator='=', group=None, **kw): """ search_key (None, SearchKey instance) @@ -103,17 +102,14 @@ class SimpleQuery(Query): self.comparison_operator = comparison_operator self.group = group - @profiler_decorator def _asSearchTextExpression(self, sql_catalog, column=None): return False, self.getSearchKey(sql_catalog).buildSearchTextExpression(self.getOperator(sql_catalog), self.getValue(), column=column) - @profiler_decorator def asSQLExpression(self, sql_catalog, column_map, only_group_columns): return self.getSearchKey(sql_catalog).buildSQLExpression( self.getOperator(sql_catalog), self.getValue(), column_map, only_group_columns, group=self.group) - @profiler_decorator def registerColumnMap(self, sql_catalog, column_map): self.group = self.getSearchKey(sql_catalog).registerColumnMap(column_map, group=self.group, simple_query=self) diff --git a/product/ZSQLCatalog/SQLCatalog.py b/product/ZSQLCatalog/SQLCatalog.py index f30b7a16a3ae79a34e27b7d8a59580d4991b8d5a..a46d9dc7616d36380548c08dbb6d449bc429d9a7 100644 --- a/product/ZSQLCatalog/SQLCatalog.py +++ b/product/ZSQLCatalog/SQLCatalog.py @@ -59,14 +59,6 @@ try: except ImportError: ActiveObject = ExtensionClass.Base - -PROFILING_ENABLED = False -if PROFILING_ENABLED: - from tiny_profiler import profiler_decorator, profiler_report, profiler_reset -else: - def profiler_decorator(func): - return func - try: from Products.CMFCore.Expression import Expression from Products.PageTemplates.Expressions import getEngine @@ -1108,14 +1100,11 @@ class Catalog(Folder, """ return self._getColumnIds()[:] - @profiler_decorator @transactional_cache_decorator('SQLCatalog.getColumnMap') - @profiler_decorator @caching_instance_method(id='SQLCatalog.getColumnMap', cache_factory='erp5_content_long', cache_id_generator=generateCatalogCacheId, ) - @profiler_decorator def getColumnMap(self): """ Calls the show column method and returns dictionnary of @@ -1128,14 +1117,11 @@ class Catalog(Folder, result.setdefault('%s.%s' % (table, field), []).append(table) # Is this inconsistent ? return result - @profiler_decorator @transactional_cache_decorator('SQLCatalog.getResultColumnIds') - @profiler_decorator @caching_instance_method(id='SQLCatalog.getResultColumnIds', cache_factory='erp5_content_long', cache_id_generator=generateCatalogCacheId, ) - @profiler_decorator def getResultColumnIds(self): """ Calls the show column method and returns dictionnary of @@ -1150,14 +1136,11 @@ class Catalog(Folder, keys.sort() return keys - @profiler_decorator @transactional_cache_decorator('SQLCatalog.getSortColumnIds') - @profiler_decorator @caching_instance_method(id='SQLCatalog.getSortColumnIds', cache_factory='erp5_content_long', cache_id_generator=generateCatalogCacheId, ) - @profiler_decorator def getSortColumnIds(self): """ Calls the show column method and returns dictionnary of @@ -1940,9 +1923,7 @@ class Catalog(Folder, """ return self.getCatalogMethodIds(valid_method_meta_type_list=('Script (Python)', )) - @profiler_decorator @transactional_cache_decorator('SQLCatalog._getSQLCatalogRelatedKeyList') - @profiler_decorator def _getSQLCatalogRelatedKeySet(self): column_map = self.getColumnMap() column_set = set(column_map) @@ -2008,7 +1989,6 @@ class Catalog(Folder, """ return self._getTableIndex(table).copy() - @profiler_decorator def isValidColumn(self, column_id): """ Tells wether given name is or not an existing column. @@ -2023,7 +2003,6 @@ class Catalog(Folder, result = self.getRelatedKeyDefinition(column_id) is not None return result - @profiler_decorator def getRelatedKeyDefinition(self, key): """ Returns the definition of given related key name if found, None @@ -2067,7 +2046,6 @@ class Catalog(Folder, def getScriptableKeyScript(self, key): return self._getgetScriptableKeyDict().get(key) - @profiler_decorator def getColumnSearchKey(self, key, search_key_name=None): """ Return a SearchKey instance for given key, using search_key_name @@ -2096,7 +2074,6 @@ class Catalog(Folder, def hasColumn(self, column): return self.getColumnSearchKey(column)[0] is not None - @profiler_decorator def getColumnDefaultSearchKey(self, key, search_key_name=None): """ Return a SearchKey instance which would ultimately receive the value @@ -2112,7 +2089,6 @@ class Catalog(Folder, related_key_definition=related_key_definition) return search_key - @profiler_decorator def buildSingleQuery(self, key, value, search_key_name=None, logical_operator=None, comparison_operator=None): """ From key and value, determine the SearchKey to use and generate a Query @@ -2140,7 +2116,6 @@ class Catalog(Folder, result = script(value) return result - @profiler_decorator def _buildQueryFromAbstractSyntaxTreeNode(self, node, search_key, wrap): if search_key.dequoteParsedText(): _dequote = dequote @@ -2178,7 +2153,6 @@ class Catalog(Folder, result = None return result - @profiler_decorator def buildQueryFromAbstractSyntaxTreeNode(self, node, key, wrap=lambda x: x): """ Build a query from given Abstract Syntax Tree (AST) node by recursing in @@ -2229,7 +2203,6 @@ class Catalog(Folder, return self._parseSearchText(self.getSearchKey( column, search_key=search_key), search_text, is_valid=is_valid) - @profiler_decorator def buildQuery(self, kw, ignore_empty_string=True, operator='and'): query_list = [] append = query_list.append @@ -2317,7 +2290,6 @@ class Catalog(Folder, return ComplexQuery(query_list, logical_operator=operator, unknown_column_dict=unknown_column_dict) - @profiler_decorator def buildOrderByList(self, sort_on=None, sort_order=None, order_by_expression=None): """ Internal method. Should not be used by code outside buildSQLQuery. @@ -2361,7 +2333,6 @@ class Catalog(Folder, order_by_list = [[x.strip()] for x in order_by_expression.split(',')] return order_by_list - @profiler_decorator def buildEntireQuery(self, kw, query_table='catalog', ignore_empty_string=1, limit=None, extra_column_list=()): group_by_list = kw.pop('group_by_list', kw.pop('group_by', kw.pop('group_by_expression', ()))) @@ -2433,7 +2404,6 @@ class Catalog(Folder, extra_column_list=extra_column_list, from_expression=from_expression) - @profiler_decorator def buildSQLQuery(self, query_table='catalog', REQUEST=None, ignore_empty_string=1, only_group_columns=False, limit=None, extra_column_list=(), @@ -2447,14 +2417,11 @@ class Catalog(Folder, # Compatibililty SQL Sql buildSqlQuery = buildSQLQuery - @profiler_decorator @transactional_cache_decorator('SQLCatalog._getSearchKeyDict') - @profiler_decorator @caching_instance_method(id='SQLCatalog._getSearchKeyDict', cache_factory='erp5_content_long', cache_id_generator=generateCatalogCacheId, ) - @profiler_decorator def _getSearchKeyDict(self): result = {} search_key_column_dict = { @@ -2476,7 +2443,6 @@ class Catalog(Folder, LOG('SQLCatalog', WARNING, 'Wrong configuration for sql_catalog_search_keys: %r' % line) return result - @profiler_decorator def getSearchKey(self, column, search_key=None): """ Return an instance of a SearchKey class. @@ -2508,7 +2474,6 @@ class Catalog(Folder, # the ZSQLMethod class itself 'zsql_brain', ]) - @profiler_decorator def _queryResults(self, REQUEST=None, build_sql_query_method=None, **kw): """ Returns a list of brains from a set of constraints on variables """ if build_sql_query_method is None: @@ -2823,7 +2788,6 @@ import SearchKey SEARCH_KEY_INSTANCE_POOL = {} SEARCH_KEY_CLASS_CACHE = {} -@profiler_decorator def getSearchKeyInstance(search_key_class_name, column): assert isinstance(search_key_class_name, basestring) try: @@ -2877,14 +2841,3 @@ from Query.EntireQuery import EntireQuery from Query.SQLQuery import SQLQuery verifyClass(ISearchKeyCatalog, Catalog) - -if PROFILING_ENABLED: - def Catalog_dumpProfilerData(self): - return profiler_report() - - def Catalog_resetProfilerData(self): - profiler_reset() - - Catalog.dumpProfilerData = Catalog_dumpProfilerData - Catalog.resetProfilerData = Catalog_resetProfilerData - diff --git a/product/ZSQLCatalog/SQLExpression.py b/product/ZSQLCatalog/SQLExpression.py index 1052db718a85032de0ffb838ddb5ace14e6f3c7e..5158d1c9d35837b0116425d5a99f66d9975c9094 100644 --- a/product/ZSQLCatalog/SQLExpression.py +++ b/product/ZSQLCatalog/SQLExpression.py @@ -32,7 +32,6 @@ from interfaces.sql_expression import ISQLExpression from zope.interface.verify import verifyClass from zope.interface import implements from types import NoneType -from SQLCatalog import profiler_decorator SQL_LIST_SEPARATOR = ', ' SQL_TABLE_FORMAT = '%s' # XXX: should be changed to '`%s`', but this breaks some ZSQLMethods. @@ -85,7 +84,6 @@ class SQLExpression(object): implements(ISQLExpression) - @profiler_decorator def __init__(self, query, table_alias_dict=None, @@ -136,7 +134,6 @@ class SQLExpression(object): DeprecationWarning) self.from_expression = from_expression - @profiler_decorator def getTableAliasDict(self): """ Returns a dictionary: @@ -163,7 +160,6 @@ class SQLExpression(object): result[alias] = table_name return result - @profiler_decorator def getFromExpression(self): """ Returns a TableDefinition stored in one of the from_expressions or None @@ -186,7 +182,6 @@ class SQLExpression(object): raise ValueError, message return result - @profiler_decorator def getOrderByList(self): """ Returns a list of strings. @@ -206,7 +201,6 @@ class SQLExpression(object): known_column_set.add(order_by[0]) return result - @profiler_decorator def _getOrderByDict(self, delay_error=True): result_dict = self.order_by_dict.copy() for sql_expression in self.sql_expression_list: @@ -232,7 +226,6 @@ class SQLExpression(object): def getOrderByDict(self): return self._getOrderByDict(delay_error=False) - @profiler_decorator def getOrderByExpression(self): """ Returns a string. @@ -251,7 +244,6 @@ class SQLExpression(object): append(expression) return SQL_LIST_SEPARATOR.join(result) - @profiler_decorator def getWhereExpression(self): """ Returns a string. @@ -273,7 +265,6 @@ class SQLExpression(object): result = '(%s)' % (operator.join(x.getWhereExpression() for x in self.sql_expression_list), ) return result - @profiler_decorator def getLimit(self): """ Returns a list of 1 or 2 items (int or string). @@ -296,7 +287,6 @@ class SQLExpression(object): raise ValueError, message return result - @profiler_decorator def getLimitExpression(self): """ Returns a string. @@ -305,7 +295,6 @@ class SQLExpression(object): """ return SQL_LIST_SEPARATOR.join(str(x) for x in self.getLimit()) - @profiler_decorator def getGroupByset(self): """ Returns a set of strings. @@ -318,7 +307,6 @@ class SQLExpression(object): result.update(sql_expression.getGroupByset()) return result - @profiler_decorator def getGroupByExpression(self): """ Returns a string. @@ -330,7 +318,6 @@ class SQLExpression(object): def canMergeSelectDict(self): return self.can_merge_select_dict - @profiler_decorator def _getSelectDict(self): result = self.select_dict.copy() mergeable_set = set() @@ -361,7 +348,6 @@ class SQLExpression(object): mergeable_set.add(alias) return result, mergeable_set - @profiler_decorator def getSelectDict(self): """ Returns a dict: @@ -374,7 +360,6 @@ class SQLExpression(object): """ return self._getSelectDict()[0] - @profiler_decorator def getSelectExpression(self): """ Returns a string. @@ -395,7 +380,6 @@ class SQLExpression(object): append((SQL_TABLE_FORMAT % (alias, ), SQL_TABLE_FORMAT % (table, ))) return from_table_list - @profiler_decorator def asSQLExpressionDict(self): from_expression = self.getFromExpression() from_table_list = self.getFromTableList() diff --git a/product/ZSQLCatalog/SearchKey/DateTimeKey.py b/product/ZSQLCatalog/SearchKey/DateTimeKey.py index 9e8ea5e34f02fcc4bb92a5f6be422b81f0c8b730..b2900529c5ef3cfef1bae74f5ba1d05ecbc4ee7d 100644 --- a/product/ZSQLCatalog/SearchKey/DateTimeKey.py +++ b/product/ZSQLCatalog/SearchKey/DateTimeKey.py @@ -36,7 +36,6 @@ from zLOG import LOG from DateTime.DateTime import DateTime, DateTimeError, _cache from Products.ZSQLCatalog.interfaces.search_key import ISearchKey from zope.interface.verify import verifyClass -from Products.ZSQLCatalog.SQLCatalog import profiler_decorator from Products.ZSQLCatalog.SearchText import parse MARKER = [] @@ -48,11 +47,9 @@ date_completion_format_dict = { 'international': ['%s/01/01', '%s/01'] } -@profiler_decorator def _DateTime(*args, **kw): return DateTime(*args, **kw) -@profiler_decorator def castDate(value, change_timezone=True): if value is None: return None @@ -114,7 +111,6 @@ def getYearLen(datetime): delta_list = [getYearLen, getMonthLen, 1, 1.0 / 24, 1.0 / (24 * 60), 1.0 / (24 * 60 * 60)] -@profiler_decorator def countDelimiters(value): assert isinstance(value, basestring) # Detect if timezone was provided, to avoid counting it as in precision computation. @@ -135,7 +131,6 @@ def countDelimiters(value): last_delimiter = None return delimiter_count -@profiler_decorator def getPeriodBoundaries(value): first_date = castDate(value, change_timezone=False) if isinstance(value, dict): @@ -152,7 +147,6 @@ def getPeriodBoundaries(value): delta = delta(first_date) return first_date.toZone('UTC'), (first_date + delta).toZone('UTC') -@profiler_decorator def wholePeriod(search_key, group, column, value_list, exclude=False): if exclude: first_operator = '<' @@ -177,7 +171,6 @@ def matchWholePeriod(search_key, group, column, value_list, *ignored): def matchNotWholePeriod(search_key, group, column, value_list, *ignored): return wholePeriod(search_key, group, column, value_list, exclude=True) -@profiler_decorator def matchExact(search_key, group, column, value_list, comparison_operator, logical_operator): if comparison_operator is None: comparison_operator = '=' @@ -191,11 +184,9 @@ def matchExact(search_key, group, column, value_list, comparison_operator, logic def getNextPeriod(value): return getPeriodBoundaries(value)[1] -@profiler_decorator def matchBeforeNextPeriod(search_key, group, column, value_list, comparison_operator, logical_operator): return matchExact(search_key, group, column, [getNextPeriod(x) for x in value_list], '<', logical_operator) -@profiler_decorator def matchAfterPeriod(search_key, group, column, value_list, comparison_operator, logical_operator): return matchExact(search_key, group, column, [getNextPeriod(x) for x in value_list], '>=', logical_operator) @@ -275,7 +266,6 @@ class DateTimeKey(SearchKey): def _renderValueAsSearchText(self, value, operator): return '"%s"' % (DateTime(value).ISO(), ) - @profiler_decorator def _buildQuery(self, operator_value_dict, logical_operator, parsed, group): column = self.getColumn() query_list = [] diff --git a/product/ZSQLCatalog/SearchKey/FullTextKey.py b/product/ZSQLCatalog/SearchKey/FullTextKey.py index f4edfc292a05a2da2a4d78702badab4bbb8f8fab..f01e84976cbcb0d784d1d26fa6f33a7a19148e58 100644 --- a/product/ZSQLCatalog/SearchKey/FullTextKey.py +++ b/product/ZSQLCatalog/SearchKey/FullTextKey.py @@ -33,7 +33,6 @@ from Products.ZSQLCatalog.Query.SimpleQuery import SimpleQuery from Products.ZSQLCatalog.SearchText import parse from Products.ZSQLCatalog.interfaces.search_key import ISearchKey from zope.interface.verify import verifyClass -from Products.ZSQLCatalog.SQLCatalog import profiler_decorator import re FULLTEXT_BOOLEAN_DETECTOR = re.compile(r'.*((^|\s)[\+\-<>\(\~]|[\*\)](\s|$))') @@ -54,7 +53,6 @@ class FullTextKey(SearchKey): def _renderValueAsSearchText(self, value, operator): return '(%s)' % (value, ) - @profiler_decorator def _processSearchValue(self, search_value, logical_operator, comparison_operator): """ @@ -81,7 +79,6 @@ class FullTextKey(SearchKey): operator_value_dict['match'] = new_value_list return operator_value_dict, logical_operator, parsed - @profiler_decorator def _buildQuery(self, operator_value_dict, logical_operator, parsed, group): """ Special Query builder for FullText queries: merge all values having the diff --git a/product/ZSQLCatalog/SearchKey/RelatedKey.py b/product/ZSQLCatalog/SearchKey/RelatedKey.py index c91e89820ffb5e0bfc2dc3e797135e55d04a39a0..1c624f51ccd050fedeb3a11dc69559b43b038e39 100644 --- a/product/ZSQLCatalog/SearchKey/RelatedKey.py +++ b/product/ZSQLCatalog/SearchKey/RelatedKey.py @@ -36,7 +36,6 @@ from Products.ZSQLCatalog.SQLExpression import SQLExpression from Products.ZSQLCatalog.interfaces.search_key import IRelatedKey from zope.interface.verify import verifyClass from zope.interface import implements -from Products.ZSQLCatalog.SQLCatalog import profiler_decorator from Products.ZSQLCatalog.TableDefinition import TableAlias, InnerJoin, LeftJoin from logging import getLogger @@ -68,7 +67,6 @@ class RelatedKey(SearchKey): related_key_definition = None - @profiler_decorator def _buildRelatedKey(self, related_key_definition): """ Extract RelatedKey parameters from its definition, and cache this @@ -90,7 +88,6 @@ class RelatedKey(SearchKey): table_list, self.real_column, self.related_key_id = related_key_definition.split('/') self.table_list = table_list.split(',') - @profiler_decorator def _getSearchKey(self, sql_catalog, search_key_name): """ Get search key relevant to the actual column. @@ -102,7 +99,6 @@ class RelatedKey(SearchKey): """ return sql_catalog.getSearchKey(self.real_column, search_key_name) - @profiler_decorator def getSearchKey(self, sql_catalog, related_key_definition, search_key_name=None): """ Get search key relevant to the actual column, extracting information @@ -118,7 +114,6 @@ class RelatedKey(SearchKey): self._buildRelatedKey(related_key_definition) return self._getSearchKey(sql_catalog, search_key_name) - @profiler_decorator def buildQuery(self, sql_catalog, related_key_definition, search_value=None): self._buildRelatedKey(related_key_definition) @@ -128,7 +123,6 @@ class RelatedKey(SearchKey): return RelatedQuery(search_key=self, join_condition=join_condition) - @profiler_decorator def registerColumnMap(self, column_map, table_alias_list=None): related_column = self.getColumn() group = column_map.registerRelatedKey(related_column, self.real_column) @@ -189,7 +183,6 @@ class RelatedKey(SearchKey): condition = join_query_list[-1] return InnerJoin(left, right, condition) - @profiler_decorator def buildSQLExpression(self, sql_catalog, column_map, only_group_columns, group): """ Render RelatedKey's ZSQLMethod by providing it table aliases from diff --git a/product/ZSQLCatalog/SearchKey/SearchKey.py b/product/ZSQLCatalog/SearchKey/SearchKey.py index 9e7727c0d6cecdb3b0ca2a7b7a251920a5e0018f..e23447918c46f6b33e62867c240092520f0461e5 100644 --- a/product/ZSQLCatalog/SearchKey/SearchKey.py +++ b/product/ZSQLCatalog/SearchKey/SearchKey.py @@ -34,7 +34,7 @@ from Products.ZSQLCatalog.Query.ComplexQuery import ComplexQuery from Products.ZSQLCatalog.interfaces.search_key import ISearchKey from zope.interface.verify import verifyClass from zope.interface import implements -from Products.ZSQLCatalog.SQLCatalog import profiler_decorator, list_type_list +from Products.ZSQLCatalog.SQLCatalog import list_type_list single_operator_dict = { 'min': '>=', @@ -91,14 +91,12 @@ class SearchKey(object): def getColumn(self): return self.column - @profiler_decorator def buildSQLExpression(self, operator, value, column_map, only_group_columns, group): column_name = self.getColumn() rendered_column = column_map.asSQLColumn(column_name, group=group) return operator.asSQLExpression(rendered_column, value, only_group_columns) - @profiler_decorator def _renderValueAsSearchText(self, value, operator): """ Render a single value as valid SearchText using provided operator. @@ -115,7 +113,6 @@ class SearchKey(object): value = operator_value_deprocessor(value) return operator.asSearchText(value) - @profiler_decorator def buildSearchTextExpression(self, operator, value, column=None): operator_text = operator.getOperatorSearchText() if column is None: @@ -137,13 +134,11 @@ class SearchKey(object): result = '%s:%s' % (column, result) return result - @profiler_decorator def registerColumnMap(self, column_map, group, simple_query): column_map.registerColumn(self.getColumn(), group=group, simple_query=simple_query) return group - @profiler_decorator def _getComparisonOperator(self, value): """ From a basestring instance, return a contained operator and value @@ -164,7 +159,6 @@ class SearchKey(object): operator = self._guessComparisonOperator(value) return operator, value - @profiler_decorator def _guessComparisonOperator(self, value): """ From a basestring instance, return an operator. @@ -176,7 +170,6 @@ class SearchKey(object): """ return self.default_comparison_operator - @profiler_decorator def _preprocessValue(self, value, operator): operator_value_preprocessor = operator_value_preprocessor_dict.get( operator) @@ -184,7 +177,6 @@ class SearchKey(object): value = operator_value_preprocessor(value) return value - @profiler_decorator def _processSearchValue(self, search_value, default_logical_operator, comparison_operator): """ @@ -325,7 +317,6 @@ class SearchKey(object): operator_value_dict[comparison_operator] = search_value return operator_value_dict, logical_operator, parsed - @profiler_decorator def _buildQuery(self, operator_value_dict, logical_operator, parsed, group): """ Create Queries from values, logical and comparison operators. @@ -354,7 +345,6 @@ class SearchKey(object): group=group, **{column: value})) return query_list - @profiler_decorator def buildQuery(self, search_value, group=None, logical_operator=None, comparison_operator=None): assert logical_operator in (None, 'and', 'or'), repr(logical_operator) diff --git a/product/ZSQLCatalog/SearchKey/SphinxSEFullTextKey.py b/product/ZSQLCatalog/SearchKey/SphinxSEFullTextKey.py index 8758d506976a6598b462d6f6586b12c6cfa331ac..ae8b5c81dbc665da3d1aeecba7b528a0b28d4cdb 100644 --- a/product/ZSQLCatalog/SearchKey/SphinxSEFullTextKey.py +++ b/product/ZSQLCatalog/SearchKey/SphinxSEFullTextKey.py @@ -30,7 +30,6 @@ from Products.ZSQLCatalog.Query.SimpleQuery import SimpleQuery from Products.ZSQLCatalog.SearchText import parse from Products.ZSQLCatalog.interfaces.search_key import ISearchKey from zope.interface.verify import verifyClass -from Products.ZSQLCatalog.SQLCatalog import profiler_decorator class SphinxSEFullTextKey(SearchKey): """ @@ -48,7 +47,6 @@ class SphinxSEFullTextKey(SearchKey): def _renderValueAsSearchText(self, value, operator): return '(%s)' % (value, ) - @profiler_decorator def _buildQuery(self, operator_value_dict, logical_operator, parsed, group): """ Special Query builder for FullText queries: merge all values having the diff --git a/product/ZSQLCatalog/SearchText/SearchTextParser.py b/product/ZSQLCatalog/SearchText/SearchTextParser.py index 8d919421d70192a3d103df3de187047cbfa640a6..d97a1aaffaaf2ad23fe8956c0482b9ecf7d2c8f8 100755 --- a/product/ZSQLCatalog/SearchText/SearchTextParser.py +++ b/product/ZSQLCatalog/SearchText/SearchTextParser.py @@ -32,11 +32,6 @@ import threading from AdvancedSearchTextDetector import AdvancedSearchTextDetector from AdvancedSearchTextParser import AdvancedSearchTextParser from lexer import ParserOrLexerError -try: - from Products.ZSQLCatalog.SQLCatalog import profiler_decorator -except ImportError: - def profiler_decorator(funct): - return funct if __name__ == '__main__': DEBUG = 1 @@ -90,11 +85,9 @@ def safeParsingDecorator(func): wrapper.__name__ = func.__name__ return wrapper -@profiler_decorator def isAdvancedSearchText(input, is_column): return parser_pool.get(DETECTOR_ID)(input, is_column) -@profiler_decorator @safeParsingDecorator def parse(input, is_column, *args, **kw): if isAdvancedSearchText(input, is_column):