~ubuntu-branches/debian/jessie/sqlalchemy/jessie

« back to all changes in this revision

Viewing changes to doc/changelog/changelog_01.html

  • Committer: Package Import Robot
  • Author(s): Piotr Ożarowski, Jakub Wilk, Piotr Ożarowski
  • Date: 2013-07-06 20:53:52 UTC
  • mfrom: (1.4.23) (16.1.17 experimental)
  • Revision ID: package-import@ubuntu.com-20130706205352-ryppl1eto3illd79
Tags: 0.8.2-1
[ Jakub Wilk ]
* Use canonical URIs for Vcs-* fields.

[ Piotr Ożarowski ]
* New upstream release
* Upload to unstable
* Build depend on python3-all instead of -dev, extensions are not built for
  Python 3.X 

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
2
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
3
 
 
4
<html xmlns="http://www.w3.org/1999/xhtml">
 
5
    <head>
 
6
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
7
        
 
8
        <title>
 
9
            
 
10
    
 
11
                0.1 Changelog
 
12
             &mdash; 
 
13
    SQLAlchemy 0.8 Documentation
 
14
 
 
15
        </title>
 
16
        
 
17
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
 
18
    <link rel="stylesheet" href="../_static/docs.css" type="text/css" />
 
19
 
 
20
    <script type="text/javascript">
 
21
      var DOCUMENTATION_OPTIONS = {
 
22
          URL_ROOT:    '../',
 
23
          VERSION:     '0.8.2',
 
24
          COLLAPSE_MODINDEX: false,
 
25
          FILE_SUFFIX: '.html'
 
26
      };
 
27
    </script>
 
28
        <script type="text/javascript" src="../_static/jquery.js"></script>
 
29
        <script type="text/javascript" src="../_static/underscore.js"></script>
 
30
        <script type="text/javascript" src="../_static/doctools.js"></script>
 
31
    <script type="text/javascript" src="../_static/init.js"></script>
 
32
    <link rel="index" title="Index" href="../genindex.html" />
 
33
    <link rel="search" title="Search" href="../search.html" />
 
34
        <link rel="copyright" title="Copyright" href="../copyright.html" />
 
35
    <link rel="top" title="SQLAlchemy 0.8 Documentation" href="../index.html" />
 
36
        <link rel="up" title="Changes and Migration" href="index.html" />
 
37
        <link rel="next" title="What&#8217;s New in SQLAlchemy 0.7?" href="migration_07.html" />
 
38
        <link rel="prev" title="0.2 Changelog" href="changelog_02.html" />
 
39
 
 
40
    </head>
 
41
    <body>
 
42
        
 
43
 
 
44
 
 
45
 
 
46
 
 
47
 
 
48
 
 
49
 
 
50
 
 
51
 
 
52
 
 
53
<div id="docs-container">
 
54
 
 
55
 
 
56
 
 
57
<div id="docs-header">
 
58
    <h1>SQLAlchemy 0.8 Documentation</h1>
 
59
 
 
60
    <div id="docs-search">
 
61
    Search:
 
62
    <form class="search" action="../search.html" method="get">
 
63
      <input type="text" name="q" size="18" /> <input type="submit" value="Search" />
 
64
      <input type="hidden" name="check_keywords" value="yes" />
 
65
      <input type="hidden" name="area" value="default" />
 
66
    </form>
 
67
    </div>
 
68
 
 
69
    <div id="docs-version-header">
 
70
        Release: <span class="version-num">0.8.2</span> | Release Date: July 3, 2013
 
71
 
 
72
 
 
73
    </div>
 
74
 
 
75
</div>
 
76
 
 
77
<div id="docs-top-navigation">
 
78
    <div id="docs-top-page-control" class="docs-navigation-links">
 
79
        <ul>
 
80
            <li>Prev:
 
81
            <a href="changelog_02.html" title="previous chapter">0.2 Changelog</a>
 
82
            </li>
 
83
            <li>Next:
 
84
            <a href="migration_07.html" title="next chapter">What&#8217;s New in SQLAlchemy 0.7?</a>
 
85
            </li>
 
86
 
 
87
        <li>
 
88
            <a href="../contents.html">Table of Contents</a> |
 
89
            <a href="../genindex.html">Index</a>
 
90
            | <a href="../_sources/changelog/changelog_01.txt">view source
 
91
        </li>
 
92
        </ul>
 
93
    </div>
 
94
 
 
95
    <div id="docs-navigation-banner">
 
96
        <a href="../index.html">SQLAlchemy 0.8 Documentation</a>
 
97
                » <a href="index.html" title="Changes and Migration">Changes and Migration</a>
 
98
        » 
 
99
                0.1 Changelog
 
100
             
 
101
 
 
102
        <h2>
 
103
            
 
104
                0.1 Changelog
 
105
            
 
106
        </h2>
 
107
    </div>
 
108
 
 
109
</div>
 
110
 
 
111
<div id="docs-body-container">
 
112
 
 
113
    <div id="docs-sidebar">
 
114
    <h3><a href="../index.html">Table of Contents</a></h3>
 
115
    <ul>
 
116
<li><a class="reference internal" href="#">0.1 Changelog</a><ul>
 
117
<li><a class="reference internal" href="#change-0.1.7">0.1.7</a></li>
 
118
<li><a class="reference internal" href="#change-0.1.6">0.1.6</a></li>
 
119
<li><a class="reference internal" href="#change-0.1.5">0.1.5</a></li>
 
120
<li><a class="reference internal" href="#change-0.1.4">0.1.4</a></li>
 
121
<li><a class="reference internal" href="#change-0.1.3">0.1.3</a></li>
 
122
<li><a class="reference internal" href="#change-0.1.2">0.1.2</a></li>
 
123
<li><a class="reference internal" href="#change-0.1.1">0.1.1</a></li>
 
124
</ul>
 
125
</li>
 
126
</ul>
 
127
 
 
128
 
 
129
    <h4>Previous Topic</h4>
 
130
    <p>
 
131
    <a href="changelog_02.html" title="previous chapter">0.2 Changelog</a>
 
132
    </p>
 
133
    <h4>Next Topic</h4>
 
134
    <p>
 
135
    <a href="migration_07.html" title="next chapter">What&#8217;s New in SQLAlchemy 0.7?</a>
 
136
    </p>
 
137
 
 
138
 
 
139
    <h4>Quick Search</h4>
 
140
    <p>
 
141
    <form class="search" action="../search.html" method="get">
 
142
      <input type="text" name="q" size="18" /> <input type="submit" value="Search" />
 
143
      <input type="hidden" name="check_keywords" value="yes" />
 
144
      <input type="hidden" name="area" value="default" />
 
145
    </form>
 
146
    </p>
 
147
 
 
148
    </div>
 
149
 
 
150
    <div id="docs-body" class="withsidebar" >
 
151
        
 
152
<div class="section" id="changelog">
 
153
<h1>0.1 Changelog<a class="headerlink" href="#changelog" title="Permalink to this headline">¶</a></h1>
 
154
<div class="section" id="change-0.1.7">
 
155
<h2>0.1.7<a class="headerlink" href="#change-0.1.7" title="Permalink to this headline">¶</a></h2>
 
156
Released: Fri May 05 2006<ul class="simple">
 
157
<li><p id="change-0.1.7-0"><span class="target" id="change-328a512e45ff41563954cf735897ee07"></span>some fixes to topological sort algorithm<a class="changeset-link reference internal" href="#change-328a512e45ff41563954cf735897ee07">(link)</a><p></p>
 
158
</p>
 
159
</li>
 
160
<li><p id="change-0.1.7-1"><span class="target" id="change-5325a0bce730c2af7c68b1e8b502c515"></span>added DISTINCT ON support to Postgres (just supply distinct=[col1,col2..])<a class="changeset-link reference internal" href="#change-5325a0bce730c2af7c68b1e8b502c515">(link)</a><p></p>
 
161
</p>
 
162
</li>
 
163
<li><p id="change-0.1.7-2"><span class="target" id="change-accc87ebae193a33b61db683b6fec8cc"></span>added __mod__ (% operator) to sql expressions<a class="changeset-link reference internal" href="#change-accc87ebae193a33b61db683b6fec8cc">(link)</a><p></p>
 
164
</p>
 
165
</li>
 
166
<li><p id="change-0.1.7-3"><span class="target" id="change-bc8de29156fa01e13acccf2275546f2c"></span>&#8220;order_by&#8221; mapper property inherited from inheriting mapper<a class="changeset-link reference internal" href="#change-bc8de29156fa01e13acccf2275546f2c">(link)</a><p></p>
 
167
</p>
 
168
</li>
 
169
<li><p id="change-0.1.7-4"><span class="target" id="change-f19ea4a4ac8a900c9dc69f593a0e6900"></span>fix to column type used when mapper UPDATES/DELETEs<a class="changeset-link reference internal" href="#change-f19ea4a4ac8a900c9dc69f593a0e6900">(link)</a><p></p>
 
170
</p>
 
171
</li>
 
172
<li><p id="change-0.1.7-5"><span class="target" id="change-a83c4b8c4929f00119792aaa1c7eaad0"></span>with convert_unicode=True, reflection was failing, has been fixed<a class="changeset-link reference internal" href="#change-a83c4b8c4929f00119792aaa1c7eaad0">(link)</a><p></p>
 
173
</p>
 
174
</li>
 
175
<li><p id="change-0.1.7-6"><span class="target" id="change-05c25cbd078b2189f6edd43949f26d53"></span>types types types!  still werent working....have to use TypeDecorator again :(<a class="changeset-link reference internal" href="#change-05c25cbd078b2189f6edd43949f26d53">(link)</a><p></p>
 
176
</p>
 
177
</li>
 
178
<li><p id="change-0.1.7-7"><span class="target" id="change-f786fe476a97d9670225bd23f8ba525c"></span>mysql binary type converts array output to buffer, fixes PickleType<a class="changeset-link reference internal" href="#change-f786fe476a97d9670225bd23f8ba525c">(link)</a><p></p>
 
179
</p>
 
180
</li>
 
181
<li><p id="change-0.1.7-8"><span class="target" id="change-521e5583e06309364169c17d38eb7f4c"></span>fixed the attributes.py memory leak once and for all<a class="changeset-link reference internal" href="#change-521e5583e06309364169c17d38eb7f4c">(link)</a><p></p>
 
182
</p>
 
183
</li>
 
184
<li><p id="change-0.1.7-9"><span class="target" id="change-d68c77086376391b4445c79edfb06222"></span>unittests are qualified based on the databases that support each one<a class="changeset-link reference internal" href="#change-d68c77086376391b4445c79edfb06222">(link)</a><p></p>
 
185
</p>
 
186
</li>
 
187
<li><p id="change-0.1.7-10"><span class="target" id="change-242dbb58a59fc700cebb1daa2705e5c3"></span>fixed bug where column defaults would clobber VALUES clause of insert objects<a class="changeset-link reference internal" href="#change-242dbb58a59fc700cebb1daa2705e5c3">(link)</a><p></p>
 
188
</p>
 
189
</li>
 
190
<li><p id="change-0.1.7-11"><span class="target" id="change-c9e53eccf51d7613c97843b27f3a7c82"></span>fixed bug where table def w/ schema name would force engine connection<a class="changeset-link reference internal" href="#change-c9e53eccf51d7613c97843b27f3a7c82">(link)</a><p></p>
 
191
</p>
 
192
</li>
 
193
<li><p id="change-0.1.7-12"><span class="target" id="change-b6a168bf0634a9bcda214e61709a7525"></span>fix for parenthesis to work correctly with subqueries in INSERT/UPDATE<a class="changeset-link reference internal" href="#change-b6a168bf0634a9bcda214e61709a7525">(link)</a><p></p>
 
194
</p>
 
195
</li>
 
196
<li><p id="change-0.1.7-13"><span class="target" id="change-de1f7d90ee947b184fd95d1d18936c18"></span>HistoryArraySet gets extend() method<a class="changeset-link reference internal" href="#change-de1f7d90ee947b184fd95d1d18936c18">(link)</a><p></p>
 
197
</p>
 
198
</li>
 
199
<li><p id="change-0.1.7-14"><span class="target" id="change-3712b8eaa2628230b682529674bc06c7"></span>fixed lazyload support for other comparison operators besides =<a class="changeset-link reference internal" href="#change-3712b8eaa2628230b682529674bc06c7">(link)</a><p></p>
 
200
</p>
 
201
</li>
 
202
<li><p id="change-0.1.7-15"><span class="target" id="change-703437eb9f40d509b86cd1e57be00e21"></span>lazyload fix where two comparisons in the join condition point to the
 
203
samem column<a class="changeset-link reference internal" href="#change-703437eb9f40d509b86cd1e57be00e21">(link)</a><p></p>
 
204
</p>
 
205
</li>
 
206
<li><p id="change-0.1.7-16"><span class="target" id="change-2c543f7f6cc73846553be1de46163f44"></span>added &#8220;construct_new&#8221; flag to mapper, will use __new__ to create instances
 
207
instead of __init__ (standard in 0.2)<a class="changeset-link reference internal" href="#change-2c543f7f6cc73846553be1de46163f44">(link)</a><p></p>
 
208
</p>
 
209
</li>
 
210
<li><p id="change-0.1.7-17"><span class="target" id="change-f9fa9d970a5c396e116d1950c9607944"></span>added selectresults.py to SVN, missed it last time<a class="changeset-link reference internal" href="#change-f9fa9d970a5c396e116d1950c9607944">(link)</a><p></p>
 
211
</p>
 
212
</li>
 
213
<li><p id="change-0.1.7-18"><span class="target" id="change-3c36fc2b9bfcd27a4dda5ecb69d6f689"></span>tweak to allow a many-to-many relationship from a table to itself via
 
214
an association table<a class="changeset-link reference internal" href="#change-3c36fc2b9bfcd27a4dda5ecb69d6f689">(link)</a><p></p>
 
215
</p>
 
216
</li>
 
217
<li><p id="change-0.1.7-19"><span class="target" id="change-7efce648859a52b729d3ce36573a8ea4"></span>small fix to &#8220;translate_row&#8221; function used by polymorphic example<a class="changeset-link reference internal" href="#change-7efce648859a52b729d3ce36573a8ea4">(link)</a><p></p>
 
218
</p>
 
219
</li>
 
220
<li><p id="change-0.1.7-20"><span class="target" id="change-0a39188910ba4ac441e56b3f097f808c"></span>create_engine uses cgi.parse_qsl to read query string (out the window in 0.2)<a class="changeset-link reference internal" href="#change-0a39188910ba4ac441e56b3f097f808c">(link)</a><p></p>
 
221
</p>
 
222
</li>
 
223
<li><p id="change-0.1.7-21"><span class="target" id="change-cda9b4e506598541c59a57ac145a70cb"></span>tweaks to CAST operator<a class="changeset-link reference internal" href="#change-cda9b4e506598541c59a57ac145a70cb">(link)</a><p></p>
 
224
</p>
 
225
</li>
 
226
<li><p id="change-0.1.7-22"><span class="target" id="change-223883de925fbd8a3a667c76b3a64e02"></span>fixed function names LOCAL_TIME/LOCAL_TIMESTAMP -&gt; LOCALTIME/LOCALTIMESTAMP<a class="changeset-link reference internal" href="#change-223883de925fbd8a3a667c76b3a64e02">(link)</a><p></p>
 
227
</p>
 
228
</li>
 
229
<li><p id="change-0.1.7-23"><span class="target" id="change-2a14156f0b25e17fb67f48a17b96f1d8"></span>fixed order of ORDER BY/HAVING in compile<a class="changeset-link reference internal" href="#change-2a14156f0b25e17fb67f48a17b96f1d8">(link)</a><p></p>
 
230
</p>
 
231
</li>
 
232
</ul>
 
233
</div>
 
234
<div class="section" id="change-0.1.6">
 
235
<h2>0.1.6<a class="headerlink" href="#change-0.1.6" title="Permalink to this headline">¶</a></h2>
 
236
Released: Wed Apr 12 2006<ul class="simple">
 
237
<li><p id="change-0.1.6-0"><span class="target" id="change-5ba2973cedb4a955806631a79704e24a"></span>support for MS-SQL added courtesy Rick Morrison, Runar Petursson<a class="changeset-link reference internal" href="#change-5ba2973cedb4a955806631a79704e24a">(link)</a><p></p>
 
238
</p>
 
239
</li>
 
240
<li><p id="change-0.1.6-1"><span class="target" id="change-11c6b02ceaba6cbd60d96b1201312fbd"></span>the latest SQLSoup from J. Ellis<a class="changeset-link reference internal" href="#change-11c6b02ceaba6cbd60d96b1201312fbd">(link)</a><p></p>
 
241
</p>
 
242
</li>
 
243
<li><p id="change-0.1.6-2"><span class="target" id="change-b11804c4b34c595ddd5655238d973fd0"></span>ActiveMapper has preliminary support for inheritance (Jeff Watkins)<a class="changeset-link reference internal" href="#change-b11804c4b34c595ddd5655238d973fd0">(link)</a><p></p>
 
244
</p>
 
245
</li>
 
246
<li><p id="change-0.1.6-3"><span class="target" id="change-0c8a7b899b662206ff1d772c2b4f3c32"></span>added a &#8220;mods&#8221; system which allows pluggable modules that modify/augment
 
247
core functionality, using the function &#8220;install_mods(<a href="#id1"><span class="problematic" id="id2">*</span></a>modnames)&#8221;.<a class="changeset-link reference internal" href="#change-0c8a7b899b662206ff1d772c2b4f3c32">(link)</a><p></p>
 
248
</p>
 
249
</li>
 
250
<li><p id="change-0.1.6-4"><span class="target" id="change-5165cff42fd7bc0985c9ee41224ef11d"></span>added the first &#8220;mod&#8221;, SelectResults, which modifies mapper selects to
 
251
return generators that turn ranges into LIMIT/OFFSET queries
 
252
(Jonas Borgstr?<a class="changeset-link reference internal" href="#change-5165cff42fd7bc0985c9ee41224ef11d">(link)</a><p></p>
 
253
</p>
 
254
</li>
 
255
<li><p id="change-0.1.6-5"><span class="target" id="change-149fa05e8a8b6549f870b65a4fb28173"></span>factored out querying capabilities of Mapper into a separate Query object
 
256
which is Session-centric.  this improves the performance of mapper.using(session)
 
257
and makes other things possible.<a class="changeset-link reference internal" href="#change-149fa05e8a8b6549f870b65a4fb28173">(link)</a><p></p>
 
258
</p>
 
259
</li>
 
260
<li><p id="change-0.1.6-6"><span class="target" id="change-a36fb99cd24021ad222613215b456353"></span>objectstore/Session refactored, the official way to save objects is now
 
261
via the flush() method.  The begin/commit functionality of Session is factored
 
262
into LegacySession which is still established as the default behavior, until
 
263
the 0.2 series.<a class="changeset-link reference internal" href="#change-a36fb99cd24021ad222613215b456353">(link)</a><p></p>
 
264
</p>
 
265
</li>
 
266
<li><p id="change-0.1.6-7"><span class="target" id="change-a65412891901f69c41b8cdc59c8bb36b"></span>types system is bound to an engine at query compile time, not schema
 
267
construction time.  this simplifies the types system as well as the ProxyEngine.<a class="changeset-link reference internal" href="#change-a65412891901f69c41b8cdc59c8bb36b">(link)</a><p></p>
 
268
</p>
 
269
</li>
 
270
<li><p id="change-0.1.6-8"><span class="target" id="change-e26b0f7145354b8b0b48218c57239ae8"></span>added &#8216;version_id&#8217; keyword argument to mapper. this keyword should reference a
 
271
Column object with type Integer, preferably non-nullable, which will be used on
 
272
the mapped table to track version numbers. this number is incremented on each
 
273
save operation and is specifed in the UPDATE/DELETE conditions so that it
 
274
factors into the returned row count, which results in a ConcurrencyError if the
 
275
value received is not the expected count.<a class="changeset-link reference internal" href="#change-e26b0f7145354b8b0b48218c57239ae8">(link)</a><p></p>
 
276
</p>
 
277
</li>
 
278
<li><p id="change-0.1.6-9"><span class="target" id="change-b20c12e6962a35663f9e7907d3f36082"></span>added &#8216;entity_name&#8217; keyword argument to mapper. a mapper is now associated
 
279
with a class via the class object as well as an optional entity_name parameter,
 
280
which is a string defaulting to None. any number of primary mappers can be
 
281
created for a class, qualified by the entity name. instances of those classes
 
282
will issue all of their load and save operations through their
 
283
entity_name-qualified mapper, and maintain separate a identity in the identity
 
284
map for an otherwise equilvalent object.<a class="changeset-link reference internal" href="#change-b20c12e6962a35663f9e7907d3f36082">(link)</a><p></p>
 
285
</p>
 
286
</li>
 
287
<li><p id="change-0.1.6-10"><span class="target" id="change-ae9d5b1b522edb1aaf5f83ae171fad0c"></span>overhaul to the attributes system. code has been clarified, and also fixed to
 
288
support proper polymorphic behavior on object attributes.<a class="changeset-link reference internal" href="#change-ae9d5b1b522edb1aaf5f83ae171fad0c">(link)</a><p></p>
 
289
</p>
 
290
</li>
 
291
<li><p id="change-0.1.6-11"><span class="target" id="change-94d35e9f98ca35211995921004df4b48"></span>added &#8220;for_update&#8221; flag to Select objects<a class="changeset-link reference internal" href="#change-94d35e9f98ca35211995921004df4b48">(link)</a><p></p>
 
292
</p>
 
293
</li>
 
294
<li><p id="change-0.1.6-12"><span class="target" id="change-84dbe2494396013264b0e9418f3a4312"></span>some fixes for backrefs<a class="changeset-link reference internal" href="#change-84dbe2494396013264b0e9418f3a4312">(link)</a><p></p>
 
295
</p>
 
296
</li>
 
297
<li><p id="change-0.1.6-13"><span class="target" id="change-0118b76318e46eb69356b600e29d3fe4"></span>fix for postgres1 DateTime type<a class="changeset-link reference internal" href="#change-0118b76318e46eb69356b600e29d3fe4">(link)</a><p></p>
 
298
</p>
 
299
</li>
 
300
<li><p id="change-0.1.6-14"><span class="target" id="change-36e8bef9adbc229c3632abf04f039a3f"></span>documentation pages mostly switched over to Markdown syntax<a class="changeset-link reference internal" href="#change-36e8bef9adbc229c3632abf04f039a3f">(link)</a><p></p>
 
301
</p>
 
302
</li>
 
303
</ul>
 
304
</div>
 
305
<div class="section" id="change-0.1.5">
 
306
<h2>0.1.5<a class="headerlink" href="#change-0.1.5" title="Permalink to this headline">¶</a></h2>
 
307
Released: Mon Mar 27 2006<ul class="simple">
 
308
<li><p id="change-0.1.5-0"><span class="target" id="change-2ca8013d56b6dab07a13fa06df401dc9"></span>added SQLSession concept to SQLEngine. this object keeps track of retrieving a
 
309
connection from the connection pool as well as an in-progress transaction.
 
310
methods push_session() and pop_session() added to SQLEngine which push/pop a new
 
311
SQLSession onto the engine, allowing operation upon a second connection &#8220;nested&#8221;
 
312
within the previous one, allowing nested transactions. Other tricks are sure to
 
313
come later regarding SQLSession.<a class="changeset-link reference internal" href="#change-2ca8013d56b6dab07a13fa06df401dc9">(link)</a><p></p>
 
314
</p>
 
315
</li>
 
316
<li><p id="change-0.1.5-1"><span class="target" id="change-f4045660fffd963a8410ee98d837ef82"></span>added nest_on argument to objectstore.Session. This is a single SQLEngine or
 
317
list of engines for which push_session()/pop_session() will be called each time
 
318
this Session becomes the active session (via objectstore.push_session() or
 
319
equivalent). This allows a unit of work Session to take advantage of the nested
 
320
transaction feature without explicitly calling push_session/pop_session on the
 
321
engine.<a class="changeset-link reference internal" href="#change-f4045660fffd963a8410ee98d837ef82">(link)</a><p></p>
 
322
</p>
 
323
</li>
 
324
<li><p id="change-0.1.5-2"><span class="target" id="change-5195877eb353a245cb1854f472e25a63"></span>factored apart objectstore/unitofwork to separate &#8220;Session scoping&#8221; from
 
325
&#8220;uow commit heavy lifting&#8221;<a class="changeset-link reference internal" href="#change-5195877eb353a245cb1854f472e25a63">(link)</a><p></p>
 
326
</p>
 
327
</li>
 
328
<li><p id="change-0.1.5-3"><span class="target" id="change-4de8a4632f7933b1084adb014d374356"></span>added populate_instance() method to MapperExtension. allows an extension to
 
329
modify the population of object attributes. this method can call the
 
330
populate_instance() method on another mapper to proxy the attribute population
 
331
from one mapper to another; some row translation logic is also built in to help
 
332
with this.<a class="changeset-link reference internal" href="#change-4de8a4632f7933b1084adb014d374356">(link)</a><p></p>
 
333
</p>
 
334
</li>
 
335
<li><p id="change-0.1.5-4"><span class="target" id="change-6fdb3140293afd1a90f4b57c169b4faf"></span>fixed Oracle8-compatibility &#8220;use_ansi&#8221; flag which converts JOINs to
 
336
comparisons with the = and (+) operators, passes basic unittests<a class="changeset-link reference internal" href="#change-6fdb3140293afd1a90f4b57c169b4faf">(link)</a><p></p>
 
337
</p>
 
338
</li>
 
339
<li><p id="change-0.1.5-5"><span class="target" id="change-35a4fde8bed4d24e939847f1e5956647"></span>tweaks to Oracle LIMIT/OFFSET support<a class="changeset-link reference internal" href="#change-35a4fde8bed4d24e939847f1e5956647">(link)</a><p></p>
 
340
</p>
 
341
</li>
 
342
<li><p id="change-0.1.5-6"><span class="target" id="change-f3dc289f3cbd1248846531a503f99d73"></span>Oracle reflection uses ALL_** views instead of USER_** to get larger
 
343
list of stuff to reflect from<a class="changeset-link reference internal" href="#change-f3dc289f3cbd1248846531a503f99d73">(link)</a><p></p>
 
344
</p>
 
345
</li>
 
346
<li><p id="change-0.1.5-7"><span class="target" id="change-9b3cdcc692c2b2debfc10c3e578f4c8b"></span>fixes to Oracle foreign key reflection<a class="changeset-link reference internal" href="#change-9b3cdcc692c2b2debfc10c3e578f4c8b">(link)</a><p> <a class="reference external" href="http://www.sqlalchemy.org/trac/ticket/105">#105</a></p>
 
347
</p>
 
348
</li>
 
349
<li><p id="change-0.1.5-8"><span class="target" id="change-1f061b72173f923556b4eb90801185fc"></span>objectstore.commit(obj1, obj2,...) adds an extra step to seek out private
 
350
relations on properties and delete child objects, even though its not a global
 
351
commit<a class="changeset-link reference internal" href="#change-1f061b72173f923556b4eb90801185fc">(link)</a><p></p>
 
352
</p>
 
353
</li>
 
354
<li><p id="change-0.1.5-9"><span class="target" id="change-951f39b628de9b3af7d07279141ef619"></span>lots and lots of fixes to mappers which use inheritance, strengthened the
 
355
concept of relations on a mapper being made towards the &#8220;local&#8221; table for that
 
356
mapper, not the tables it inherits.  allows more complex compositional patterns
 
357
to work with lazy/eager loading.<a class="changeset-link reference internal" href="#change-951f39b628de9b3af7d07279141ef619">(link)</a><p></p>
 
358
</p>
 
359
</li>
 
360
<li><p id="change-0.1.5-10"><span class="target" id="change-03ed46790e5851818fe1ba8ca7e8919f"></span>added support for mappers to inherit from others based on the same table,
 
361
just specify the same table as that of both parent/child mapper.<a class="changeset-link reference internal" href="#change-03ed46790e5851818fe1ba8ca7e8919f">(link)</a><p></p>
 
362
</p>
 
363
</li>
 
364
<li><p id="change-0.1.5-11"><span class="target" id="change-956758d0c5a9f020f9b5ea643cfd900f"></span>some minor speed improvements to the attributes system with regards to
 
365
instantiating and populating new objects.<a class="changeset-link reference internal" href="#change-956758d0c5a9f020f9b5ea643cfd900f">(link)</a><p></p>
 
366
</p>
 
367
</li>
 
368
<li><p id="change-0.1.5-12"><span class="target" id="change-2834e9ac8a3454fdf8a876db8f4a8812"></span>fixed MySQL binary unit test<a class="changeset-link reference internal" href="#change-2834e9ac8a3454fdf8a876db8f4a8812">(link)</a><p></p>
 
369
</p>
 
370
</li>
 
371
<li><p id="change-0.1.5-13"><span class="target" id="change-877341d248eb486358fba969a82e689f"></span>INSERTs can receive clause elements as VALUES arguments, not just literal
 
372
values<a class="changeset-link reference internal" href="#change-877341d248eb486358fba969a82e689f">(link)</a><p></p>
 
373
</p>
 
374
</li>
 
375
<li><p id="change-0.1.5-14"><span class="target" id="change-417b8c0342e2cb2d037d55d3b3f6935b"></span>support for calling multi-tokened functions, i.e. schema.mypkg.func()<a class="changeset-link reference internal" href="#change-417b8c0342e2cb2d037d55d3b3f6935b">(link)</a><p></p>
 
376
</p>
 
377
</li>
 
378
<li><p id="change-0.1.5-15"><span class="target" id="change-14b5686246058f8826cfe6748f8e2f4f"></span>added J. Ellis&#8217; SQLSoup module to extensions package<a class="changeset-link reference internal" href="#change-14b5686246058f8826cfe6748f8e2f4f">(link)</a><p></p>
 
379
</p>
 
380
</li>
 
381
<li><p id="change-0.1.5-16"><span class="target" id="change-e501c9a6894ed384ec9cf53c45384564"></span>added &#8220;polymorphic&#8221; examples illustrating methods to load multiple object types
 
382
from one mapper, the second of which uses the new populate_instance() method.
 
383
small improvements to mapper, UNION construct to help the examples along<a class="changeset-link reference internal" href="#change-e501c9a6894ed384ec9cf53c45384564">(link)</a><p></p>
 
384
</p>
 
385
</li>
 
386
<li><p id="change-0.1.5-17"><span class="target" id="change-98a2bd42701dd1dc96285849497a3bdd"></span>improvements/fixes to session.refresh()/session.expire() (which may have
 
387
been called &#8220;invalidate&#8221; earlier..)<a class="changeset-link reference internal" href="#change-98a2bd42701dd1dc96285849497a3bdd">(link)</a><p></p>
 
388
</p>
 
389
</li>
 
390
<li><p id="change-0.1.5-18"><span class="target" id="change-247e750522dc1abf187cc9ebe7c07392"></span>added session.expunge() which totally removes an object from the current
 
391
session<a class="changeset-link reference internal" href="#change-247e750522dc1abf187cc9ebe7c07392">(link)</a><p></p>
 
392
</p>
 
393
</li>
 
394
<li><p id="change-0.1.5-19"><span class="target" id="change-312a7f1009545c9e3baae04238d7f537"></span>added <a href="#id3"><span class="problematic" id="id4">*</span></a>args, <a href="#id5"><span class="problematic" id="id6">**</span></a>kwargs pass-thru to engine.transaction(func) allowing easier
 
395
creation of transactionalizing decorator functions<a class="changeset-link reference internal" href="#change-312a7f1009545c9e3baae04238d7f537">(link)</a><p></p>
 
396
</p>
 
397
</li>
 
398
<li><p id="change-0.1.5-20"><span class="target" id="change-781ae8e0605a3c7c090b6482c29b3a81"></span>added iterator interface to ResultProxy:  &#8220;for row in result:...&#8221;<a class="changeset-link reference internal" href="#change-781ae8e0605a3c7c090b6482c29b3a81">(link)</a><p></p>
 
399
</p>
 
400
</li>
 
401
<li><p id="change-0.1.5-21"><span class="target" id="change-4383a6acbab6661ad2ea81bfac935cee"></span>added assertion to tx = session.begin(); tx.rollback(); tx.begin(), i.e. cant
 
402
use it after a rollback()<a class="changeset-link reference internal" href="#change-4383a6acbab6661ad2ea81bfac935cee">(link)</a><p></p>
 
403
</p>
 
404
</li>
 
405
<li><p id="change-0.1.5-22"><span class="target" id="change-654f4afac5ca2f8a18cae6ddecd15869"></span>added date conversion on bind parameter fix to SQLite enabling dates to
 
406
work with pysqlite1<a class="changeset-link reference internal" href="#change-654f4afac5ca2f8a18cae6ddecd15869">(link)</a><p></p>
 
407
</p>
 
408
</li>
 
409
<li><p id="change-0.1.5-23"><span class="target" id="change-f82409dbff86d8cb28b246262e5c7257"></span>improvements to subqueries to more intelligently construct their FROM
 
410
clauses<a class="changeset-link reference internal" href="#change-f82409dbff86d8cb28b246262e5c7257">(link)</a><p> <a class="reference external" href="http://www.sqlalchemy.org/trac/ticket/116">#116</a></p>
 
411
</p>
 
412
</li>
 
413
<li><p id="change-0.1.5-24"><span class="target" id="change-a2b5d7a407c4983f40c959349c8e29a6"></span>added PickleType to types.<a class="changeset-link reference internal" href="#change-a2b5d7a407c4983f40c959349c8e29a6">(link)</a><p></p>
 
414
</p>
 
415
</li>
 
416
<li><p id="change-0.1.5-25"><span class="target" id="change-da20f02923aa0e9ce14a56b9dc980596"></span>fixed two bugs with column labels with regards to bind parameters: bind param
 
417
keynames they are now generated from a column &#8220;label&#8221; in all relevant cases to
 
418
take advantage of excess-name-length rules, and checks for a peculiar collision
 
419
against a column named the same as &#8220;tablename_colname&#8221; added<a class="changeset-link reference internal" href="#change-da20f02923aa0e9ce14a56b9dc980596">(link)</a><p></p>
 
420
</p>
 
421
</li>
 
422
<li><p id="change-0.1.5-26"><span class="target" id="change-e13c93c92e346b4f9dabda454ec44f8c"></span>major overhaul to unit of work documentation, other documentation sections.<a class="changeset-link reference internal" href="#change-e13c93c92e346b4f9dabda454ec44f8c">(link)</a><p></p>
 
423
</p>
 
424
</li>
 
425
<li><p id="change-0.1.5-27"><span class="target" id="change-43809b3535863fd4ce975b2ea873a830"></span>fixed attributes bug where if an object is committed, its lazy-loaded list got
 
426
blown away if it hadnt been loaded<a class="changeset-link reference internal" href="#change-43809b3535863fd4ce975b2ea873a830">(link)</a><p></p>
 
427
</p>
 
428
</li>
 
429
<li><p id="change-0.1.5-28"><span class="target" id="change-7e3df3d4f8a185e894a5aeb68a8ec08c"></span>added unique_connection() method to engine, connection pool to return a
 
430
connection that is not part of the thread-local context or any current
 
431
transaction<a class="changeset-link reference internal" href="#change-7e3df3d4f8a185e894a5aeb68a8ec08c">(link)</a><p></p>
 
432
</p>
 
433
</li>
 
434
<li><p id="change-0.1.5-29"><span class="target" id="change-9356a87824679508ce4c592e428336c0"></span>added invalidate() function to pooled connection.  will remove the connection
 
435
from the pool.  still need work for engines to auto-reconnect to a stale DB
 
436
though.<a class="changeset-link reference internal" href="#change-9356a87824679508ce4c592e428336c0">(link)</a><p></p>
 
437
</p>
 
438
</li>
 
439
<li><p id="change-0.1.5-30"><span class="target" id="change-fc80d40f50270b028517b3bba2199a42"></span>added distinct() function to column elements so you can do
 
440
func.count(mycol.distinct())<a class="changeset-link reference internal" href="#change-fc80d40f50270b028517b3bba2199a42">(link)</a><p></p>
 
441
</p>
 
442
</li>
 
443
<li><p id="change-0.1.5-31"><span class="target" id="change-e5d60d8a3cf463409e92d11d1384f766"></span>added &#8220;always_refresh&#8221; flag to Mapper, creates a mapper that will always
 
444
refresh the attributes of objects it gets/selects from the DB, overwriting any
 
445
changes made.<a class="changeset-link reference internal" href="#change-e5d60d8a3cf463409e92d11d1384f766">(link)</a><p></p>
 
446
</p>
 
447
</li>
 
448
</ul>
 
449
</div>
 
450
<div class="section" id="change-0.1.4">
 
451
<h2>0.1.4<a class="headerlink" href="#change-0.1.4" title="Permalink to this headline">¶</a></h2>
 
452
Released: Mon Mar 13 2006<ul class="simple">
 
453
<li><p id="change-0.1.4-0"><span class="target" id="change-0ef266ab794fd1853decd9620edf8427"></span>create_engine() now uses genericized parameters; host/hostname,
 
454
db/dbname/database, password/passwd, etc. for all engine connections. makes<blockquote>
 
455
<div>engine URIs much more &#8220;universal&#8221;</div></blockquote>
 
456
<a class="changeset-link reference internal" href="#change-0ef266ab794fd1853decd9620edf8427">(link)</a><p></p>
 
457
</p>
 
458
</li>
 
459
<li><p id="change-0.1.4-1"><span class="target" id="change-ec2dc23024bd40e1ace566b16a735d09"></span>added support for SELECT statements embedded into a column clause, using the
 
460
flag &#8220;scalar=True&#8221;<a class="changeset-link reference internal" href="#change-ec2dc23024bd40e1ace566b16a735d09">(link)</a><p></p>
 
461
</p>
 
462
</li>
 
463
<li><p id="change-0.1.4-2"><span class="target" id="change-7b51c32cece61a2a7d06a4c224da9443"></span>another overhaul to EagerLoading when used in conjunction with mappers that
 
464
inherit; improvements to eager loads figuring out their aliased queries
 
465
correctly, also relations set up against a mapper with inherited mappers will
 
466
create joins against the table that is specific to the mapper itself (i.e. and
 
467
not any tables that are inherited/are further down the inheritance chain),
 
468
this can be overridden by using custom primary/secondary joins.<a class="changeset-link reference internal" href="#change-7b51c32cece61a2a7d06a4c224da9443">(link)</a><p></p>
 
469
</p>
 
470
</li>
 
471
<li><p id="change-0.1.4-3"><span class="target" id="change-8fc4b9aa1cf9744a7669d0be1df63c87"></span>added J.Ellis patch to mapper.py so that selectone() throws an exception
 
472
if query returns more than one object row, selectfirst() to not throw the
 
473
exception. also adds selectfirst_by (synonymous with get_by) and selectone_by<a class="changeset-link reference internal" href="#change-8fc4b9aa1cf9744a7669d0be1df63c87">(link)</a><p></p>
 
474
</p>
 
475
</li>
 
476
<li><p id="change-0.1.4-4"><span class="target" id="change-6ef2eeb2099404f773c18996c5252732"></span>added onupdate parameter to Column, will exec SQL/python upon an update
 
477
statement.Also adds &#8220;for_update=True&#8221; to all DefaultGenerator subclasses<a class="changeset-link reference internal" href="#change-6ef2eeb2099404f773c18996c5252732">(link)</a><p></p>
 
478
</p>
 
479
</li>
 
480
<li><p id="change-0.1.4-5"><span class="target" id="change-0f736b992aafe1dc76f1529c795c4289"></span>added support for Oracle table reflection contributed by Andrija Zaric;
 
481
still some bugs to work out regarding composite primary keys/dictionary selection<a class="changeset-link reference internal" href="#change-0f736b992aafe1dc76f1529c795c4289">(link)</a><p></p>
 
482
</p>
 
483
</li>
 
484
<li><p id="change-0.1.4-6"><span class="target" id="change-db02019010d352feae175b0ddc9ece30"></span>checked in an initial Firebird module, awaiting testing.<a class="changeset-link reference internal" href="#change-db02019010d352feae175b0ddc9ece30">(link)</a><p></p>
 
485
</p>
 
486
</li>
 
487
<li><p id="change-0.1.4-7"><span class="target" id="change-7d2152ee7c8c6d195f7a1cf43dda5448"></span>added sql.ClauseParameters dictionary object as the result for
 
488
compiled.get_params(), does late-typeprocessing of bind parameters so
 
489
that the original values are easier to access<a class="changeset-link reference internal" href="#change-7d2152ee7c8c6d195f7a1cf43dda5448">(link)</a><p></p>
 
490
</p>
 
491
</li>
 
492
<li><p id="change-0.1.4-8"><span class="target" id="change-d46502682e7dca9e36bd65c316e79420"></span>more docs for indexes, column defaults, connection pooling, engine construction<a class="changeset-link reference internal" href="#change-d46502682e7dca9e36bd65c316e79420">(link)</a><p></p>
 
493
</p>
 
494
</li>
 
495
<li><p id="change-0.1.4-9"><span class="target" id="change-885f2250c263e6d9bbd939e640ce6639"></span>overhaul to the construction of the types system. uses a simpler inheritance
 
496
pattern so that any of the generic types can be easily subclassed, with no need
 
497
for TypeDecorator.<a class="changeset-link reference internal" href="#change-885f2250c263e6d9bbd939e640ce6639">(link)</a><p></p>
 
498
</p>
 
499
</li>
 
500
<li><p id="change-0.1.4-10"><span class="target" id="change-b8964cd08bf4a630173df252e9bb1acd"></span>added &#8220;convert_unicode=False&#8221; parameter to SQLEngine, will cause all String
 
501
types to perform unicode encoding/decoding (makes Strings act like Unicodes)<a class="changeset-link reference internal" href="#change-b8964cd08bf4a630173df252e9bb1acd">(link)</a><p></p>
 
502
</p>
 
503
</li>
 
504
<li><p id="change-0.1.4-11"><span class="target" id="change-6fd5c8f4796179aa0b657cc3c9a877f8"></span>added &#8216;encoding=&#8221;utf8&#8221;&#8217; parameter to engine.  the given encoding will be
 
505
used for all encode/decode calls within Unicode types as well as Strings
 
506
when convert_unicode=True.<a class="changeset-link reference internal" href="#change-6fd5c8f4796179aa0b657cc3c9a877f8">(link)</a><p></p>
 
507
</p>
 
508
</li>
 
509
<li><p id="change-0.1.4-12"><span class="target" id="change-b7a870e7cbd43542f1e67acfcfd6e1bf"></span>improved support for mapping against UNIONs, added polymorph.py example
 
510
to illustrate multi-class mapping against a UNION<a class="changeset-link reference internal" href="#change-b7a870e7cbd43542f1e67acfcfd6e1bf">(link)</a><p></p>
 
511
</p>
 
512
</li>
 
513
<li><p id="change-0.1.4-13"><span class="target" id="change-9ed214af739377d4d1a07991af151ccb"></span>fix to SQLite LIMIT/OFFSET syntax<a class="changeset-link reference internal" href="#change-9ed214af739377d4d1a07991af151ccb">(link)</a><p></p>
 
514
</p>
 
515
</li>
 
516
<li><p id="change-0.1.4-14"><span class="target" id="change-456f1a13c73c2c11c84433cb277ee4dc"></span>fix to Oracle LIMIT syntax<a class="changeset-link reference internal" href="#change-456f1a13c73c2c11c84433cb277ee4dc">(link)</a><p></p>
 
517
</p>
 
518
</li>
 
519
<li><p id="change-0.1.4-15"><span class="target" id="change-b8d7baa9db640a9923d3325eb440d135"></span>added backref() function, allows backreferences to have keyword arguments
 
520
that will be passed to the backref.<a class="changeset-link reference internal" href="#change-b8d7baa9db640a9923d3325eb440d135">(link)</a><p></p>
 
521
</p>
 
522
</li>
 
523
<li><p id="change-0.1.4-16"><span class="target" id="change-7168d352c4956bf69f8626864e3193c5"></span>Sequences and ColumnDefault objects can do execute()/scalar() standalone<a class="changeset-link reference internal" href="#change-7168d352c4956bf69f8626864e3193c5">(link)</a><p></p>
 
524
</p>
 
525
</li>
 
526
<li><p id="change-0.1.4-17"><span class="target" id="change-6b05633188ef87464a8ddb4d1273715f"></span>SQL functions (i.e. func.foo()) can do execute()/scalar() standalone<a class="changeset-link reference internal" href="#change-6b05633188ef87464a8ddb4d1273715f">(link)</a><p></p>
 
527
</p>
 
528
</li>
 
529
<li><p id="change-0.1.4-18"><span class="target" id="change-0f45a37a74b083bfff321b728c4d1bf5"></span>fix to SQL functions so that the ANSI-standard functions, i.e. current_timestamp
 
530
etc., do not specify parenthesis.  all other functions do.<a class="changeset-link reference internal" href="#change-0f45a37a74b083bfff321b728c4d1bf5">(link)</a><p></p>
 
531
</p>
 
532
</li>
 
533
<li><p id="change-0.1.4-19"><span class="target" id="change-d00d8ba1f11adb154262526c7414e593"></span>added settattr_clean and append_clean to SmartProperty, which set
 
534
attributes without triggering a &#8220;dirty&#8221; event or any history. used as:
 
535
myclass.prop1.setattr_clean(myobject, &#8216;hi&#8217;)<a class="changeset-link reference internal" href="#change-d00d8ba1f11adb154262526c7414e593">(link)</a><p></p>
 
536
</p>
 
537
</li>
 
538
<li><p id="change-0.1.4-20"><span class="target" id="change-30d3737ba988bebaa33f655c7900bb01"></span>improved support to column defaults when used by mappers; mappers will pull
 
539
pre-executed defaults from statement&#8217;s executed bind parameters
 
540
(pre-conversion) to populate them into a saved object&#8217;s attributes; if any
 
541
PassiveDefaults have fired off, will instead post-fetch the row from the DB to
 
542
populate the object.<a class="changeset-link reference internal" href="#change-30d3737ba988bebaa33f655c7900bb01">(link)</a><p></p>
 
543
</p>
 
544
</li>
 
545
<li><p id="change-0.1.4-21"><span class="target" id="change-964498f680c779999121e64ad5cc56c1"></span>added &#8216;get_session().invalidate(<a href="#id7"><span class="problematic" id="id8">*</span></a>obj)&#8217; method to objectstore, instances will
 
546
refresh() themselves upon the next attribute access.<a class="changeset-link reference internal" href="#change-964498f680c779999121e64ad5cc56c1">(link)</a><p></p>
 
547
</p>
 
548
</li>
 
549
<li><p id="change-0.1.4-22"><span class="target" id="change-ef790669fa10bf7baaa122ee21865a04"></span>improvements to SQL func calls including an &#8220;engine&#8221; keyword argument so
 
550
they can be execute()d or scalar()ed standalone, also added func accessor to
 
551
SQLEngine<a class="changeset-link reference internal" href="#change-ef790669fa10bf7baaa122ee21865a04">(link)</a><p></p>
 
552
</p>
 
553
</li>
 
554
<li><p id="change-0.1.4-23"><span class="target" id="change-6516c2f2245e5e1b90117cd2b3a9a482"></span>fix to MySQL4 custom table engines, i.e. TYPE instead of ENGINE<a class="changeset-link reference internal" href="#change-6516c2f2245e5e1b90117cd2b3a9a482">(link)</a><p></p>
 
555
</p>
 
556
</li>
 
557
<li><p id="change-0.1.4-24"><span class="target" id="change-b6ed1a0198df68545ae484c874554bf5"></span>slightly enhanced logging, includes timestamps and a somewhat configurable
 
558
formatting system, in lieu of a full-blown logging system<a class="changeset-link reference internal" href="#change-b6ed1a0198df68545ae484c874554bf5">(link)</a><p></p>
 
559
</p>
 
560
</li>
 
561
<li><p id="change-0.1.4-25"><span class="target" id="change-5937e5795d6d62109125d68a9a2bca0d"></span>improvements to the ActiveMapper class from the TG gang, including
 
562
many-to-many relationships<a class="changeset-link reference internal" href="#change-5937e5795d6d62109125d68a9a2bca0d">(link)</a><p></p>
 
563
</p>
 
564
</li>
 
565
<li><p id="change-0.1.4-26"><span class="target" id="change-5d7bdbcddc8bf662974b56f494fe2cc8"></span>added Double and TinyInt support to mysql<a class="changeset-link reference internal" href="#change-5d7bdbcddc8bf662974b56f494fe2cc8">(link)</a><p></p>
 
566
</p>
 
567
</li>
 
568
</ul>
 
569
</div>
 
570
<div class="section" id="change-0.1.3">
 
571
<h2>0.1.3<a class="headerlink" href="#change-0.1.3" title="Permalink to this headline">¶</a></h2>
 
572
Released: Thu Mar 02 2006<ul class="simple">
 
573
<li><p id="change-0.1.3-0"><span class="target" id="change-1f5f4367f904484de584c3bb891e66da"></span>completed &#8220;post_update&#8221; feature, will add a second update statement before
 
574
inserts and after deletes in order to reconcile a relationship without any
 
575
dependencies being created; used when persisting two rows that are dependent
 
576
on each other<a class="changeset-link reference internal" href="#change-1f5f4367f904484de584c3bb891e66da">(link)</a><p></p>
 
577
</p>
 
578
</li>
 
579
<li><p id="change-0.1.3-1"><span class="target" id="change-0e1e1316e6f3a827735afefe31aac485"></span>completed mapper.using(session) function, localized per-object Session
 
580
functionality; objects can be declared and manipulated as local to any
 
581
user-defined Session<a class="changeset-link reference internal" href="#change-0e1e1316e6f3a827735afefe31aac485">(link)</a><p></p>
 
582
</p>
 
583
</li>
 
584
<li><p id="change-0.1.3-2"><span class="target" id="change-766fa5aa35e254d9b460f774da134307"></span>fix to Oracle &#8220;row_number over&#8221; clause with multiple tables<a class="changeset-link reference internal" href="#change-766fa5aa35e254d9b460f774da134307">(link)</a><p></p>
 
585
</p>
 
586
</li>
 
587
<li><p id="change-0.1.3-3"><span class="target" id="change-5a1a16a4b71e3d136d92292a14c57cfd"></span>mapper.get() was not selecting multiple-keyed objects if the mapper&#8217;s table was a join,
 
588
such as in an inheritance relationship, this is fixed.<a class="changeset-link reference internal" href="#change-5a1a16a4b71e3d136d92292a14c57cfd">(link)</a><p></p>
 
589
</p>
 
590
</li>
 
591
<li><p id="change-0.1.3-4"><span class="target" id="change-0017cfe2ab4cc37d9c78c82014884f4c"></span>overhaul to sql/schema packages so that the sql package can run all on its own,
 
592
producing selects, inserts, etc. without any engine dependencies.  builds upon
 
593
new TableClause/ColumnClause lexical objects.  Schema&#8217;s Table/Column objects
 
594
are the &#8220;physical&#8221; subclasses of them.  simplifies schema/sql relationship,
 
595
extensions (like proxyengine), and speeds overall performance by a large margin.
 
596
removes the entire getattr() behavior that plagued 0.1.1.<a class="changeset-link reference internal" href="#change-0017cfe2ab4cc37d9c78c82014884f4c">(link)</a><p></p>
 
597
</p>
 
598
</li>
 
599
<li><p id="change-0.1.3-5"><span class="target" id="change-77a4af6cff5ccb1dc76b81e3a2d1a1f8"></span>refactoring of how the mapper &#8220;synchronizes&#8221; data between two objects into a
 
600
separate module, works better with properties attached to a mapper that has an
 
601
additional inheritance relationship to one of the related tables, also the same
 
602
methodology used to synchronize parent/child objects now used by mapper to
 
603
synchronize between inherited and inheriting mappers.<a class="changeset-link reference internal" href="#change-77a4af6cff5ccb1dc76b81e3a2d1a1f8">(link)</a><p></p>
 
604
</p>
 
605
</li>
 
606
<li><p id="change-0.1.3-6"><span class="target" id="change-25a1b5bf971aeb34c95a82f6515686a1"></span>made objectstore &#8220;check for out-of-identitymap&#8221; more aggressive, will perform the
 
607
check when object attributes are modified or the object is deleted<a class="changeset-link reference internal" href="#change-25a1b5bf971aeb34c95a82f6515686a1">(link)</a><p></p>
 
608
</p>
 
609
</li>
 
610
<li><p id="change-0.1.3-7"><span class="target" id="change-e0e0f804057928ca3c17339825043f53"></span>Index object fully implemented, can be constructed standalone, or via
 
611
&#8220;index&#8221; and &#8220;unique&#8221; arguments on Columns.<a class="changeset-link reference internal" href="#change-e0e0f804057928ca3c17339825043f53">(link)</a><p></p>
 
612
</p>
 
613
</li>
 
614
<li><p id="change-0.1.3-8"><span class="target" id="change-52570199946b60064a46eee53050539a"></span>added &#8220;convert_unicode&#8221; flag to SQLEngine, will treat all String/CHAR types
 
615
as Unicode types, with raw-byte/utf-8 translation on the bind parameter and
 
616
result set side.<a class="changeset-link reference internal" href="#change-52570199946b60064a46eee53050539a">(link)</a><p></p>
 
617
</p>
 
618
</li>
 
619
<li><p id="change-0.1.3-9"><span class="target" id="change-2ca432b76e40ac51ae3326a7cecaaa68"></span>postgres maintains a list of ANSI functions that must have no parenthesis so
 
620
function calls with no arguments work consistently<a class="changeset-link reference internal" href="#change-2ca432b76e40ac51ae3326a7cecaaa68">(link)</a><p></p>
 
621
</p>
 
622
</li>
 
623
<li><p id="change-0.1.3-10"><span class="target" id="change-02f8ebdd1e633c6e8c28681a25a6f754"></span>tables can be created with no engine specified.  this will default their engine
 
624
to a module-scoped &#8220;default engine&#8221; which is a ProxyEngine.  this engine can
 
625
be connected via the function &#8220;global_connect&#8221;.<a class="changeset-link reference internal" href="#change-02f8ebdd1e633c6e8c28681a25a6f754">(link)</a><p></p>
 
626
</p>
 
627
</li>
 
628
<li><p id="change-0.1.3-11"><span class="target" id="change-9f9ea856fbdf0f5dfe021df934a3a1df"></span>added &#8220;refresh(<a href="#id9"><span class="problematic" id="id10">*</span></a>obj)&#8221; method to objectstore / Session to reload the attributes of
 
629
any set of objects from the database unconditionally<a class="changeset-link reference internal" href="#change-9f9ea856fbdf0f5dfe021df934a3a1df">(link)</a><p></p>
 
630
</p>
 
631
</li>
 
632
</ul>
 
633
</div>
 
634
<div class="section" id="change-0.1.2">
 
635
<h2>0.1.2<a class="headerlink" href="#change-0.1.2" title="Permalink to this headline">¶</a></h2>
 
636
Released: Fri Feb 24 2006<ul class="simple">
 
637
<li><p id="change-0.1.2-0"><span class="target" id="change-de1fc1982f3062522c70b3e35238622d"></span>fixed a recursive call in schema that was somehow running 994 times then returning
 
638
normally.  broke nothing, slowed down everything.  thanks to jpellerin for finding this.<a class="changeset-link reference internal" href="#change-de1fc1982f3062522c70b3e35238622d">(link)</a><p></p>
 
639
</p>
 
640
</li>
 
641
</ul>
 
642
</div>
 
643
<div class="section" id="change-0.1.1">
 
644
<h2>0.1.1<a class="headerlink" href="#change-0.1.1" title="Permalink to this headline">¶</a></h2>
 
645
Released: Thu Feb 23 2006<ul class="simple">
 
646
<li><p id="change-0.1.1-0"><span class="target" id="change-e16c39be323fea2f73db352513a5940b"></span>small fix to Function class so that expressions with a func.foo() use the type of the
 
647
Function object (i.e. the left side) as the type of the boolean expression, not the
 
648
other side which is more of a moving target (changeset 1020).<a class="changeset-link reference internal" href="#change-e16c39be323fea2f73db352513a5940b">(link)</a><p></p>
 
649
</p>
 
650
</li>
 
651
<li><p id="change-0.1.1-1"><span class="target" id="change-e70d118b07b49de55d82c23d91e9081b"></span>creating self-referring mappers with backrefs slightly easier (but still not that easy -
 
652
changeset 1019)<a class="changeset-link reference internal" href="#change-e70d118b07b49de55d82c23d91e9081b">(link)</a><p></p>
 
653
</p>
 
654
</li>
 
655
<li><p id="change-0.1.1-2"><span class="target" id="change-5eb55c9b7fb9b46fe9743042c5c197b8"></span>fixes to one-to-one mappings (changeset 1015)<a class="changeset-link reference internal" href="#change-5eb55c9b7fb9b46fe9743042c5c197b8">(link)</a><p></p>
 
656
</p>
 
657
</li>
 
658
<li><p id="change-0.1.1-3"><span class="target" id="change-9d8b445291ec495ae301791eabf26ce9"></span>psycopg1 date/time issue with None fixed (changeset 1005)<a class="changeset-link reference internal" href="#change-9d8b445291ec495ae301791eabf26ce9">(link)</a><p></p>
 
659
</p>
 
660
</li>
 
661
<li><p id="change-0.1.1-4"><span class="target" id="change-5d0280d06f52e25177cfdb38d7c05d87"></span>two issues related to postgres, which doesnt want to give you the &#8220;lastrowid&#8221;
 
662
since oids are deprecated:<blockquote>
 
663
<div><ul>
 
664
<li>postgres database-side defaults that are on primary key cols <em>do</em> execute</li>
 
665
</ul>
 
666
</div></blockquote>
 
667
<p>explicitly beforehand, even though thats not the idea of a PassiveDefault.  this is
 
668
because sequences on columns get reflected as PassiveDefaults, but need to be explicitly
 
669
executed on a primary key col so we know what we just inserted.</p>
 
670
<blockquote>
 
671
<div><ul>
 
672
<li>if you did add a row that has a bunch of database-side defaults on it,</li>
 
673
</ul>
 
674
</div></blockquote>
 
675
<p>and the PassiveDefault thing was working the old way, i.e. they just execute on
 
676
the DB side, the &#8220;cant get the row back without an OID&#8221; exception that occurred
 
677
also will not happen unless someone (usually the ORM) explicitly asks for it.</p>
 
678
<a class="changeset-link reference internal" href="#change-5d0280d06f52e25177cfdb38d7c05d87">(link)</a><p></p>
 
679
</p>
 
680
</li>
 
681
<li><p id="change-0.1.1-5"><span class="target" id="change-2c3fc20743a99145b4a0ecf183bce3b5"></span>fixed a glitch with engine.execute_compiled where it was making a second
 
682
ResultProxy that just got thrown away.<a class="changeset-link reference internal" href="#change-2c3fc20743a99145b4a0ecf183bce3b5">(link)</a><p></p>
 
683
</p>
 
684
</li>
 
685
<li><p id="change-0.1.1-6"><span class="target" id="change-c4c2e167af71097505892fe6c0f9ea0c"></span>began to implement newer logic in object properities.  you can now say
 
686
myclass.attr.property, which will give you the PropertyLoader corresponding to that
 
687
attribute, i.e. myclass.mapper.props[&#8216;attr&#8217;]<a class="changeset-link reference internal" href="#change-c4c2e167af71097505892fe6c0f9ea0c">(link)</a><p></p>
 
688
</p>
 
689
</li>
 
690
<li><p id="change-0.1.1-7"><span class="target" id="change-8b0556e1a808353012875095c53a252b"></span>eager loading has been internally overhauled to use aliases at all times.  more
 
691
complicated chains of eager loads can now be created without any need for explicit
 
692
&#8220;use aliases&#8221;-type instructions.  EagerLoader code is also much simpler now.<a class="changeset-link reference internal" href="#change-8b0556e1a808353012875095c53a252b">(link)</a><p></p>
 
693
</p>
 
694
</li>
 
695
<li><p id="change-0.1.1-8"><span class="target" id="change-bb14c5b9872156d48ab505a3a77430f8"></span>a new somewhat experimental flag &#8220;use_update&#8221; added to relations, indicates that
 
696
this relationship should be handled by a second UPDATE statement, either after a
 
697
primary INSERT or before a primary DELETE.  handles circular row dependencies.<a class="changeset-link reference internal" href="#change-bb14c5b9872156d48ab505a3a77430f8">(link)</a><p></p>
 
698
</p>
 
699
</li>
 
700
<li><p id="change-0.1.1-9"><span class="target" id="change-45952d04eaa88500b66049d3f8dc7db2"></span>added exceptions module, all raised exceptions (except for some
 
701
KeyError/AttributeError exceptions) descend from these classes.<a class="changeset-link reference internal" href="#change-45952d04eaa88500b66049d3f8dc7db2">(link)</a><p></p>
 
702
</p>
 
703
</li>
 
704
<li><p id="change-0.1.1-10"><span class="target" id="change-a5536a9bfa01004daf66ff7818a21370"></span>fix to date types with MySQL, returned timedelta converted to datetime.time<a class="changeset-link reference internal" href="#change-a5536a9bfa01004daf66ff7818a21370">(link)</a><p></p>
 
705
</p>
 
706
</li>
 
707
<li><p id="change-0.1.1-11"><span class="target" id="change-3bf53f3d367aba55d5ec4bc69c85692b"></span>two-phase objectstore.commit operations (i.e. begin/commit) now return a
 
708
transactional object (SessionTrans), to more clearly indicate transaction boundaries.<a class="changeset-link reference internal" href="#change-3bf53f3d367aba55d5ec4bc69c85692b">(link)</a><p></p>
 
709
</p>
 
710
</li>
 
711
<li><p id="change-0.1.1-12"><span class="target" id="change-b54bcb6dbe46538531b8e1d16ddb6123"></span>Index object with create/drop support added to schema<a class="changeset-link reference internal" href="#change-b54bcb6dbe46538531b8e1d16ddb6123">(link)</a><p></p>
 
712
</p>
 
713
</li>
 
714
<li><p id="change-0.1.1-13"><span class="target" id="change-3d429f8d0ca014abee1ff15fb990d3ef"></span>fix to postgres, where it will explicitly pre-execute a PassiveDefault on a table
 
715
if it is a primary key column, pursuant to the ongoing &#8220;we cant get inserted rows
 
716
back from postgres&#8221; issue<a class="changeset-link reference internal" href="#change-3d429f8d0ca014abee1ff15fb990d3ef">(link)</a><p></p>
 
717
</p>
 
718
</li>
 
719
<li><p id="change-0.1.1-14"><span class="target" id="change-b4f51eecebde449095403049763c55a9"></span>change to information_schema query that gets back postgres table defs, now
 
720
uses explicit JOIN keyword, since one user had faster performance with 8.1<a class="changeset-link reference internal" href="#change-b4f51eecebde449095403049763c55a9">(link)</a><p></p>
 
721
</p>
 
722
</li>
 
723
<li><p id="change-0.1.1-15"><span class="target" id="change-48ba3c876c69946297ad8dd5406e9240"></span>fix to engine.process_defaults so it works correctly with a table that has
 
724
different column name/column keys (changset 982)<a class="changeset-link reference internal" href="#change-48ba3c876c69946297ad8dd5406e9240">(link)</a><p></p>
 
725
</p>
 
726
</li>
 
727
<li><p id="change-0.1.1-16"><span class="target" id="change-6a46cd8778aaefd256df83b635921814"></span>a column can only be attached to one table - this is now asserted<a class="changeset-link reference internal" href="#change-6a46cd8778aaefd256df83b635921814">(link)</a><p></p>
 
728
</p>
 
729
</li>
 
730
<li><p id="change-0.1.1-17"><span class="target" id="change-8d68036be554ddac542f03734315f82f"></span>postgres time types descend from Time type<a class="changeset-link reference internal" href="#change-8d68036be554ddac542f03734315f82f">(link)</a><p></p>
 
731
</p>
 
732
</li>
 
733
<li><p id="change-0.1.1-18"><span class="target" id="change-8eeb4551410be5ee01d94698e94ca5c5"></span>fix to alltests so that it runs types test (now named testtypes)<a class="changeset-link reference internal" href="#change-8eeb4551410be5ee01d94698e94ca5c5">(link)</a><p></p>
 
734
</p>
 
735
</li>
 
736
<li><p id="change-0.1.1-19"><span class="target" id="change-8e34508d624949e6fd5f920ae0e68a91"></span>fix to Join object so that it correctly exports its foreign keys (cs 973)<a class="changeset-link reference internal" href="#change-8e34508d624949e6fd5f920ae0e68a91">(link)</a><p></p>
 
737
</p>
 
738
</li>
 
739
<li><p id="change-0.1.1-20"><span class="target" id="change-fd3d78d00d70c3e12464e5610e3dcb63"></span>creating relationships against mappers that use inheritance fixed (cs 973)<a class="changeset-link reference internal" href="#change-fd3d78d00d70c3e12464e5610e3dcb63">(link)</a><p></p>
 
740
</p>
 
741
</li>
 
742
</ul>
 
743
</div>
 
744
</div>
 
745
 
 
746
    </div>
 
747
 
 
748
</div>
 
749
 
 
750
<div id="docs-bottom-navigation" class="docs-navigation-links">
 
751
        Previous:
 
752
        <a href="changelog_02.html" title="previous chapter">0.2 Changelog</a>
 
753
        Next:
 
754
        <a href="migration_07.html" title="next chapter">What&#8217;s New in SQLAlchemy 0.7?</a>
 
755
 
 
756
    <div id="docs-copyright">
 
757
        &copy; <a href="../copyright.html">Copyright</a> 2007-2013, the SQLAlchemy authors and contributors.
 
758
        Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
 
759
    </div>
 
760
</div>
 
761
 
 
762
</div>
 
763
 
 
764
        
 
765
    </body>
 
766
</html>
 
767
 
 
768