Commits

Mike Bayer committed 9169d42

0.7 updates, links

Comments (0)

Files changed (3)

doc/build/changelog/migration_07.rst

 loads/dumps operations, completed mapper construction
 operations.
 
-The event system is introduced at `Events
-<http://www.sqlalchemy.org/docs/07/core/event.html>`_.
+.. seealso::
 
-[ticket:1902]
+  :ref:`event_toplevel`
+
+:ticket:`1902`
 
 Hybrid Attributes, implements/supersedes synonym(), comparable_property()
 -------------------------------------------------------------------------
 approach of "derived" is easier to use, more extensible, is
 implemented in a few dozen lines of pure Python with almost
 no imports, and doesn't require the ORM core to even be
-aware of it.   The feature is now known as the `Hybrid
-Attributes <http://www.sqlalchemy.org/docs/07/orm/extensions
-/hybrid.html>`_ extension.
+aware of it.   The feature is now known as the "Hybrid
+Attributes" extension.
 
 ``synonym()`` and ``comparable_property()`` are still part
 of the ORM, though their implementations have been moved
 mapper/query/property modules aren't really aware of them
 otherwise.
 
-`Hybrid Attributes <http://www.sqlalchemy.org/docs/07/orm/ex
-tensions/hybrid.html>`_
+.. seealso::
 
-[ticket:1903]
+  :ref:`hybrids_toplevel`
+
+:ticket:`1903`
 
 Speed Enhancements
 ------------------
 utable.html>`_ extension to establish in-place change events
 to existing composite usage.
 
-`Composite Column Types
-<http://www.sqlalchemy.org/docs/07/orm/mapper_config.html
-#composite-column-types>`_
+.. seealso::
 
-`Mutation Tracking <http://www.sqlalchemy.org/docs/07/orm/ex
-tensions/mutable.html>`_
+  :ref:`mapper_composite`
 
-[ticket:2008] [ticket:2024]
+  :ref:`mutable_toplevel`
+
+:ticket:`2008` :ticket:`2024`
 
 More succinct form of query.join(target, onclause)
 --------------------------------------------------
 <http://www.sqlalchemy.org/docs/07/orm/tutorial.html
 #querying-with-joins>`_
 
-[ticket:1923]
+:ticket:`1923`
 
 Mutation event extension, supersedes "mutable=True"
 ---------------------------------------------------
 includes an approach for scalar database values, such as
 those managed by ``PickleType``, ``postgresql.ARRAY``, or
 other custom ``MutableType`` classes, as well as an approach
-for ORM "composites", those configured using `composite()
-<http://www.sqlalchemy.org/docs/07/orm/mapper_config.html
-#composite-column-types>`_.
+for ORM "composites", those configured using :ref:`composite()
+<mapper_composite>`_.
 
-`Mutation Tracking Extension <http://www.sqlalchemy.org/docs
-/07/orm/extensions/mutable.html>`_
+.. seealso::
+
+    :ref:`mutable_toplevel`
 
 NULLS FIRST / NULLS LAST operators
 ----------------------------------
 ``desc()`` operators, called ``nullsfirst()`` and
 ``nullslast()``.
 
-`nullsfirst() <http://www.sqlalchemy.org/docs/07/core/expres
-sion_api.html#sqlalchemy.sql.expression._CompareMixin.nullsf
-irst>`_
+.. seealso::
 
-`nullslast() <http://www.sqlalchemy.org/docs/07/core/express
-ion_api.html#sqlalchemy.sql.expression._CompareMixin.nullsla
-st>`_
+    :func:`.nullsfirst`
 
-[ticket:723]
+    :func:`.nullslast`
+
+:ticket:`723`
 
 select.distinct(), query.distinct() accepts \*args for Postgresql DISTINCT ON
 -----------------------------------------------------------------------------
 `Query.distinct() <http://www.sqlalchemy.org/docs/07/orm/que
 ry.html#sqlalchemy.orm.query.Query.distinct>`_
 
-[ticket:1069]
+:ticket:`1069`
 
 ``Index()`` can be placed inline inside of ``Table``, ``__table_args__``
 ------------------------------------------------------------------------
 ocs/07/core/expression_api.html#sqlalchemy.sql.expression.ov
 er>`_
 
-[ticket:1844]
+:ticket:`1844`
 
 execution_options() on Connection accepts "isolation_level" argument
 --------------------------------------------------------------------
 /connections.html#sqlalchemy.engine.base.Connection.executio
 n_options>`_
 
-[ticket:2001]
+:ticket:`2001`
 
 ``TypeDecorator`` works with integer primary key columns
 --------------------------------------------------------
 processor applied to newly generated primary keys, including
 those received by the DBAPI ``cursor.lastrowid`` accessor.
 
-[ticket:2005] [ticket:2006]
+:ticket:`2005` :ticket:`2006`
 
 ``TypeDecorator`` is present in the "sqlalchemy" import space
 -------------------------------------------------------------
 a subquery, with no more guessing as to how count should be
 applied.
 
-[ticket:2093]
+:ticket:`2093`
 
 To emit a non-subquery form of count()
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 performance as the textual string for multiple statements
 with differing LIMIT/OFFSET are now identical.
 
-[ticket:805]
+:ticket:`805`
 
 Logging enhancements
 --------------------
 need for additional identifying strings local to those
 engines.
 
-[ticket:1926]
+:ticket:`1926`
 
 Simplified polymorphic_on assignment
 ------------------------------------
 internals of the mapper during flush are simplified and no
 longer need to make special checks for this column.
 
-[ticket:1895]
+:ticket:`1895`
 
 contains_eager() chains across multiple paths (i.e. "all()")
 ------------------------------------------------------------
 
     session.query(A).options(contains_eager(A.b, B.c))
 
-[ticket:2032]
+:ticket:`2032`
 
 Flushing of orphans that have no parent is allowed
 --------------------------------------------------
 particular parent, and is then disassociated with that
 parent, leading to a DELETE statement emitted for it.
 
-[ticket:1912]
+:ticket:`1912`
 
 Warnings generated when collection members, scalar referents not part of the flush
 ----------------------------------------------------------------------------------
 purposes of alerting to a situation that more often than not
 is the source of unexpected behavior.
 
-[ticket:1973]
+:ticket:`1973`
 
 Setup no longer installs a Nose plugin
 --------------------------------------
 environments.   The ``sqla_nose.py`` script in 0.7 is now
 the only way to run the tests with nose.
 
-[ticket:1949]
+:ticket:`1949`
 
 Non-``Table``-derived constructs can be mapped
 ----------------------------------------------
     selectable = select(["x", "y", "z"]).select_from(func.some_db_function()).alias()
     mapper(Subset, selectable, primary_key=[selectable.c.x])
 
-[ticket:1876]
+:ticket:`1876`
 
 aliased() accepts ``FromClause`` elements
 -----------------------------------------
 through to the ``.alias()`` method of that from construct
 rather than constructing an ORM level ``AliasedClass``.
 
-[ticket:2018]
+:ticket:`2018`
 
 Session.connection(), Session.execute() accept 'bind'
 -----------------------------------------------------
 `Session.execute <http://www.sqlalchemy.org/docs/07/orm/sess
 ion.html#sqlalchemy.orm.session.Session.execute>`_
 
-[ticket:1996]
+:ticket:`1996`
 
 Standalone bind parameters in columns clause auto-labeled.
 ----------------------------------------------------------
 will continue to target the same location as subsequent
 SQLite connections are established.
 
-[ticket:2036]
+:ticket:`2036`
 
 MS-SQL - ``String``/``Unicode``/``VARCHAR``/``NVARCHAR``/``VARBINARY`` emit "max" for no length
 -----------------------------------------------------------------------------------------------
 the new mutation tracking system, as ``mutable=True`` is
 likely to be deprecated in the future.
 
-[ticket:1980]
+:ticket:`1980`
 
 Mutability detection of ``composite()`` requires the Mutation Tracking Extension
 --------------------------------------------------------------------------------
 temporary-tables-with-sqlite if temporary tables beyond the
 scope of one pool connection are desired.
 
-[ticket:1921]
+:ticket:`1921`
 
 ``Session.merge()`` checks version ids for versioned mappers
 ------------------------------------------------------------
 both the ``merge()`` and the versioning features were
 originally adapted from Hibernate.
 
-[ticket:2027]
+:ticket:`2027`
 
 Tuple label names in Query Improved
 -----------------------------------
 things, which is inconsistent with the name ``spam`` in the
 case of a non-unioned query.
 
-[ticket:1942]
+:ticket:`1942`
 
 Mapped column attributes reference the most specific column first
 -----------------------------------------------------------------
 corresponding to "child" set to NULL - this is now the value
 that gets populated, not the one in the parent table.
 
-[ticket:1892]
+:ticket:`1892`
 
 Mapping to joins with two or more same-named columns requires explicit declaration
 ----------------------------------------------------------------------------------
 
 This is somewhat related to the previous change in
-[ticket:1892].   When mapping to a join, same-named columns
+:ticket:`1892`.   When mapping to a join, same-named columns
 must be explicitly linked to mapped attributes, i.e. as
 described in `Mapping a Class Against Multiple Tables <http:
 //www.sqlalchemy.org/docs/07/orm/mapper_config.html#mapping-
         'id':[foo.c.id, bar.c.id]
     })
 
-[ticket:1896]
+:ticket:`1896`
 
 Mapper requires that polymorphic_on column be present in the mapped selectable
 ------------------------------------------------------------------------------
 incompatible in the rare case that an application has been
 unknowingly relying upon this behavior.
 
-[ticket:1875]
+:ticket:`1875`
 
 ``DDL()`` constructs now escape percent signs
 ---------------------------------------------
 constructs which did this automatically.  The same escaping
 now occurs for ``DDL()`` as for ``text()``.
 
-[ticket:1897]
+:ticket:`1897`
 
 ``Table.c`` / ``MetaData.tables`` refined a bit, don't allow direct mutation
 ----------------------------------------------------------------------------
 collections will ensure no application is attempting to rely
 upon usages that are currently not supported.
 
-[ticket:1893] [ticket:1917]
+:ticket:`1893` :ticket:`1917`
 
 server_default consistently returns None for all inserted_primary_key values
 ----------------------------------------------------------------------------
 False, except in the case of a PG SERIAL col where we
 detected a sequence default.
 
-[ticket:2020] [ticket:2021]
+:ticket:`2020` :ticket:`2021`
 
 The ``sqlalchemy.exceptions`` alias in sys.modules is removed
 -------------------------------------------------------------
 this process occurs on an as-needed basis, as soon as the
 mappings are needed via attribute or query access.
 
-[ticket:1966]
+:ticket:`1966`
 
 Core listener/proxy superseded by event listeners
 -------------------------------------------------
 Callables passed to ``bindparam()`` don't get evaluated - affects the Beaker example
 ------------------------------------------------------------------------------------
 
-[ticket:1950]
+:ticket:`1950`
 
 Note this affects the Beaker caching example, where the
 workings of the ``_params_from_query()`` function needed a
 grey areas that should are best decided by individual
 applications, so we've underscored this attribute.
 
-[ticket:1870]
+:ticket:`1870`
 
 Renamed the ``alias`` keyword arg of standalone ``alias()`` function to ``name``
 --------------------------------------------------------------------------------
 ``SingletonThreadPool.dispose_local()`` -> removed, use
 ``conn.invalidate()``
 
-[ticket:1982]
+:ticket:`1982`
 
 Previously Deprecated, Now Removed
 ==================================
 
 :ref:`Overview <overview>` |
 :ref:`Installation Guide <installation>` |
-:ref:`Migration from 0.7 <migration>` |
+:doc:`Migration from 0.7 <changelog/migration_08>` |
 :doc:`Changelog catalog <changelog/index>`
 
 SQLAlchemy ORM
 0.7 to 0.8 Migration
 =====================
 
-Notes on what's changed from 0.7 to 0.8 is available on the SQLAlchemy wiki at
-`08Migration <http://www.sqlalchemy.org/trac/wiki/08Migration>`_.
+Notes on what's changed from 0.7 to 0.8 is available here at :doc:`changelog/migration_08`.