[Dbix-class] SQLA refactor: proposal

Matt S Trout dbix-class at trout.me.uk
Sun Nov 25 19:14:53 GMT 2007


On Tue, Nov 20, 2007 at 08:14:35PM +0000, Matt S Trout wrote:
> Far, far too much of the code is currently in _recurse_where, and the DWIM
> AST provides quite a few ways to say the same thing. From a few hours'
> thought, I think dduncan's
> 
> http://search.cpan.org/~duncand/Language-MuldisD-0.9.1/lib/Language/MuldisD/Core.pod
> 
> provides most of what we'll need - certainly the SELECT list, simple FROM
> and WHERE stuff is covered.
> 
> There are a few SQL-y operators such as LIKE or BETWEEN that don't seem to
> be in there, but I don't see why they can't be in sqla.Core.Str.Between
> etc.
> 
> So I think the first stage is to create an SQL::Abstract::Parser that
> parses SQLA syntax into MuldisD (+extra sqla. definitions) and an
> SQL::Abstract::Producer::SQL that converts from MuldisD to SQL, and then
> make core SQL::Abstract use that and pass all tests.

Since people appear not to be paying attention, let me clarify a little.

(1) I am proposing we use the *MuldisD* *specification*

(2) Specifically, I am proposing we use the

http://search.cpan.org/~duncand/Language-MuldisD-0.12.0/lib/Language/MuldisD/PerlHosted.pod

specification as an internal AST - i.e. a pre-worked-out set of perl data
structures to use as the explicit AST that I failed to get a design discussion
going about months ago. We now have a pre-built one that a smart man has
spent a lot of time designing, and the smart man is on this list and happy to
take feedback.

(3) This AST would then be transformed to SQL by various backends, for e.g.
SQL::Abstract::Producer::SQL which would be a generic backend, then that
can be subclassed to handle db-specific stuff.

(4) While dduncan plans a complete implementation of MuldisD as part of
Muldis::DB, the reason I didn't mention this is because no part of this
proposal involves using it. Anybody who assumed that, please note what the
first three letters of 'assume' are and try again.

-- 
      Matt S Trout       Catalyst and DBIx::Class consulting and support -
   Technical Director      http://www.shadowcat.co.uk/catalyst/
 Shadowcat Systems Ltd.  Christmas fun in collectable card game form -
                           http://www.shadowcat.co.uk/resources/2007_trading/



More information about the DBIx-Class mailing list