]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- Retroactive textmate damage control
authorJason Kirtland <jek@discorporate.us>
Wed, 12 Mar 2008 00:09:23 +0000 (00:09 +0000)
committerJason Kirtland <jek@discorporate.us>
Wed, 12 Mar 2008 00:09:23 +0000 (00:09 +0000)
CHANGES

diff --git a/CHANGES b/CHANGES
index 8738966973afaaf0ccd69eb6fc834ab380f616d1..2c83be0cc2f9e1f4387bedef21ae47eea384e99f 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -11,22 +11,22 @@ CHANGES
     - Can again create aliases of selects against textual FROM
       clauses, [ticket:975]
 
-    - The value of a bindparam() can be a callable, in which case
-      it's evaluated at statement execution time to get the value.
+    - The value of a bindparam() can be a callable, in which
+      case it's evaluated at statement execution time to get the
+      value.
 
-    - added exception wrapping/reconnect support to result set 
-      fetching.  Reconnect works for those databases that 
-      raise a catchable data error during results 
-      (i.e. doesn't work on MySQL) [ticket:978]
+    - Added exception wrapping/reconnect support to result set
+      fetching.  Reconnect works for those databases that raise
+      a catchable data error during results (i.e. doesn't work
+      on MySQL) [ticket:978]
 
-    - implemented two-phase API for "threadlocal" engine, 
-      via engine.begin_twophase(), engine.prepare()
-      [ticket:936]
+    - Implemented two-phase API for "threadlocal" engine, via
+      engine.begin_twophase(), engine.prepare() [ticket:936]
 
-    - fixed bug which was preventing UNIONS from being cloneable,
-      [ticket:986]
+    - Fixed bug which was preventing UNIONS from being
+      cloneable, [ticket:986]
 
-    - added "bind" keyword argument to insert(), update(),
+    - Added "bind" keyword argument to insert(), update(),
       delete() and DDL(). The .bind property is now assignable
       on those statements as well as on select().
 
@@ -39,56 +39,58 @@ CHANGES
       and != now work properly with self-referential relations -
       the clause inside the EXISTS is aliased on the "remote"
       side to distinguish it from the parent table.  This
-      applies to single table self-referential as well as 
+      applies to single table self-referential as well as
       inheritance-based self-referential.
-    
-    - repaired behavior of == and != operators at the relation()
-      level when compared against NULL for one-to-one 
-      relations [ticket:985]
-      
-    - fixed bug whereby session.expire() attributes were not
-      loading on an polymorphically-mapped instance mapped 
-      by a select_table mapper.
-      
-    - added query.with_polymorphic() - specifies a list
-      of classes which descend from the base class, which will
-      be added to the FROM clause of the query.  Allows subclasses
-      to be used within filter() criterion as well as eagerly loads
-      the attributes of those subclasses.
-    
-    - Your cries have been heard: removing a pending item from an
-      attribute or collection with delete-orphan expunges the item
-      from the session; no FlushError is raised.  Note that if you
-      session.save()'ed the pending item explicitly, the
+
+    - Repaired behavior of == and != operators at the relation()
+      level when compared against NULL for one-to-one relations
+      [ticket:985]
+
+    - Fixed bug whereby session.expire() attributes were not
+      loading on an polymorphically-mapped instance mapped by a
+      select_table mapper.
+
+    - Added query.with_polymorphic() - specifies a list of
+      classes which descend from the base class, which will be
+      added to the FROM clause of the query.  Allows subclasses
+      to be used within filter() criterion as well as eagerly
+      loads the attributes of those subclasses.
+
+    - Your cries have been heard: removing a pending item from
+      an attribute or collection with delete-orphan expunges the
+      item from the session; no FlushError is raised.  Note that
+      if you session.save()'ed the pending item explicitly, the
       attribute/collection removal still knocks it out.
 
-    - session.refresh() and session.expire() raise an error when 
-      called on instances which are not persistent within the session
-      
-    - Fixed potential generative bug when the same Query was used
-      to generate multiple Query objects using join().
-
-    - fixed bug which was introduced in 0.4.3, whereby loading an
-      already-persistent instance mapped with joined table inheritance
-      would trigger a useless "secondary" load from its joined 
-      table, when using the default "select" polymorphic_fetch.  
-      This was due to attributes being marked as expired
-      during its first load and not getting unmarked from the 
-      previous "secondary" load.  Attributes are now unexpired
-      based on presence in __dict__ after any load or commit
-      operation succeeds.
-      
-    - deprecated Query methods apply_sum(), apply_max(), apply_min(),
-      apply_avg().  Better methodologies are coming....
-    
+    - session.refresh() and session.expire() raise an error when
+      called on instances which are not persistent within the
+      session
+
+    - Fixed potential generative bug when the same Query was
+      used to generate multiple Query objects using join().
+
+    - Fixed bug which was introduced in 0.4.3, whereby loading
+      an already-persistent instance mapped with joined table
+      inheritance would trigger a useless "secondary" load from
+      its joined table, when using the default "select"
+      polymorphic_fetch.  This was due to attributes being
+      marked as expired during its first load and not getting
+      unmarked from the previous "secondary" load.  Attributes
+      are now unexpired based on presence in __dict__ after any
+      load or commit operation succeeds.
+
+    - Deprecated Query methods apply_sum(), apply_max(),
+      apply_min(), apply_avg().  Better methodologies are
+      coming....
+
     - relation() can accept a callable for its first argument,
       which returns the class to be related.  This is in place
       to assist declarative packages to define relations without
       classes yet being in place.
-        
-    - Added a new "higher level" operator called "of_type()": used
-      in join() as well as with any() and has(), qualifies the
-      subclass which will be used in filter criterion, e.g.:
+
+    - Added a new "higher level" operator called "of_type()":
+      used in join() as well as with any() and has(), qualifies
+      the subclass which will be used in filter criterion, e.g.:
 
         query.filter(Company.employees.of_type(Engineer).
           any(Engineer.name=='foo'))
@@ -102,8 +104,8 @@ CHANGES
       flush().
 
     - Expressions used in filter(), filter_by() and others, when
-      they make usage of a clause generated from a relation using
-      the identity of a child object (e.g.,
+      they make usage of a clause generated from a relation
+      using the identity of a child object (e.g.,
       filter(Parent.child==<somechild>)), evaluate the actual
       primary key value of <somechild> at execution time so that
       the autoflush step of the Query can complete, thereby
@@ -111,7 +113,7 @@ CHANGES
       <somechild> was pending.
 
     - setting the relation()-level order by to a column in the
-      many-to-many "secondary" table will now work with eager 
+      many-to-many "secondary" table will now work with eager
       loading, previously the "order by" wasn't aliased against
       the secondary table's alias.
 
@@ -123,19 +125,19 @@ CHANGES
 
     - postgres TIMESTAMP renders correctly [ticket:981]
 
-    - postgres PGArray is a "mutable" type by default;
-      when used with the ORM, mutable-style equality/
-      copy-on-write techniques are used to test for changes.
-      
+    - postgres PGArray is a "mutable" type by default; when used
+      with the ORM, mutable-style equality/ copy-on-write
+      techniques are used to test for changes.
+
 - extensions
     - a new super-small "declarative" extension has been added,
-      which allows Table and mapper() configuration to take place
-      inline underneath a class declaration.  This extension differs
-      from ActiveMapper and Elixir in that it does not redefine
-      any SQLAlchemy semantics at all; literal Column, Table
-      and relation() constructs are used to define the class 
-      behavior and table definition.
-      
+      which allows Table and mapper() configuration to take
+      place inline underneath a class declaration.  This
+      extension differs from ActiveMapper and Elixir in that it
+      does not redefine any SQLAlchemy semantics at all; literal
+      Column, Table and relation() constructs are used to define
+      the class behavior and table definition.
+
 0.4.3
 ------
 - sql