[Dbix-class] ANNOUNCE - Language::MuldisD v0.14.0 released
Darren Duncan
darren at DarrenDuncan.net
Wed Dec 19 10:47:17 GMT 2007
All,
--------
Happy 20th Birthday to Perl! Larry Wall released Perl 1 to the
public on 1987 December 18th. Also, today is the general/stable
release of Perl 5.10, its best version yet that can be used in
production now.
--------
I am pleased to announce the release of Language::MuldisD
official/unembraced version 0.14.0 on CPAN. You can see it now, with
nicely HTMLized documentation, at:
http://search.cpan.org/dist/Language-MuldisD/
--------
All the important changes since release 0.11.0 were in the file Core.pod:
1. Added new generic range-checking functions for any Ordered
subtype. These correspond to things like "is foo between bar and
baz".
2. Large improvements to how rules for rounding numbers are
specified, the rules naming a target radix (2,10,etc), precision, and
rounding method (floor,half_up,etc). These are applied both when
coercing irrational results of functions as rational values, as well
as when explicitly rounding rationals to a different precision or to
integers. The point being to have very precise determinism for
semantics when working with numbers, which are portable.
3. Renamed a bunch of operators, most of them being relational operators, for
better consistency and understanding. Also added some complement
functions for various existing functions, like an "is not foo" to go
with a "is foo", or a "all but bar" to go with "bar".
4. Added a few integer functions, including '(inc|dec)rease'
(meaning ++|-- or next|previous). Note however that no other ordinal
types have been given next/previous operators besides integers since
they are more continuous rather than discrete (eg rationals), or
there is no reasonable deterministic definition of what would come
before/after a given value (eg, character strings).
5. Added 4 new generic tuple operators: 'attr_from_Tuple',
'Tuple_from_attr', 'attr', 'update_attr'. Those allow reading or
writing tuple attribute values, and are fundamentals for moving
component values in and out of collections.
6. Fleshed out the signatures and descriptions of all remaining
listed generic relational operators: 'group', 'ungroup',
'substitution', 'summary'. Also added
these: 'cmpl_(wrap|group)', 'substitution_in_(restriction|semijoin)',
'map', plus a few more. Also added an initial complement of 6
set-specific operators and 17 bag-specific operators (both sets and
bags are specialized relation subtypes and can use relation operators
too, sets more reliably than bags).
Between these additions, the Muldis D equivalents of the following
additional tasks in SQL are now fully documented: SELECT (remainder),
GROUP BY, summary reports / per-group aggregate operations (AVG,
etc), whole-relation aggregate operations, UPDATE, ?MERGE/?REPLACE.
(Note that the equivalents of these SQL tasks were already documented
in previous releases: SELECT (partial), FROM, inner joins, cross
products, self-joins, WHERE/HAVING, IN/NOT IN, UNION, INTERSECT,
MINUS, INSERT, DELETE, TRUNCATE, sub-selects anywhere, some
hierarchical queries, scalar expressions, partial aggregate
operations, invoking user-defined functions, more.)
7. Added Maybe-specific operators 'attr_or_default', 'attr_or_value'
which are like Perl's defined-or, or like SQL's 2-argument COALESCE
or NVL or IF_NULL.
See the "Changes" file (
http://search.cpan.org/src/DUNCAND/Language-MuldisD-0.14.0/Changes )
for more details of what changed for this release.
--------
Still to do:
1. Add relational operators for simplifying half-outer joins, which
are short-hand for what you can already do with a
restrict+join+extend|group+union.
2. Add relational operators for sorting, quota queries, and sequence
operations; that is, analogues to SQL's ORDER BY and LIMIT tasks, as
well as order-significant aggregate operations on relation attributes
(eg, catenate).
3. Define more flow control operators like IF/ELSE, GIVEN/WHEN, etc.
4. Flesh out and add catalog types for user-defined types,
operators, value expressions, statements. Flesh out the system
catalog schema at the same time.
5. Define short-hand data definition operators analagous to CREATE,
ALTER, DROP etc.
6. Flesh out and add system service operators like random numbers or
current dates or simple generic I/O.
--------
Separately, an update 0.6.0 to Muldis::DB was released:
http://search.cpan.org/dist/Muldis-DB/
Its main change was that the ::DBMS role/interface/object has been
renamed and split into two, ::Machine and ::Process. A Machine
represents a whole virtual machine (such as a typical DBMS server),
and a Process represents an autonomous thread of execution in it
(such as a handler for one DBMS client connection). To use Muldis DB
now, you first create a Machine object like you used to create a DBMS
object, then make a child Process object of that, and then
subsequently you invoke in-DBMS routines, or make bind vars etc, with
the Process. Note that you can still use multiple storage depots in
a single Process, such as for cross-database queries, but any
transactions will commit or rollback them all as one; if you want
autonomous transactions, that is what you use multiple Process for.
Its changes file has details.
The Muldis DB Example implementation is still not executing yet, sorry.
--------
Thank you. -- Darren Duncan
More information about the DBIx-Class
mailing list