[TransWarp] Topics for tomorrow, and beyond
Phillip J. Eby
pje at telecommunity.com
Wed Oct 15 23:53:29 EDT 2003
These are just notes to myself on things yet to be written in the querying
saga...
Packaging
Should we have a peak.query? this is likely to be multiple modules:
filter operators
relational operators
lots of interfaces
query execution for Plain Ol' Python Objects
maybe C speedups for the preceding, at some point
"User-friendly" Query Syntax
Foo.where() doesn't look right any more
No aggregate syntax yet
How to specify functions?
Maybe we need an actual query "language"?
Benefit: *much* easier syntax for everything
functions, logical ops, and comparisons are trivial to write
easier to declare parameters and variables
other shortcuts possible
Minus: More time to implement!
Minus: queries have no meaning without an environment
(to define base sets, functions)
Minus: literals & type conversions annoying to implement
Syntax
Not OQL, it's as hard to use as SQL
(But it's a standard...)
ConQuer-like conceptual approach would be nice
...but too English-like for our needs
Join operators
Theta join (standard)
Outer join, Existence join (what's the associativity of these?)
Aggregates - how to specify, fold?
Constant folding to remove outer joined tables by relocating
criteria to base table
Filter operators
Aggregates - no syntax yet
IN()
map to set of OR()'s for constant sequence
EXISTS join for correlation parameter or subexpression
what do we do if parameter is input? SQL generation will suck
subexpression for IN() would need a way to create a table alias
(probably better just to use correlation)
NOT()
what happens to traversals underneath?
force not_exists join?
that would mean no output parameters allowed
What happens to an OR() that contains traversals?
Should an outer-join be forced? How?
How does this affect folding of outer joins?
Haven't specified auto-EXISTS semantics fully under latest paradigm
Need a traverser interface
Architecture for filter execution with actual result generation
(i.e. filters should be applicable to regular objects w/out
a relational conversion, and still output any aggregates,
correlations, etc.)
SQL Generation
...and cross-database joins
More information about the PEAK
mailing list