diff options
Diffstat (limited to 'lib/sqlalchemy/engine')
| -rw-r--r-- | lib/sqlalchemy/engine/create.py | 2 | ||||
| -rw-r--r-- | lib/sqlalchemy/engine/cursor.py | 2 | ||||
| -rw-r--r-- | lib/sqlalchemy/engine/default.py | 28 |
3 files changed, 26 insertions, 6 deletions
diff --git a/lib/sqlalchemy/engine/create.py b/lib/sqlalchemy/engine/create.py index 8b0377a58..985a12fa0 100644 --- a/lib/sqlalchemy/engine/create.py +++ b/lib/sqlalchemy/engine/create.py @@ -230,7 +230,7 @@ def create_engine(url, **kwargs): :param future: Use the 2.0 style :class:`_future.Engine` and :class:`_future.Connection` API. - ..versionadded:: 1.4 + .. versionadded:: 1.4 .. seealso:: diff --git a/lib/sqlalchemy/engine/cursor.py b/lib/sqlalchemy/engine/cursor.py index 6f4934521..bcffca932 100644 --- a/lib/sqlalchemy/engine/cursor.py +++ b/lib/sqlalchemy/engine/cursor.py @@ -1247,7 +1247,7 @@ class BaseCursorResult(object): if ( compiled and compiled._result_columns - and context.cache_hit + and context.cache_hit is context.dialect.CACHE_HIT and not compiled._rewrites_selected_columns and compiled.statement is not context.invoked_statement ): diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py index c431fa755..8d3c5de15 100644 --- a/lib/sqlalchemy/engine/default.py +++ b/lib/sqlalchemy/engine/default.py @@ -39,6 +39,12 @@ AUTOCOMMIT_REGEXP = re.compile( SERVER_SIDE_CURSOR_RE = re.compile(r"\s*SELECT", re.I | re.UNICODE) +CACHE_HIT = util.symbol("CACHE_HIT") +CACHE_MISS = util.symbol("CACHE_MISS") +CACHING_DISABLED = util.symbol("CACHING_DISABLED") +NO_CACHE_KEY = util.symbol("NO_CACHE_KEY") + + class DefaultDialect(interfaces.Dialect): """Default implementation of Dialect""" @@ -195,6 +201,11 @@ class DefaultDialect(interfaces.Dialect): """ + CACHE_HIT = CACHE_HIT + CACHE_MISS = CACHE_MISS + CACHING_DISABLED = CACHING_DISABLED + NO_CACHE_KEY = NO_CACHE_KEY + @util.deprecated_params( convert_unicode=( "1.3", @@ -725,6 +736,8 @@ class DefaultExecutionContext(interfaces.ExecutionContext): _expanded_parameters = util.immutabledict() + cache_hit = NO_CACHE_KEY + @classmethod def _init_ddl( cls, @@ -788,7 +801,7 @@ class DefaultExecutionContext(interfaces.ExecutionContext): parameters, invoked_statement, extracted_parameters, - cache_hit=False, + cache_hit=CACHING_DISABLED, ): """Initialize execution context for a Compiled construct.""" @@ -1026,12 +1039,19 @@ class DefaultExecutionContext(interfaces.ExecutionContext): return "raw sql" now = util.perf_counter() - if self.compiled.cache_key is None: + + ch = self.cache_hit + + if ch is NO_CACHE_KEY: return "no key %.5fs" % (now - self.compiled._gen_time,) - elif self.cache_hit: + elif ch is CACHE_HIT: return "cached since %.4gs ago" % (now - self.compiled._gen_time,) - else: + elif ch is CACHE_MISS: return "generated in %.5fs" % (now - self.compiled._gen_time,) + elif ch is CACHING_DISABLED: + return "caching disabled %.5fs" % (now - self.compiled._gen_time,) + else: + return "unknown" @util.memoized_property def engine(self): |
