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

« 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
  • Date: 2014-06-27 20:17:13 UTC
  • mfrom: (1.4.28)
  • Revision ID: package-import@ubuntu.com-20140627201713-g6p1kq8q1qenztrv
Tags: 0.9.6-1
* New upstream release
* Remove Python 3.X build tag files, thanks to Matthias Urlichs for the
  patch (closes: #747852)
* python-fdb isn't in the Debian archive yet so default dialect for firebird://
  URLs is changed to obsolete kinterbasdb, thanks to Russell Stuart for the
  patch (closes: #752145)

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
 
 
860
 
        * postgres database-side defaults that are on primary key cols *do* execute
861
 
          explicitly beforehand, even though thats not the idea of a PassiveDefault.  this is
862
 
          because sequences on columns get reflected as PassiveDefaults, but need to be explicitly
863
 
          executed on a primary key col so we know what we just inserted.
864
 
        * if you did add a row that has a bunch of database-side defaults on it,
865
 
          and the PassiveDefault thing was working the old way, i.e. they just execute on
866
 
          the DB side, the "cant get the row back without an OID" exception that occurred
867
 
          also will not happen unless someone (usually the ORM) explicitly asks for it.
868
 
 
869
 
    .. change::
870
 
        :tags: 
871
 
        :tickets: 
872
 
 
873
 
      fixed a glitch with engine.execute_compiled where it was making a second
874
 
      ResultProxy that just got thrown away.
875
 
 
876
 
    .. change::
877
 
        :tags: 
878
 
        :tickets: 
879
 
 
880
 
      began to implement newer logic in object properities.  you can now say
881
 
      myclass.attr.property, which will give you the PropertyLoader corresponding to that
882
 
      attribute, i.e. myclass.mapper.props['attr']
883
 
 
884
 
    .. change::
885
 
        :tags: 
886
 
        :tickets: 
887
 
 
888
 
      eager loading has been internally overhauled to use aliases at all times.  more
889
 
      complicated chains of eager loads can now be created without any need for explicit
890
 
      "use aliases"-type instructions.  EagerLoader code is also much simpler now.
891
 
 
892
 
    .. change::
893
 
        :tags: 
894
 
        :tickets: 
895
 
 
896
 
      a new somewhat experimental flag "use_update" added to relations, indicates that
897
 
      this relationship should be handled by a second UPDATE statement, either after a
898
 
      primary INSERT or before a primary DELETE.  handles circular row dependencies.
899
 
 
900
 
    .. change::
901
 
        :tags: 
902
 
        :tickets: 
903
 
 
904
 
      added exceptions module, all raised exceptions (except for some
905
 
      KeyError/AttributeError exceptions) descend from these classes.
906
 
 
907
 
    .. change::
908
 
        :tags: 
909
 
        :tickets: 
910
 
 
911
 
      fix to date types with MySQL, returned timedelta converted to datetime.time
912
 
 
913
 
    .. change::
914
 
        :tags: 
915
 
        :tickets: 
916
 
 
917
 
      two-phase objectstore.commit operations (i.e. begin/commit) now return a
918
 
      transactional object (SessionTrans), to more clearly indicate transaction boundaries.
919
 
 
920
 
    .. change::
921
 
        :tags: 
922
 
        :tickets: 
923
 
 
924
 
      Index object with create/drop support added to schema
925
 
 
926
 
    .. change::
927
 
        :tags: 
928
 
        :tickets: 
929
 
 
930
 
      fix to postgres, where it will explicitly pre-execute a PassiveDefault on a table
931
 
      if it is a primary key column, pursuant to the ongoing "we cant get inserted rows
932
 
      back from postgres" issue
933
 
 
934
 
    .. change::
935
 
        :tags: 
936
 
        :tickets: 
937
 
 
938
 
      change to information_schema query that gets back postgres table defs, now
939
 
      uses explicit JOIN keyword, since one user had faster performance with 8.1
940
 
 
941
 
    .. change::
942
 
        :tags: 
943
 
        :tickets: 
944
 
 
945
 
      fix to engine.process_defaults so it works correctly with a table that has
946
 
      different column name/column keys (changset 982)
947
 
 
948
 
    .. change::
949
 
        :tags: 
950
 
        :tickets: 
951
 
 
952
 
      a column can only be attached to one table - this is now asserted
953
 
 
954
 
    .. change::
955
 
        :tags: 
956
 
        :tickets: 
957
 
 
958
 
      postgres time types descend from Time type
959
 
 
960
 
    .. change::
961
 
        :tags: 
962
 
        :tickets: 
963
 
 
964
 
      fix to alltests so that it runs types test (now named testtypes)
965
 
 
966
 
    .. change::
967
 
        :tags: 
968
 
        :tickets: 
969
 
 
970
 
      fix to Join object so that it correctly exports its foreign keys (cs 973)
971
 
 
972
 
    .. change::
973
 
        :tags: 
974
 
        :tickets: 
975
 
 
976
 
      creating relationships against mappers that use inheritance fixed (cs 973)