~ubuntu-branches/debian/sid/sqlalchemy/sid

« back to all changes in this revision

Viewing changes to CHANGES

  • Committer: Package Import Robot
  • Author(s): Piotr Ożarowski
  • Date: 2012-01-29 23:29:50 UTC
  • mfrom: (1.4.18)
  • Revision ID: package-import@ubuntu.com-20120129232950-1mw4zn2xy2o51ua5
Tags: 0.7.5-1
* New upstream release
  - minumum required python-sphinx version bumped to 1.1.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
=======
4
4
CHANGES
5
5
=======
6
 
0.7.4
 
6
0.7.5 (January 28, 2012)
 
7
=====
 
8
- orm
 
9
  - [bug] Fixed issue where modified session state
 
10
    established after a failed flush would be committed
 
11
    as part of the subsequent transaction that 
 
12
    begins automatically after manual call 
 
13
    to rollback().   The state of the session is
 
14
    checked within rollback(), and if new state
 
15
    is present, a warning is emitted and 
 
16
    restore_snapshot() is called a second time,
 
17
    discarding those changes. [ticket:2389]
 
18
 
 
19
  - [bug] Fixed regression from 0.7.4 whereby
 
20
    using an already instrumented column from a
 
21
    superclass as "polymorphic_on" failed to resolve
 
22
    the underlying Column.  [ticket:2345]
 
23
 
 
24
  - [bug] Raise an exception if xyzload_all() is
 
25
    used inappropriately with two non-connected
 
26
    relationships.  [ticket:2370]
 
27
 
 
28
  - [feature] Added "class_registry" argument to
 
29
    declarative_base().  Allows two or more declarative
 
30
    bases to share the same registry of class names.
 
31
 
 
32
  - [feature] query.filter() accepts multiple 
 
33
    criteria which will join via AND, i.e.
 
34
    query.filter(x==y, z>q, ...)
 
35
 
 
36
  - [feature] Added new capability to relationship
 
37
    loader options to allow "default" loader strategies.
 
38
    Pass '*' to any of joinedload(), lazyload(),
 
39
    subqueryload(), or noload() and that becomes the
 
40
    loader strategy used for all relationships,
 
41
    except for those explicitly stated in the
 
42
    Query.  Thanks to up-and-coming contributor
 
43
    Kent Bower for an exhaustive and well 
 
44
    written test suite !  [ticket:2351]
 
45
 
 
46
  - [bug] Fixed bug whereby event.listen(SomeClass)
 
47
    forced an entirely unnecessary compile of the 
 
48
    mapper, making events very hard to set up
 
49
    at module import time (nobody noticed this ??)  
 
50
    [ticket:2367]
 
51
 
 
52
  - [bug] Fixed bug whereby hybrid_property didn't 
 
53
    work as a kw arg in any(), has().
 
54
 
 
55
  - Fixed regression from 0.6 whereby if 
 
56
    "load_on_pending" relationship() flag were used
 
57
    where a non-"get()" lazy clause needed to be 
 
58
    emitted on a pending object, it would fail 
 
59
    to load.
 
60
 
 
61
  - [bug] ensure pickleability of all ORM exceptions
 
62
    for multiprocessing compatibility. [ticket:2371]
 
63
 
 
64
  - [bug] implemented standard "can't set attribute" / 
 
65
    "can't delete attribute" AttributeError when 
 
66
    setattr/delattr used on a hybrid that doesn't 
 
67
    define fset or fdel. [ticket:2353]
 
68
 
 
69
  - [bug] Fixed bug where unpickled object didn't 
 
70
    have enough of its state set up to work
 
71
    correctly within the unpickle() event established
 
72
    by the mutable object extension, if the object
 
73
    needed ORM attribute access within 
 
74
    __eq__() or similar. [ticket:2362]
 
75
 
 
76
  - [bug] Fixed bug where "merge" cascade could
 
77
    mis-interpret an unloaded attribute, if the
 
78
    load_on_pending flag were used with 
 
79
    relationship().  Thanks to Kent Bower
 
80
    for tests.  [ticket:2374]
 
81
 
 
82
  - [feature] New declarative reflection example
 
83
    added, illustrates how best to mix table reflection
 
84
    with declarative as well as uses some new features
 
85
    from [ticket:2356].
 
86
 
 
87
- sql
 
88
  - [feature] New reflection feature "autoload_replace";
 
89
    when set to False on Table, the Table can be autoloaded
 
90
    without existing columns being replaced.  Allows
 
91
    more flexible chains of Table construction/reflection
 
92
    to be constructed, including that it helps with 
 
93
    combining Declarative with table reflection.
 
94
    See the new example on the wiki.  [ticket:2356]
 
95
 
 
96
  - [bug] Improved the API for add_column() such that
 
97
    if the same column is added to its own table, 
 
98
    an error is not raised and the constraints
 
99
    don't get doubled up.  Also helps with some
 
100
    reflection/declarative patterns. [ticket:2356]
 
101
 
 
102
  - [feature] Added "false()" and "true()" expression
 
103
    constructs to sqlalchemy.sql namespace, though
 
104
    not part of __all__ as of yet.
 
105
 
 
106
  - [feature] Dialect-specific compilers now raise
 
107
    CompileException for all type/statement compilation 
 
108
    issues, instead of InvalidRequestError or ArgumentError. 
 
109
    The DDL for CREATE TABLE will re-raise 
 
110
    CompileExceptions to include table/column information
 
111
    for the problematic column.  [ticket:2361]
 
112
 
 
113
  - [bug] Fixed issue where the "required" exception
 
114
    would not be raised for bindparam() with required=True,
 
115
    if the statement were given no parameters at all.
 
116
    [ticket:2381]
 
117
 
 
118
- engine
 
119
  - [bug] Added __reduce__ to StatementError, 
 
120
    DBAPIError, column errors so that exceptions 
 
121
    are pickleable, as when using multiprocessing.  
 
122
    However, not 
 
123
    all DBAPIs support this yet, such as 
 
124
    psycopg2. [ticket:2371]
 
125
 
 
126
  - [bug] Improved error messages when a non-string
 
127
    or invalid string is passed to any of the
 
128
    date/time processors used by SQLite, including
 
129
    C and Python versions.  [ticket:2382]
 
130
 
 
131
  - [bug] Fixed bug whereby a table-bound Column 
 
132
    object named "<a>_<b>" which matched a column 
 
133
    labeled as "<tablename>_<colname>" could match 
 
134
    inappropriately when targeting in a result
 
135
    set row.  [ticket:2377]
 
136
 
 
137
  - [bug] Fixed bug in "mock" strategy whereby
 
138
    correct DDL visit method wasn't called, resulting
 
139
    in "CREATE/DROP SEQUENCE" statements being 
 
140
    duplicated [ticket:2384]
 
141
 
 
142
- sqlite
 
143
  - [bug] the "name" of an FK constraint in SQLite
 
144
    is reflected as "None", not "0" or other 
 
145
    integer value [ticket:2364].
 
146
    SQLite does not appear to support constraint
 
147
    naming in any case.
 
148
 
 
149
  - [bug] sql.false() and sql.true() compile to
 
150
    0 and 1, respectively in sqlite [ticket:2368]
 
151
 
 
152
  - [bug] removed an erroneous "raise" in the 
 
153
    SQLite dialect when getting table names
 
154
    and view names, where logic is in place
 
155
    to fall back to an older version of 
 
156
    SQLite that doesn't have the 
 
157
    "sqlite_temp_master" table.
 
158
 
 
159
- mysql
 
160
  - [bug] fixed regexp that filters out warnings
 
161
    for non-reflected "PARTITION" directives,
 
162
    thanks to George Reilly [ticket:2376]
 
163
 
 
164
- mssql
 
165
  - [bug] Adjusted the regexp used in the
 
166
    mssql.TIME type to ensure only six digits
 
167
    are received for the "microseconds" portion
 
168
    of the value, which is expected by 
 
169
    Python's datetime.time().  Note that
 
170
    support for sending microseconds doesn't
 
171
    seem to be possible yet with pyodbc
 
172
    at least.  [ticket:2340]
 
173
 
 
174
  - [bug] Dropped the "30 char" limit on pymssql,
 
175
    based on reports that it's doing things
 
176
    better these days.  pymssql hasn't been
 
177
    well tested and as the DBAPI is in flux
 
178
    it's still not clear what the status
 
179
    is on this driver and how SQLAlchemy's
 
180
    implementation should adapt.  [ticket:2347]
 
181
 
 
182
- oracle
 
183
  - [bug] Added ORA-03135 to the never ending
 
184
    list of oracle "connection lost" errors
 
185
    [ticket:2388]
 
186
 
 
187
- core
 
188
  - [bug] Changed LRUCache, used by the mapper
 
189
    to cache INSERT/UPDATE/DELETE statements,
 
190
    to use an incrementing counter instead
 
191
    of a timestamp to track entries, for greater
 
192
    reliability versus using time.time(), which
 
193
    can cause test failures on some platforms.
 
194
    [ticket:2379]
 
195
 
 
196
  - [bug] Added a boolean check for the "finalize"
 
197
    function within the pool connection proxy's
 
198
    weakref callback before calling it, so that a 
 
199
    warning isn't emitted that this function is None 
 
200
    when the application is exiting and gc has
 
201
    removed the function from the module before the 
 
202
    weakref callback was invoked.  [ticket:2383]
 
203
 
 
204
- Py3K
 
205
  - [bug] Fixed inappropriate usage of util.py3k
 
206
    flag and renamed it to util.py3k_warning, since 
 
207
    this flag is intended to detect the -3 flag
 
208
    series of import restrictions only.
 
209
    [ticket:2348]
 
210
 
 
211
- examples
 
212
  - [feature] Simplified the versioning example
 
213
    a bit to use a declarative mixin as well 
 
214
    as an event listener, instead of a metaclass +
 
215
    SessionExtension.  [ticket:2313]
 
216
 
 
217
  - [bug] Fixed large_collection.py to close the
 
218
    session before dropping tables. [ticket:2346]
 
219
 
 
220
0.7.4 (December 9, 2011)
7
221
=====
8
222
- orm
9
223
  - [bug] Fixed backref behavior when "popping" the