Reading multiple indices on MagmaCollections
Brent Pinkney
brent.pinkney at aircom.co.za
Thu Apr 6 07:43:10 UTC 2006
Hi,
> Hi Brent, in fact, I've been thinking about this very problem lately.
> This work is critical for Lava and extremely useful for plain Magma
> programs too. Yes, I'll help out.
It is critical for Lava but I really need it for a plain of Magma programme.
> Just for clarity and context, the full series of conversions from SQL
> to LavaResultTable is, (please fill in as necessary):
SQL parse --> Abstract Syntax Tree (AST)
AST + Schema analysis --> Canonical Syntax Tree (CST)
CST + Schema optimisation --> Optimised Syntax Tree (OST) - optional step
OST/CST generation --> Smalltalk code
Smalltalk code compile --> Smalltalk classes + methods (processor)
processor + session execute --> result
> Wow.
It is not so scary in baby-steps. The real problem is how poor SQL is as a
language: big, ambiguous, and hard to parse.
> Since you've got Lava, I guess most of this work is concentrated
> between ?? and creation of the temporary "result" MaHashIndex.
I think we will get a better solution if we focus just on plain Magma with one
eye open to Lava. It is however useful to start from a SQL query as it is a
well understood point of departure.
> - deciding the best client API's
> - generation of the clause-tree
> - parsing the clause-tree
> - enhnancing MaHashIndex to quickly conjunct
> - efficiently providing a Reader that can page through the result set
Agreed
> Please fill in anything I've forgotten. How would you like to tackle?
> Will your actual Lava code-generation be affected by the API's that
> create the clause-tree? Hopefully not.
The LaOptimiser just emits the appropriate Smalltalk during this phase. This
really is not a problem.
> I have an idea for the backend work needed on the MaHashIndexes. I
> haven't tried to implement it yet, but will post my notes separately
> that you or anyone may comment.
Ok - I have some initial ideas on the client api. I will send them in a
separate message.
Brent
More information about the Magma
mailing list