diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2015-03-01 16:09:11 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2015-03-01 16:09:11 -0500 |
commit | 79cbd377a62d291103aa0e378f0665e2e09185b2 (patch) | |
tree | a9aaebe8daeef5f0b4bb4f229a75ffeaad007051 /doc | |
parent | c5edbc6fdc611d3c812735d83fe056fbb7d113f5 (diff) | |
download | sqlalchemy-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.rst | 11 | ||||
-rw-r--r-- | doc/build/changelog/migration_10.rst | 14 |
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: |