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

« back to all changes in this revision

Viewing changes to doc/_sources/changelog/changelog_01.txt

  • 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
 
 
2
==============
 
3
0.1 Changelog
 
4
==============
 
5
 
 
6
                
 
7
.. changelog::
 
8
    :version: 0.1.7
 
9
    :released: Fri May 05 2006
 
10
 
 
11
    .. change::
 
12
        :tags: 
 
13
        :tickets: 
 
14
 
 
15
      some fixes to topological sort algorithm
 
16
 
 
17
    .. change::
 
18
        :tags: 
 
19
        :tickets: 
 
20
 
 
21
      added DISTINCT ON support to Postgres (just supply distinct=[col1,col2..])
 
22
 
 
23
    .. change::
 
24
        :tags: 
 
25
        :tickets: 
 
26
 
 
27
      added __mod__ (% operator) to sql expressions
 
28
 
 
29
    .. change::
 
30
        :tags: 
 
31
        :tickets: 
 
32
 
 
33
      "order_by" mapper property inherited from inheriting mapper
 
34
 
 
35
    .. change::
 
36
        :tags: 
 
37
        :tickets: 
 
38
 
 
39
      fix to column type used when mapper UPDATES/DELETEs
 
40
 
 
41
    .. change::
 
42
        :tags: 
 
43
        :tickets: 
 
44
 
 
45
      with convert_unicode=True, reflection was failing, has been fixed
 
46
 
 
47
    .. change::
 
48
        :tags: 
 
49
        :tickets: 
 
50
 
 
51
      types types types!  still werent working....have to use TypeDecorator again :(
 
52
 
 
53
    .. change::
 
54
        :tags: 
 
55
        :tickets: 
 
56
 
 
57
      mysql binary type converts array output to buffer, fixes PickleType
 
58
 
 
59
    .. change::
 
60
        :tags: 
 
61
        :tickets: 
 
62
 
 
63
      fixed the attributes.py memory leak once and for all
 
64
 
 
65
    .. change::
 
66
        :tags: 
 
67
        :tickets: 
 
68
 
 
69
      unittests are qualified based on the databases that support each one
 
70
 
 
71
    .. change::
 
72
        :tags: 
 
73
        :tickets: 
 
74
 
 
75
      fixed bug where column defaults would clobber VALUES clause of insert objects
 
76
 
 
77
    .. change::
 
78
        :tags: 
 
79
        :tickets: 
 
80
 
 
81
      fixed bug where table def w/ schema name would force engine connection
 
82
 
 
83
    .. change::
 
84
        :tags: 
 
85
        :tickets: 
 
86
 
 
87
      fix for parenthesis to work correctly with subqueries in INSERT/UPDATE
 
88
 
 
89
    .. change::
 
90
        :tags: 
 
91
        :tickets: 
 
92
 
 
93
      HistoryArraySet gets extend() method
 
94
 
 
95
    .. change::
 
96
        :tags: 
 
97
        :tickets: 
 
98
 
 
99
      fixed lazyload support for other comparison operators besides =
 
100
 
 
101
    .. change::
 
102
        :tags: 
 
103
        :tickets: 
 
104
 
 
105
      lazyload fix where two comparisons in the join condition point to the
 
106
      samem column
 
107
 
 
108
    .. change::
 
109
        :tags: 
 
110
        :tickets: 
 
111
 
 
112
      added "construct_new" flag to mapper, will use __new__ to create instances
 
113
      instead of __init__ (standard in 0.2)
 
114
 
 
115
    .. change::
 
116
        :tags: 
 
117
        :tickets: 
 
118
 
 
119
      added selectresults.py to SVN, missed it last time
 
120
 
 
121
    .. change::
 
122
        :tags: 
 
123
        :tickets: 
 
124
 
 
125
      tweak to allow a many-to-many relationship from a table to itself via
 
126
      an association table
 
127
 
 
128
    .. change::
 
129
        :tags: 
 
130
        :tickets: 
 
131
 
 
132
      small fix to "translate_row" function used by polymorphic example
 
133
 
 
134
    .. change::
 
135
        :tags: 
 
136
        :tickets: 
 
137
 
 
138
      create_engine uses cgi.parse_qsl to read query string (out the window in 0.2)
 
139
 
 
140
    .. change::
 
141
        :tags: 
 
142
        :tickets: 
 
143
 
 
144
      tweaks to CAST operator
 
145
 
 
146
    .. change::
 
147
        :tags: 
 
148
        :tickets: 
 
149
 
 
150
      fixed function names LOCAL_TIME/LOCAL_TIMESTAMP -> LOCALTIME/LOCALTIMESTAMP
 
151
 
 
152
    .. change::
 
153
        :tags: 
 
154
        :tickets: 
 
155
 
 
156
      fixed order of ORDER BY/HAVING in compile
 
157
 
 
158
.. changelog::
 
159
    :version: 0.1.6
 
160
    :released: Wed Apr 12 2006
 
161
 
 
162
    .. change::
 
163
        :tags: 
 
164
        :tickets: 
 
165
 
 
166
      support for MS-SQL added courtesy Rick Morrison, Runar Petursson
 
167
 
 
168
    .. change::
 
169
        :tags: 
 
170
        :tickets: 
 
171
 
 
172
      the latest SQLSoup from J. Ellis
 
173
 
 
174
    .. change::
 
175
        :tags: 
 
176
        :tickets: 
 
177
 
 
178
      ActiveMapper has preliminary support for inheritance (Jeff Watkins)
 
179
 
 
180
    .. change::
 
181
        :tags: 
 
182
        :tickets: 
 
183
 
 
184
      added a "mods" system which allows pluggable modules that modify/augment
 
185
      core functionality, using the function "install_mods(*modnames)".
 
186
 
 
187
    .. change::
 
188
        :tags: 
 
189
        :tickets: 
 
190
 
 
191
      added the first "mod", SelectResults, which modifies mapper selects to
 
192
      return generators that turn ranges into LIMIT/OFFSET queries
 
193
      (Jonas Borgstr?
 
194
 
 
195
    .. change::
 
196
        :tags: 
 
197
        :tickets: 
 
198
 
 
199
      factored out querying capabilities of Mapper into a separate Query object
 
200
      which is Session-centric.  this improves the performance of mapper.using(session)
 
201
      and makes other things possible.
 
202
 
 
203
    .. change::
 
204
        :tags: 
 
205
        :tickets: 
 
206
 
 
207
      objectstore/Session refactored, the official way to save objects is now
 
208
      via the flush() method.  The begin/commit functionality of Session is factored
 
209
      into LegacySession which is still established as the default behavior, until
 
210
      the 0.2 series.
 
211
 
 
212
    .. change::
 
213
        :tags: 
 
214
        :tickets: 
 
215
 
 
216
      types system is bound to an engine at query compile time, not schema
 
217
      construction time.  this simplifies the types system as well as the ProxyEngine.
 
218
 
 
219
    .. change::
 
220
        :tags: 
 
221
        :tickets: 
 
222
 
 
223
      added 'version_id' keyword argument to mapper. this keyword should reference a
 
224
      Column object with type Integer, preferably non-nullable, which will be used on
 
225
      the mapped table to track version numbers. this number is incremented on each
 
226
      save operation and is specifed in the UPDATE/DELETE conditions so that it
 
227
      factors into the returned row count, which results in a ConcurrencyError if the
 
228
      value received is not the expected count.
 
229
 
 
230
    .. change::
 
231
        :tags: 
 
232
        :tickets: 
 
233
 
 
234
      added 'entity_name' keyword argument to mapper. a mapper is now associated
 
235
      with a class via the class object as well as an optional entity_name parameter,
 
236
      which is a string defaulting to None. any number of primary mappers can be
 
237
      created for a class, qualified by the entity name. instances of those classes
 
238
      will issue all of their load and save operations through their
 
239
      entity_name-qualified mapper, and maintain separate a identity in the identity
 
240
      map for an otherwise equilvalent object.
 
241
 
 
242
    .. change::
 
243
        :tags: 
 
244
        :tickets: 
 
245
 
 
246
      overhaul to the attributes system. code has been clarified, and also fixed to
 
247
      support proper polymorphic behavior on object attributes.
 
248
 
 
249
    .. change::
 
250
        :tags: 
 
251
        :tickets: 
 
252
 
 
253
      added "for_update" flag to Select objects
 
254
 
 
255
    .. change::
 
256
        :tags: 
 
257
        :tickets: 
 
258
 
 
259
      some fixes for backrefs
 
260
 
 
261
    .. change::
 
262
        :tags: 
 
263
        :tickets: 
 
264
 
 
265
      fix for postgres1 DateTime type
 
266
 
 
267
    .. change::
 
268
        :tags: 
 
269
        :tickets: 
 
270
 
 
271
      documentation pages mostly switched over to Markdown syntax
 
272
 
 
273
.. changelog::
 
274
    :version: 0.1.5
 
275
    :released: Mon Mar 27 2006
 
276
 
 
277
    .. change::
 
278
        :tags: 
 
279
        :tickets: 
 
280
 
 
281
      added SQLSession concept to SQLEngine. this object keeps track of retrieving a
 
282
      connection from the connection pool as well as an in-progress transaction.
 
283
      methods push_session() and pop_session() added to SQLEngine which push/pop a new
 
284
      SQLSession onto the engine, allowing operation upon a second connection "nested"
 
285
      within the previous one, allowing nested transactions. Other tricks are sure to
 
286
      come later regarding SQLSession.
 
287
 
 
288
    .. change::
 
289
        :tags: 
 
290
        :tickets: 
 
291
 
 
292
      added nest_on argument to objectstore.Session. This is a single SQLEngine or
 
293
      list of engines for which push_session()/pop_session() will be called each time
 
294
      this Session becomes the active session (via objectstore.push_session() or
 
295
      equivalent). This allows a unit of work Session to take advantage of the nested
 
296
      transaction feature without explicitly calling push_session/pop_session on the
 
297
      engine.
 
298
 
 
299
    .. change::
 
300
        :tags: 
 
301
        :tickets: 
 
302
 
 
303
      factored apart objectstore/unitofwork to separate "Session scoping" from
 
304
      "uow commit heavy lifting"
 
305
 
 
306
    .. change::
 
307
        :tags: 
 
308
        :tickets: 
 
309
 
 
310
      added populate_instance() method to MapperExtension. allows an extension to
 
311
      modify the population of object attributes. this method can call the
 
312
      populate_instance() method on another mapper to proxy the attribute population
 
313
      from one mapper to another; some row translation logic is also built in to help
 
314
      with this.
 
315
 
 
316
    .. change::
 
317
        :tags: 
 
318
        :tickets: 
 
319
 
 
320
      fixed Oracle8-compatibility "use_ansi" flag which converts JOINs to
 
321
      comparisons with the = and (+) operators, passes basic unittests
 
322
 
 
323
    .. change::
 
324
        :tags: 
 
325
        :tickets: 
 
326
 
 
327
      tweaks to Oracle LIMIT/OFFSET support
 
328
 
 
329
    .. change::
 
330
        :tags: 
 
331
        :tickets: 
 
332
 
 
333
      Oracle reflection uses ALL_** views instead of USER_** to get larger
 
334
      list of stuff to reflect from
 
335
 
 
336
    .. change::
 
337
        :tags: 
 
338
        :tickets: 105
 
339
 
 
340
      fixes to Oracle foreign key reflection
 
341
 
 
342
    .. change::
 
343
        :tags: 
 
344
        :tickets: 
 
345
 
 
346
      objectstore.commit(obj1, obj2,...) adds an extra step to seek out private
 
347
      relations on properties and delete child objects, even though its not a global
 
348
      commit
 
349
 
 
350
    .. change::
 
351
        :tags: 
 
352
        :tickets: 
 
353
 
 
354
      lots and lots of fixes to mappers which use inheritance, strengthened the
 
355
      concept of relations on a mapper being made towards the "local" table for that
 
356
      mapper, not the tables it inherits.  allows more complex compositional patterns
 
357
      to work with lazy/eager loading.
 
358
 
 
359
    .. change::
 
360
        :tags: 
 
361
        :tickets: 
 
362
 
 
363
      added support for mappers to inherit from others based on the same table,
 
364
      just specify the same table as that of both parent/child mapper.
 
365
 
 
366
    .. change::
 
367
        :tags: 
 
368
        :tickets: 
 
369
 
 
370
      some minor speed improvements to the attributes system with regards to
 
371
      instantiating and populating new objects.
 
372
 
 
373
    .. change::
 
374
        :tags: 
 
375
        :tickets: 
 
376
 
 
377
      fixed MySQL binary unit test
 
378
 
 
379
    .. change::
 
380
        :tags: 
 
381
        :tickets: 
 
382
 
 
383
      INSERTs can receive clause elements as VALUES arguments, not just literal
 
384
      values
 
385
 
 
386
    .. change::
 
387
        :tags: 
 
388
        :tickets: 
 
389
 
 
390
      support for calling multi-tokened functions, i.e. schema.mypkg.func()
 
391
 
 
392
    .. change::
 
393
        :tags: 
 
394
        :tickets: 
 
395
 
 
396
      added J. Ellis' SQLSoup module to extensions package
 
397
 
 
398
    .. change::
 
399
        :tags: 
 
400
        :tickets: 
 
401
 
 
402
      added "polymorphic" examples illustrating methods to load multiple object types
 
403
      from one mapper, the second of which uses the new populate_instance() method.
 
404
      small improvements to mapper, UNION construct to help the examples along
 
405
 
 
406
    .. change::
 
407
        :tags: 
 
408
        :tickets: 
 
409
 
 
410
      improvements/fixes to session.refresh()/session.expire() (which may have
 
411
      been called "invalidate" earlier..)
 
412
 
 
413
    .. change::
 
414
        :tags: 
 
415
        :tickets: 
 
416
 
 
417
      added session.expunge() which totally removes an object from the current
 
418
      session
 
419
 
 
420
    .. change::
 
421
        :tags: 
 
422
        :tickets: 
 
423
 
 
424
      added *args, **kwargs pass-thru to engine.transaction(func) allowing easier
 
425
      creation of transactionalizing decorator functions
 
426
 
 
427
    .. change::
 
428
        :tags: 
 
429
        :tickets: 
 
430
 
 
431
      added iterator interface to ResultProxy:  "for row in result:..."
 
432
 
 
433
    .. change::
 
434
        :tags: 
 
435
        :tickets: 
 
436
 
 
437
      added assertion to tx = session.begin(); tx.rollback(); tx.begin(), i.e. cant
 
438
      use it after a rollback()
 
439
 
 
440
    .. change::
 
441
        :tags: 
 
442
        :tickets: 
 
443
 
 
444
      added date conversion on bind parameter fix to SQLite enabling dates to
 
445
      work with pysqlite1
 
446
 
 
447
    .. change::
 
448
        :tags: 
 
449
        :tickets: 116
 
450
 
 
451
      improvements to subqueries to more intelligently construct their FROM
 
452
      clauses
 
453
 
 
454
    .. change::
 
455
        :tags: 
 
456
        :tickets: 
 
457
 
 
458
      added PickleType to types.
 
459
 
 
460
    .. change::
 
461
        :tags: 
 
462
        :tickets: 
 
463
 
 
464
      fixed two bugs with column labels with regards to bind parameters: bind param
 
465
      keynames they are now generated from a column "label" in all relevant cases to
 
466
      take advantage of excess-name-length rules, and checks for a peculiar collision
 
467
      against a column named the same as "tablename_colname" added
 
468
 
 
469
    .. change::
 
470
        :tags: 
 
471
        :tickets: 
 
472
 
 
473
      major overhaul to unit of work documentation, other documentation sections.
 
474
 
 
475
    .. change::
 
476
        :tags: 
 
477
        :tickets: 
 
478
 
 
479
      fixed attributes bug where if an object is committed, its lazy-loaded list got
 
480
      blown away if it hadnt been loaded
 
481
 
 
482
    .. change::
 
483
        :tags: 
 
484
        :tickets: 
 
485
 
 
486
      added unique_connection() method to engine, connection pool to return a
 
487
      connection that is not part of the thread-local context or any current
 
488
      transaction
 
489
 
 
490
    .. change::
 
491
        :tags: 
 
492
        :tickets: 
 
493
 
 
494
      added invalidate() function to pooled connection.  will remove the connection
 
495
      from the pool.  still need work for engines to auto-reconnect to a stale DB
 
496
      though.
 
497
 
 
498
    .. change::
 
499
        :tags: 
 
500
        :tickets: 
 
501
 
 
502
      added distinct() function to column elements so you can do
 
503
      func.count(mycol.distinct())
 
504
 
 
505
    .. change::
 
506
        :tags: 
 
507
        :tickets: 
 
508
 
 
509
      added "always_refresh" flag to Mapper, creates a mapper that will always
 
510
      refresh the attributes of objects it gets/selects from the DB, overwriting any
 
511
      changes made.
 
512
 
 
513
.. changelog::
 
514
    :version: 0.1.4
 
515
    :released: Mon Mar 13 2006
 
516
 
 
517
    .. change::
 
518
        :tags: 
 
519
        :tickets: 
 
520
 
 
521
      create_engine() now uses genericized parameters; host/hostname,
 
522
      db/dbname/database, password/passwd, etc. for all engine connections. makes
 
523
       engine URIs much more "universal"
 
524
 
 
525
    .. change::
 
526
        :tags: 
 
527
        :tickets: 
 
528
 
 
529
      added support for SELECT statements embedded into a column clause, using the
 
530
      flag "scalar=True"
 
531
 
 
532
    .. change::
 
533
        :tags: 
 
534
        :tickets: 
 
535
 
 
536
      another overhaul to EagerLoading when used in conjunction with mappers that
 
537
      inherit; improvements to eager loads figuring out their aliased queries
 
538
      correctly, also relations set up against a mapper with inherited mappers will
 
539
      create joins against the table that is specific to the mapper itself (i.e. and
 
540
      not any tables that are inherited/are further down the inheritance chain),
 
541
      this can be overridden by using custom primary/secondary joins.
 
542
 
 
543
    .. change::
 
544
        :tags: 
 
545
        :tickets: 
 
546
 
 
547
      added J.Ellis patch to mapper.py so that selectone() throws an exception
 
548
      if query returns more than one object row, selectfirst() to not throw the
 
549
      exception. also adds selectfirst_by (synonymous with get_by) and selectone_by
 
550
 
 
551
    .. change::
 
552
        :tags: 
 
553
        :tickets: 
 
554
 
 
555
      added onupdate parameter to Column, will exec SQL/python upon an update
 
556
      statement.Also adds "for_update=True" to all DefaultGenerator subclasses
 
557
 
 
558
    .. change::
 
559
        :tags: 
 
560
        :tickets: 
 
561
 
 
562
      added support for Oracle table reflection contributed by Andrija Zaric;
 
563
      still some bugs to work out regarding composite primary keys/dictionary selection
 
564
 
 
565
    .. change::
 
566
        :tags: 
 
567
        :tickets: 
 
568
 
 
569
      checked in an initial Firebird module, awaiting testing.
 
570
 
 
571
    .. change::
 
572
        :tags: 
 
573
        :tickets: 
 
574
 
 
575
      added sql.ClauseParameters dictionary object as the result for
 
576
      compiled.get_params(), does late-typeprocessing of bind parameters so
 
577
      that the original values are easier to access
 
578
 
 
579
    .. change::
 
580
        :tags: 
 
581
        :tickets: 
 
582
 
 
583
      more docs for indexes, column defaults, connection pooling, engine construction
 
584
 
 
585
    .. change::
 
586
        :tags: 
 
587
        :tickets: 
 
588
 
 
589
      overhaul to the construction of the types system. uses a simpler inheritance
 
590
      pattern so that any of the generic types can be easily subclassed, with no need
 
591
      for TypeDecorator.
 
592
 
 
593
    .. change::
 
594
        :tags: 
 
595
        :tickets: 
 
596
 
 
597
      added "convert_unicode=False" parameter to SQLEngine, will cause all String
 
598
      types to perform unicode encoding/decoding (makes Strings act like Unicodes)
 
599
 
 
600
    .. change::
 
601
        :tags: 
 
602
        :tickets: 
 
603
 
 
604
      added 'encoding="utf8"' parameter to engine.  the given encoding will be
 
605
      used for all encode/decode calls within Unicode types as well as Strings
 
606
      when convert_unicode=True.
 
607
 
 
608
    .. change::
 
609
        :tags: 
 
610
        :tickets: 
 
611
 
 
612
      improved support for mapping against UNIONs, added polymorph.py example
 
613
      to illustrate multi-class mapping against a UNION
 
614
 
 
615
    .. change::
 
616
        :tags: 
 
617
        :tickets: 
 
618
 
 
619
      fix to SQLite LIMIT/OFFSET syntax
 
620
 
 
621
    .. change::
 
622
        :tags: 
 
623
        :tickets: 
 
624
 
 
625
      fix to Oracle LIMIT syntax
 
626
 
 
627
    .. change::
 
628
        :tags: 
 
629
        :tickets: 
 
630
 
 
631
      added backref() function, allows backreferences to have keyword arguments
 
632
      that will be passed to the backref.
 
633
 
 
634
    .. change::
 
635
        :tags: 
 
636
        :tickets: 
 
637
 
 
638
      Sequences and ColumnDefault objects can do execute()/scalar() standalone
 
639
 
 
640
    .. change::
 
641
        :tags: 
 
642
        :tickets: 
 
643
 
 
644
      SQL functions (i.e. func.foo()) can do execute()/scalar() standalone
 
645
 
 
646
    .. change::
 
647
        :tags: 
 
648
        :tickets: 
 
649
 
 
650
      fix to SQL functions so that the ANSI-standard functions, i.e. current_timestamp
 
651
      etc., do not specify parenthesis.  all other functions do.
 
652
 
 
653
    .. change::
 
654
        :tags: 
 
655
        :tickets: 
 
656
 
 
657
      added settattr_clean and append_clean to SmartProperty, which set
 
658
      attributes without triggering a "dirty" event or any history. used as:
 
659
      myclass.prop1.setattr_clean(myobject, 'hi')
 
660
 
 
661
    .. change::
 
662
        :tags: 
 
663
        :tickets: 
 
664
 
 
665
      improved support to column defaults when used by mappers; mappers will pull
 
666
      pre-executed defaults from statement's executed bind parameters
 
667
      (pre-conversion) to populate them into a saved object's attributes; if any
 
668
      PassiveDefaults have fired off, will instead post-fetch the row from the DB to
 
669
      populate the object.
 
670
 
 
671
    .. change::
 
672
        :tags: 
 
673
        :tickets: 
 
674
 
 
675
      added 'get_session().invalidate(*obj)' method to objectstore, instances will
 
676
      refresh() themselves upon the next attribute access.
 
677
 
 
678
    .. change::
 
679
        :tags: 
 
680
        :tickets: 
 
681
 
 
682
      improvements to SQL func calls including an "engine" keyword argument so
 
683
      they can be execute()d or scalar()ed standalone, also added func accessor to
 
684
      SQLEngine
 
685
 
 
686
    .. change::
 
687
        :tags: 
 
688
        :tickets: 
 
689
 
 
690
      fix to MySQL4 custom table engines, i.e. TYPE instead of ENGINE
 
691
 
 
692
    .. change::
 
693
        :tags: 
 
694
        :tickets: 
 
695
 
 
696
      slightly enhanced logging, includes timestamps and a somewhat configurable
 
697
      formatting system, in lieu of a full-blown logging system
 
698
 
 
699
    .. change::
 
700
        :tags: 
 
701
        :tickets: 
 
702
 
 
703
      improvements to the ActiveMapper class from the TG gang, including
 
704
      many-to-many relationships
 
705
 
 
706
    .. change::
 
707
        :tags: 
 
708
        :tickets: 
 
709
 
 
710
      added Double and TinyInt support to mysql
 
711
 
 
712
.. changelog::
 
713
    :version: 0.1.3
 
714
    :released: Thu Mar 02 2006
 
715
 
 
716
    .. change::
 
717
        :tags: 
 
718
        :tickets: 
 
719
 
 
720
      completed "post_update" feature, will add a second update statement before
 
721
      inserts and after deletes in order to reconcile a relationship without any
 
722
      dependencies being created; used when persisting two rows that are dependent
 
723
      on each other
 
724
 
 
725
    .. change::
 
726
        :tags: 
 
727
        :tickets: 
 
728
 
 
729
      completed mapper.using(session) function, localized per-object Session
 
730
      functionality; objects can be declared and manipulated as local to any
 
731
      user-defined Session
 
732
 
 
733
    .. change::
 
734
        :tags: 
 
735
        :tickets: 
 
736
 
 
737
      fix to Oracle "row_number over" clause with multiple tables
 
738
 
 
739
    .. change::
 
740
        :tags: 
 
741
        :tickets: 
 
742
 
 
743
      mapper.get() was not selecting multiple-keyed objects if the mapper's table was a join,
 
744
      such as in an inheritance relationship, this is fixed.
 
745
 
 
746
    .. change::
 
747
        :tags: 
 
748
        :tickets: 
 
749
 
 
750
      overhaul to sql/schema packages so that the sql package can run all on its own,
 
751
      producing selects, inserts, etc. without any engine dependencies.  builds upon
 
752
      new TableClause/ColumnClause lexical objects.  Schema's Table/Column objects
 
753
      are the "physical" subclasses of them.  simplifies schema/sql relationship,
 
754
      extensions (like proxyengine), and speeds overall performance by a large margin.
 
755
      removes the entire getattr() behavior that plagued 0.1.1.
 
756
 
 
757
    .. change::
 
758
        :tags: 
 
759
        :tickets: 
 
760
 
 
761
      refactoring of how the mapper "synchronizes" data between two objects into a
 
762
      separate module, works better with properties attached to a mapper that has an
 
763
      additional inheritance relationship to one of the related tables, also the same
 
764
      methodology used to synchronize parent/child objects now used by mapper to
 
765
      synchronize between inherited and inheriting mappers.
 
766
 
 
767
    .. change::
 
768
        :tags: 
 
769
        :tickets: 
 
770
 
 
771
      made objectstore "check for out-of-identitymap" more aggressive, will perform the
 
772
      check when object attributes are modified or the object is deleted
 
773
 
 
774
    .. change::
 
775
        :tags: 
 
776
        :tickets: 
 
777
 
 
778
      Index object fully implemented, can be constructed standalone, or via
 
779
      "index" and "unique" arguments on Columns.
 
780
 
 
781
    .. change::
 
782
        :tags: 
 
783
        :tickets: 
 
784
 
 
785
      added "convert_unicode" flag to SQLEngine, will treat all String/CHAR types
 
786
      as Unicode types, with raw-byte/utf-8 translation on the bind parameter and
 
787
      result set side.
 
788
 
 
789
    .. change::
 
790
        :tags: 
 
791
        :tickets: 
 
792
 
 
793
      postgres maintains a list of ANSI functions that must have no parenthesis so
 
794
      function calls with no arguments work consistently
 
795
 
 
796
    .. change::
 
797
        :tags: 
 
798
        :tickets: 
 
799
 
 
800
      tables can be created with no engine specified.  this will default their engine
 
801
      to a module-scoped "default engine" which is a ProxyEngine.  this engine can
 
802
      be connected via the function "global_connect".
 
803
 
 
804
    .. change::
 
805
        :tags: 
 
806
        :tickets: 
 
807
 
 
808
      added "refresh(*obj)" method to objectstore / Session to reload the attributes of
 
809
      any set of objects from the database unconditionally
 
810
 
 
811
.. changelog::
 
812
    :version: 0.1.2
 
813
    :released: Fri Feb 24 2006
 
814
 
 
815
    .. change::
 
816
        :tags: 
 
817
        :tickets: 
 
818
 
 
819
      fixed a recursive call in schema that was somehow running 994 times then returning
 
820
      normally.  broke nothing, slowed down everything.  thanks to jpellerin for finding this.
 
821
 
 
822
.. changelog::
 
823
    :version: 0.1.1
 
824
    :released: Thu Feb 23 2006
 
825
 
 
826
    .. change::
 
827
        :tags: 
 
828
        :tickets: 
 
829
 
 
830
      small fix to Function class so that expressions with a func.foo() use the type of the
 
831
      Function object (i.e. the left side) as the type of the boolean expression, not the
 
832
      other side which is more of a moving target (changeset 1020).
 
833
 
 
834
    .. change::
 
835
        :tags: 
 
836
        :tickets: 
 
837
 
 
838
      creating self-referring mappers with backrefs slightly easier (but still not that easy -
 
839
      changeset 1019)
 
840
 
 
841
    .. change::
 
842
        :tags: 
 
843
        :tickets: 
 
844
 
 
845
      fixes to one-to-one mappings (changeset 1015)
 
846
 
 
847
    .. change::
 
848
        :tags: 
 
849
        :tickets: 
 
850
 
 
851
      psycopg1 date/time issue with None fixed (changeset 1005)
 
852
 
 
853
    .. change::
 
854
        :tags: 
 
855
        :tickets: 
 
856
 
 
857
      two issues related to postgres, which doesnt want to give you the "lastrowid"
 
858
      since oids are deprecated:
 
859
         * postgres database-side defaults that are on primary key cols *do* execute
 
860
      explicitly beforehand, even though thats not the idea of a PassiveDefault.  this is
 
861
      because sequences on columns get reflected as PassiveDefaults, but need to be explicitly
 
862
      executed on a primary key col so we know what we just inserted.
 
863
         * if you did add a row that has a bunch of database-side defaults on it,
 
864
      and the PassiveDefault thing was working the old way, i.e. they just execute on
 
865
      the DB side, the "cant get the row back without an OID" exception that occurred
 
866
      also will not happen unless someone (usually the ORM) explicitly asks for it.
 
867
 
 
868
    .. change::
 
869
        :tags: 
 
870
        :tickets: 
 
871
 
 
872
      fixed a glitch with engine.execute_compiled where it was making a second
 
873
      ResultProxy that just got thrown away.
 
874
 
 
875
    .. change::
 
876
        :tags: 
 
877
        :tickets: 
 
878
 
 
879
      began to implement newer logic in object properities.  you can now say
 
880
      myclass.attr.property, which will give you the PropertyLoader corresponding to that
 
881
      attribute, i.e. myclass.mapper.props['attr']
 
882
 
 
883
    .. change::
 
884
        :tags: 
 
885
        :tickets: 
 
886
 
 
887
      eager loading has been internally overhauled to use aliases at all times.  more
 
888
      complicated chains of eager loads can now be created without any need for explicit
 
889
      "use aliases"-type instructions.  EagerLoader code is also much simpler now.
 
890
 
 
891
    .. change::
 
892
        :tags: 
 
893
        :tickets: 
 
894
 
 
895
      a new somewhat experimental flag "use_update" added to relations, indicates that
 
896
      this relationship should be handled by a second UPDATE statement, either after a
 
897
      primary INSERT or before a primary DELETE.  handles circular row dependencies.
 
898
 
 
899
    .. change::
 
900
        :tags: 
 
901
        :tickets: 
 
902
 
 
903
      added exceptions module, all raised exceptions (except for some
 
904
      KeyError/AttributeError exceptions) descend from these classes.
 
905
 
 
906
    .. change::
 
907
        :tags: 
 
908
        :tickets: 
 
909
 
 
910
      fix to date types with MySQL, returned timedelta converted to datetime.time
 
911
 
 
912
    .. change::
 
913
        :tags: 
 
914
        :tickets: 
 
915
 
 
916
      two-phase objectstore.commit operations (i.e. begin/commit) now return a
 
917
      transactional object (SessionTrans), to more clearly indicate transaction boundaries.
 
918
 
 
919
    .. change::
 
920
        :tags: 
 
921
        :tickets: 
 
922
 
 
923
      Index object with create/drop support added to schema
 
924
 
 
925
    .. change::
 
926
        :tags: 
 
927
        :tickets: 
 
928
 
 
929
      fix to postgres, where it will explicitly pre-execute a PassiveDefault on a table
 
930
      if it is a primary key column, pursuant to the ongoing "we cant get inserted rows
 
931
      back from postgres" issue
 
932
 
 
933
    .. change::
 
934
        :tags: 
 
935
        :tickets: 
 
936
 
 
937
      change to information_schema query that gets back postgres table defs, now
 
938
      uses explicit JOIN keyword, since one user had faster performance with 8.1
 
939
 
 
940
    .. change::
 
941
        :tags: 
 
942
        :tickets: 
 
943
 
 
944
      fix to engine.process_defaults so it works correctly with a table that has
 
945
      different column name/column keys (changset 982)
 
946
 
 
947
    .. change::
 
948
        :tags: 
 
949
        :tickets: 
 
950
 
 
951
      a column can only be attached to one table - this is now asserted
 
952
 
 
953
    .. change::
 
954
        :tags: 
 
955
        :tickets: 
 
956
 
 
957
      postgres time types descend from Time type
 
958
 
 
959
    .. change::
 
960
        :tags: 
 
961
        :tickets: 
 
962
 
 
963
      fix to alltests so that it runs types test (now named testtypes)
 
964
 
 
965
    .. change::
 
966
        :tags: 
 
967
        :tickets: 
 
968
 
 
969
      fix to Join object so that it correctly exports its foreign keys (cs 973)
 
970
 
 
971
    .. change::
 
972
        :tags: 
 
973
        :tickets: 
 
974
 
 
975
      creating relationships against mappers that use inheritance fixed (cs 973)