From: Eric Niebler (eric_at_[hidden])
Date: 2006-01-18 17:34:03
Andy Tompkins wrote:
> stringstream << select << column("c1") << column("table1", "column2") <<
> from << table("table1").as("t1");
> => "SELECT [c1], [t1].[column2] FROM [table1] AS [t1]"
> I believe that a database library for boost should include something
> like this.
A good idea, but IMO you haven't taken it far enough. First, consider
the RTL, the relational template library
which gives you strong type-safety when applying relational operations
to strongly-typed in-memory data. It uses expression templates.
Next, consider xpressive, which allows you to author regular expressions
either as expression templates OR as strings. It makes use of a generic
expression template manipulation framework called proto, which makes it
fairly straightword to define arbitrary transformations on a statically
typed expression tree.
Now, putting it all together, I imagine a relational library with a
dual-interface like xpressive, but for SQL instead of regex. SQL
statements could be expression templates, which when applied to
in-memory data, yields strongly-typed results. OR, the exact same
expression template, when used in a different context, might get
transformed into the equivalent SQL string for remote (lazy?) execution
with dynamic typing.
Potentially very powerful.
-- Eric Niebler Boost Consulting www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk