/
Changes
324 lines (280 loc) · 12.8 KB
/
Changes
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
Revision history for Perl extension Tangram.
0.01 Sun Mar 21 10:46:45 1999
- original version; created by h2xs 1.18
0.03 Stardate: unknown
- first public alpha release
0.08 Stardate: unknown
- second public alpha release
0.09 Stardate: unknown
- split Tangram.pm into several modules
- replaced @ISA with 'use base'
- replaced default typetags with automounting
- prefetch now takes either class or remote
- implemented prefetch for IntrArray and IntrSet
*::prefetch still need real-life testing,
especially when class(coll) <> class(item)
1.00 Nov 07 1999 - first mature release version
- deploy() now also works directly on DBI handles
- deploy() allows specification of SQL types via the schema hash
- intrusive collections allow element-to-container navigation
- improve speed of read_object
- fixed various bugs
- rewrote part of, and expanded documentation
1.01 Nov 12 1999 - interim version
- added (raw) mapping between Perl strings and date/time SQL types
1.02 Nov 14 1999 - interim version
- added support for aggregated refs, arrays and sets
1.03 Dec 28 1999 - interim version
- added support for customizing object & class id types, etc
- as a consequence Tangram should now work with PostgreSql
- fixed bug: erase() failed in presence of stateless leaf classes
- temporarily removed RawDate and RawTime tests because M$ SQL
cannot handle them; those modules are still present though
1.04 Jan 03 2000 - interim version
- fixed two bugs related to explicit tables
1.05 Jan 03 2000 - interim version
- fixed: Storage::prefetch now works with inherited members
- fixed: _insert() ignored collections in stateless classes
1.06 Feb 29 2000 - higly experimental interim version
- added typechecks on collection members
- started cleaning up autovivification of colls upon save
- documented like()
- documented extended select options retrieve, order & filter
- changed _limit into the Limit in test suite
- added temporary hack in Makefile.PL to support Access
- added mapping for flat arrays
- factorized code common to Array & FlatArray
1.07 Feb 29 2000 - interim version
- adapted test suite for Sybase and other NULL-picky databases
- added experimental support for vendor extensions (Dialect)
- added skeleton Dialect::Sybase with support for datepart
- did extensive rework on Expr instantiation
- began documenting Type
- added Storage::reload()
1.08 Mar 26 2000 - interim version
- batch allocation of object ids
- support for Lobs contributed by marian.kelc@ruhr-uni-bochum.de
- Storage::reset()
1.09 ? - interim version
- String calls DBI for correct quoting, as Marian Kelc suggested
- fixed Array problem when removing elements from middle of collection
- (?)
1.10 Apr 19 2000 - interim version
- changed reset() into unload() and added support for partial unloading
- tx_do() can now propagate arguments to closure/anon-sub;
insert(), update() and erase() pass anon-subs to tx_do to prevent
leaks (thanks Radu Greab)
1.11 May 29 2000 - public version
- ordering result set by descending order is now supported
- die() on attempt to load from an invalid id
- removed silly table id allocation limit (t1000) in Coll.pm
1.13 Jul 11 2000 - interim version
- new FlatHash and DMDateTime mappings contributed by Gabor Herr
<herr@iti.informatik.tu-darmstadt.de>
- some more doc in Type.pod
- date & time doc moved to DateTime.pod
- deploy() puts \n between instructions in trace
1.15 Jul 21 2000 - interim version
- new PerlDump mapping contributed by Gabor Herr
<herr@iti.informatik.tu-darmstadt.de>
1.16 Jul 25 2000 - interim version
- fixed deploy() bug: didn't take col names into account for Array, Set and Hash
- fixed query_expr bug in Scalar and Ref: used field name instead of col name
1.17 Jul 28 2000 - interim version
- Gabor's patches on deep updates
1.18 Jul 28 2000 - stable version
- weakrefs!
- tuples
- mysql tx acquired lock regardless of tx nesting
1.19 Jul 28 2000 - stable version
- improved id allocation for mysql
- bitwise operators for mysql
- manual class id allocation
- install now works in the absence of DBI and Set::Object
- Makefile.PL prerequisites work now
- Guided Tour is now generated & can be run
- added support for LIMIT in selects
- deploy() didn't take explicit oid/cid type into account; fixed
- deploy() wrongly defaulted to NULLable types; fixed
- class id can now be specified
- oid and cid now default to INTEGER
- fixed error in Expr.pod but I don't remember what it was
- minor improvement to Schema.pod
- added Springfield.pm for users to play with
- added support for SELECT SUM
2.00 Feb ?? 2001 - first S.O.L. release
- added copyright notices
- added a copy of the GPL
- implemented inlined exports
- INSERT and UPDATE now make use of prepared statements when available
- re-executable Cursors
- changed database layout, Class Table is gone and 'control' table in there
- object ids are no longer allocated on a class basis
- introduced Tangram::Relational
- dialect are now done via derivation
- stored object id no longer contains type id
- introduced Relational::Engine
- flexible mapping
2.05pre1 May 2003 - SamV - first "not the momma" release
- Patches from lots of people, don't know who 'coz the honourable
grand master JLL applied a lot of them, I'll try to summarize
here:
- back-porting pieces for 5.00503 (that was me)
- a more elegant solution for the
Tangram::AbstractArray/AbstractHash corner case than
the one I submitted :-)
- code that (possibly) completes Tangram::Hash support (I
haven't written a test case to confirm this yet)
- A fix to Tangram::AbstractSet that again caters to some
very strange corner cases (this was me too)
- Working implementation of the Tangram::DMDateTime type
mapping, a good thing that running a persistent
application server offsets the huge time it takes to
load in Date::Manip :-)
- A bug fix to Tangram::FlatArray mapping type that
affects deleting members (don't know whose)
- Tangram::IntrSet::get_intrusions (? can anyone claim
or explain this one?)
- Minor Tangram::PerlDump fix (a simple one)
- Deep, deep magic in Tangram::Relational::Engine;
new function get_heterogeneity (anyone?)
- Use of uninitialised variable in Tangram::Engine...
- Other large changes to Tangram::Schema (? - get_bases,
get_specs, is_root, etc)
- A problem with merging schemas when you used a
`back-ref' to a class that is later on in the schema
(me)
- Scattered showers of changes in Tangram::Storage
(get_insert_statements etc, lots of `off by one'
(reference nesting level that is) changes)
- All I can say is that there have been some very smart people
looking at this code and submitting patches.
2.05pre2 Jun 2003 - SamV
- Minor Tangram::Expr defined vs logically-false fix
(Aaron Mackey)
- explicitly select all ORDER BY columns (Aaron Mackey)
- normalise default "slot" and "coll" column names in
Tangram::Intr* types (SamV)
2.05 Jul 2003 - SamV
- Tangram::Scalar and Tangram::Ref column names are now passed
through $schema->{normalize}->()
2.06 Jul 17 2003 - SamV
- Added $storage->oid_isa($oid, "ClassName") method for
marshalling OIDs
- Fixed minor bugs causing test suite to issue large warnings
on 5.8.1-RC2
2.07 Nov 8 2003 - SamV
- Fixed bug with Tangram::Intr* and erasing objects that
referred to a class which didn't use their class name as
their table name [closes: 2650]
- Added the ability to use limit => [ N, Y ] in
Tangram::Storage->select statements
- Added Tangram::Coll::includes_or; see the man page for
Tangram::Expr
- Enhancement of error message from
Tangram::Relational::Engine [related to 2631]
- Support for using table types via $schema->{sql}{table_type}
- Support for sub-selects with MySQL, for the one test that
uses them. Also $storage->{no_subselects} is auto-detected.
- Completed $storage->prefetch() function for all working
types, new test t/prefetch.t
- If you have NULL values in array or hash slots in your
database, then it won't cause a hard error, except possibly
with prefetch() [related to 2631]
- Various small fixes to bizarre internal error messages
[related to 2631]
- Minor documentation fixes
- Exceptions on various DB failures are now thrown when
DBI::execute() is called internally, rather than being
largely ignored.
- Cosmetic Test Suite changes
- ID column name wasn't being used for the index in
Tangram::Relational::Engine (Kurt Stephens)
Lost patches from 2002/06/25 (Kurt Stephens):
- Added missing Tangram::Expr and Tangram::Filter operators:
'+', '-', '*', '/',
'&', '|', '!',
'==', '!=', '<', '>', '<=', '>=',
'eq', 'ne', 'lt', 'gt', 'le', 'ge',
'cos', 'sin', 'acos',
- Added argument swapping for non-commutative operators, like
"<".
- Fixed export problem with 5.6.1 (reported by Kate Pugh)
- deep_update with Tangram::Ref bug fix (reported by Aaron Mackey)
- Makefile.PL should now hopefully be more informative about
which modules are needed for what.
- Removed Selfloader from Tangram::Ref (Kate Pugh)
2.07.1, 29-Dec-2003 - SamV
- Tangram::IntrHash implemented at last :-). Tangram::IxHash
and Tangram::IntrIxHash are next :->
- verbose error message in Tangram::Coll when demand paging is
happening on stale tied collections (eg, erroneously created
via dclone())
- some reformatting, as I grasp more of the code.
- fix for Postgres sub-select detection (Pedro Alves)
- make_1st_id_in_tx now only called for 1st insert
(Chengzhi Liang)
2.07.2, 6-Jan-2004 - SamV
- Tangram::IntrHash prefetch test added
- Documentation enhancements
- Tangram::Dump class to `fix' persistent references in data
structures prior to insertion, so that :
- Tangram::PerlDump now can contain persistent objects safely
- and hey, why not write a Tangram::Storable
- and a Tangram::YAML (not working, waiting for a CPAN bug to
be fixed)
2.07_03, 17-May-2004 - SamV
- Added Tangram::IDBIF to combine multiple object fields into
one perl_dump style field (including a "catch-all" facility)
Test suite for this isn't complete yet.
Most changes from Kurt <ks.perl@kurtstephens.com>, with many
thanks:
- Do not $self->{db}->disconnect in Storage::disconnect() and
DESTROY(), if $self->{db} eq $opts->{dbh} in
Tangram::Storage->connect($schema, $cs, $user, $pw, { 'dbh'
=> ... } ); See $self->{db_owned}.
- Handle objects that lazily initialize Tangram::AbstractSet
Set::Object fields. See UMMF.
- Added IntrRef.pm ("Intrusive Ref") for 1-to-1 bi-directional
Association navigation using only one column in one table.
Derived from IntrSet. I need help with this one. :)
- Added @sums = $storage->sum([ $expr1, $expr2 ], ...) support.
- Added support for reused tables for mapping both sides of
many-to-many UML Associations to the same table with Tangram::Set
and Tangram::Array. See UMMF's example/ex1.
- Added support for timestamping all tables through
$schema->{sql}{timestamp_all_tables}.
- Prevent additional records in Tangram control table on redeploy.
- Added support for GROUP BY in Tangram::Cursor.
- Added COUNT($remote) and SUM($filter_expr) support.
Editorial release changes:
- [SamV] Started using _NN version style, so CPAN marks it as
a development release
- added brief test suite for aggregate functions
2.07_04, 20-May-2004
- Various POD modifications, including the main Tangram page,
the addition of Tangram::Complicity and the removal of
bogus Tangram::Dialect
- Enhanced TRACE messages
- Added support for Oracle via Tangram::Oracle
- Added support for cursors that select no objects (just
retrieve extra columns, eg for aggregate selects)
- `Fixed' t/datetime.t so that it doesn't do PostgreSQL/MySQL
specific tests unless it is running on those databases
- Storage and Engine now holds a handle to the
Tangram::Relational object that created them, allowing for
various DBMS dependant hooks (used to rewrite column types,
format dates, etc)
- Extra sanity checking in the core
- The id_col feature in Tangram::Schema now actually works
:-). Previously, there were many places where .id was
hard-coded.
- Added ->in() method, an expr that allows direct use of the
SQL IN () construct, rather than just via includes_or(), or
with Collections.
- DMDateTime module now expects database to understand the
ISO-8601 date format, but the MySQL driver has been enhanced
to convert ISO-8601 to MySQL format.
- New method Tangram::Storage::unload_all
2.07_05, 2.07_06
- lots of changes. full list to follow in next release.