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 once I get the time to
look at the revision history :-}
2.07_06
- Support for SQL sequences. See the Tangram::Schema man
page.
2.07_07
- added support for multiple test suites, each with their own
schema, to end the ballooning schema madness that was
affecting the springfield test suite.
- reworked the way the DBMS date formatting worked again,
adding Tangram::CookedDateTime
- added support for Time::Piece and DateTime.
- much work on database portability. The Pg back-end now
works very well, and I have also ported to SQLite.
- much more documentation, including Tangram::Intro
- reworked the test suite to have multiple sections
- new test section for Object Persistathon (musicstore schema)
2.07_08
- Tangram::Dump now checks (via $storage->id_maybe_insert())
whether objects that it is saving should be inserted to the
DB first.
2.08 26 Mar 2005
- Release this version with a couple of minor bugfixes
2.08_051 7 Oct 2019
- state51 specific patches