~niemeyer/storm/postgres-local-paths

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
0.12 (2007-XX-XX)
=================

Improvements
------------
 - The Connection will reconnect automatically when connection
   drops are detected and a rollback is performed.  As a result,
   the Store should handle reconnections in a seamless way in
   most circumstances (#94986, by James Henstridge).  Support in
   the MySQL backend is pending.
 - Store.flush() will not load values inserted in the database.
   Instead, undefined variables are set to AutoReload, and resolved
   once first accessed.  This won't be noticeable in normal usage,
   but will boost the performance of inserts.
 - Support in the postgres backend to use the RETURNING extension of
   the INSERT statement to retrieve the primary key on inserts for
   object identity mapping (PostgreSQL >= 8.2 only)
 - Allow local paths to postgres databases to be provided in the path
   part of the URI.  The last element of the path is the database name.
   This won't be used if a hostname is provided in the URI.

Bug fixes
---------
 - TimeDelta was added to storm.locals.
 - Schema names are accepted in __storm_table__ when using
   PostgreSQL as the database (e.g. "schema.table"). (#146580,
   reported by James Mayfield)
 - Tables named with reserved keywords are properly escaped.
 - TransactionFailedError is now imported from the public
   place: ZODB.POSException (#129715, by James Henstridge).
 - Fixed bug which caused an object to be readded to the store
   when a reference of an object that had already been removed
   was looked up.
 - Prevent pathological case which happens when a statement like
   "SELECT ... WHERE table.id = currval(...)" is executed in
   PostgreSQL.  The change is only meaningful on PostgreSQL < 8.2,
   as newer versions will use the RETURNING extension instead.


0.11 (2007-10-08)
=================

Improvements
------------
 - Added case-insensitive support to the Like expression and
   Class.attr.like() constructions.
 - ZStorm.get_name() for obtaining the the name of the given store.

Bug fixes
---------
 - storm.zope wasn't included on the tarball due to an error in setup.py.
 - Binary strings are now properly quoted with the E'' formatting if
   needed, in the postgres backend.


0.10 (2007-08-08)
=================

Improvements
------------
 - Improvements were made to the tutorial.
 - There is now a setup.py script for installing Storm.
 - Count and ClassAlias is now available through the storm.locals
   module.
 - A new hook, __storm_pre_flush__, can be implemented on objects in a
   Store. It is called before an object is flushed to the
   database.
 - Storm can now use the built-in sqlite support in Python 2.5 and
   above.
 - There is now a storm.properties.Decimal, which allows you to store
   Decimal (as opposed to binary) floating point values.
 - storm.zope was added, which offers a simple integration mechanism
   with the Zope transaction machinery.
 - Complex expressions other than simple Columns can now be passed to
   the aggregation methods of ResultSet (avg,max,min,sum).
 - Backend implementors can now override preset_primary_key on their
   Database object to come up with primary key values before an
   Insert.
 - A large amount of API documentation was added.

Bug fixes
---------
 - SQL reserved words are now properly escaped in SQL
   statements.
 - GROUP BY and ORDER BY statements are now ordered correctly.
 - Running the tests with trial now works.
 - All backends are now initialized such that their transactions are
   truly SERIALIZABLE. Psycopg2 and Pysqlite2 both did not previously
   have serializable transactions by default, but this has been fixed.
 - A bug in ResultSet.cached which could occasionally cause
   inconsistencies in ResultSet.set was fixed.

API Changes
-----------

Most changes are backwards compatible. There were some incompatible
changes which may affect alternative database backends.

 - Chars was renamed to RawStr. Chars still exists, but is
   deprecated. All raw 8-bit data in your database should be
   represented with RawStr.
 - compiler handlers have had their arguments reordered.
 - The Compile.__call__ method now returns only the Statement.
 - Compile.fork was renamed to Compile.create_child.
 - Many methods which previously had underscores were renamed to get
   rid of the underscores to reflect their status as things which can
   be safely touched in subclasses. Documentation was added clarifying
   their intended use.