summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2015-03-01 16:09:11 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2015-03-01 16:09:11 -0500
commit79cbd377a62d291103aa0e378f0665e2e09185b2 (patch)
treea9aaebe8daeef5f0b4bb4f229a75ffeaad007051 /doc
parentc5edbc6fdc611d3c812735d83fe056fbb7d113f5 (diff)
downloadsqlalchemy-79cbd377a62d291103aa0e378f0665e2e09185b2.tar.gz
- squash-merge the final row_proc integration branch. this is
a much more modest outcome than what we started with. The work of create_row_processor() for ColumnProperty objects is essentially done at query setup time combined with some lookups in _instance_processor(). - to allow this change for deferred columns, deferred columns no longer search for themselves in the result. If they've been set up as deferred without any explicit directive to undefer them, then this is what was asked for. if we don't do this, then we're stuck with this performance penalty for all deferred columns which in the vast majority of typical use cases (e.g. loading large, legacy tables or tables with many/large very seldom used values) won't be present in the result and won't be accessed at all.
Diffstat (limited to 'doc')
-rw-r--r--doc/build/changelog/changelog_10.rst11
-rw-r--r--doc/build/changelog/migration_10.rst14
2 files changed, 24 insertions, 1 deletions
diff --git a/doc/build/changelog/changelog_10.rst b/doc/build/changelog/changelog_10.rst
index 48b94c07a..e1c22c019 100644
--- a/doc/build/changelog/changelog_10.rst
+++ b/doc/build/changelog/changelog_10.rst
@@ -24,6 +24,17 @@
on compatibility concerns, see :doc:`/changelog/migration_10`.
.. change::
+ :tags: change, orm
+
+ Mapped attributes marked as deferred without explicit undeferral
+ will now remain "deferred" even if their column is otherwise
+ present in the result set in some way. This is a performance
+ enhancement in that an ORM load no longer spends time searching
+ for each deferred column when the result set is obtained. However,
+ for an application that has been relying upon this, an explicit
+ :func:`.undefer` or similar option should now be used.
+
+ .. change::
:tags: feature, orm
:tickets: 3307
diff --git a/doc/build/changelog/migration_10.rst b/doc/build/changelog/migration_10.rst
index 651679dfd..7783c90c0 100644
--- a/doc/build/changelog/migration_10.rst
+++ b/doc/build/changelog/migration_10.rst
@@ -8,7 +8,7 @@ What's New in SQLAlchemy 1.0?
undergoing maintenance releases as of May, 2014,
and SQLAlchemy version 1.0, as of yet unreleased.
- Document last updated: January 30, 2015
+ Document last updated: March 1, 2015
Introduction
============
@@ -1088,6 +1088,18 @@ as all the subclasses normally refer to the same table::
:ticket:`3233`
+Deferred Columns No Longer Implicitly Undefer
+---------------------------------------------
+
+Mapped attributes marked as deferred without explicit undeferral
+will now remain "deferred" even if their column is otherwise
+present in the result set in some way. This is a performance
+enhancement in that an ORM load no longer spends time searching
+for each deferred column when the result set is obtained. However,
+for an application that has been relying upon this, an explicit
+:func:`.undefer` or similar option should now be used, in order
+to prevent a SELECT from being emitted when the attribute is accessed.
+
.. _migration_deprecated_orm_events: