From: Arkadiy Vertleyb (vertleyb_at_[hidden])
Date: 2004-04-12 21:53:55
I just uploaded an enhanced version of RTL (the relational template
First addition is a simple indexed set-based table implementation (I am
using the old name, and our code is based on the reviewed version of the
library. Once Joaquin comes up with the post-review version, we'll modify
and upload our code). So far this implementation does not fully utilize all
the indexed set capabilities that RTL can benefit from, but we will continue
working on this subject.
To use the indexed set implementation BY DEFAULT one can define the
BOOST_RTL_USE_SET macro. Or the implementation type can be supplied
explicitly, as a 4th parameter to the table_info class template, like:
mpl::vector<id> > > t1; // indexed set based table
sorted_strategy> > t2; // sorted vector based table
The other additions are mainly based on our discussions with Pavel
Vozenilek, and include:
Fully redesigned/reimplemented join.
We decided to get rid of our generic join, and replaced it with a simpler,
range join, operator which can be used to join each outer tuple with a range
in the inner relation, something like this:
equal_join<mpl::vector<c1> >(t1, t2);
range_join(t1, t2, lower_bound<mpl::vector<c1> >(), end());
Lambda enabled for the selection operator.
Something like this can be specified:
selection(t, _1[c1()]==5 && _1[c2()] >=20);// SELECT * FROM t1 WHERE c1=5
A couple of things were renamed:
BOOST_RTL_DEFINE_COLUMN(type, name); // looks more like C++
rel::tuple became rel::row to avoid collisions with the Boost.Tuple library,
that showed up once we started using the indexed set :(
(now I am even more against the idea of putting stuff under the boost
The other enhancements to the library and to the documentation to follow.
These will include better assertions, serialization, performance estimates,
Here is the link:
As always, any feedback is most welcome.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk