summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/engine
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/engine')
-rw-r--r--lib/sqlalchemy/engine/create.py2
-rw-r--r--lib/sqlalchemy/engine/cursor.py2
-rw-r--r--lib/sqlalchemy/engine/default.py28
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):