Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: 899465a463
Fetching contributors…

Cannot retrieve contributors at this time

55 lines (47 sloc) 2.39 kb
* Remove Order, Reverse, Limit and Offset from the Relation inheritance chain
* Instead make it so they are proxy classes that wrap Relations, but
proxy method calls to the Relation methods, and then wrap the return
value (assuming it's a Relation) in a copy of itself.
* Also this will allow knowledge of #directions to be removed from
all the Relation classes. Only the Ranking classes will need to know
about directions.
* The Reverse class will probably not be needed either. All we need is
for the #reverse method to create a new Order with the directions
reversed.
* Remove the knowledge of directions from materialized relations
and instead wrap materialized relations in the Order object
if any.
* Add Relation#group and Relation#ungroup
* Update Attributes so that constraints are modelled using predicates,
so that when "join-ability" is tested, the predicates can just be
compared for equality.
* Create an object that can wrap a predicate, and if it fails it will
set the object's error state, and then propagate the status to the
caller. This will allow a "complex" predicate to set the errors
on tuples, while still allowing all the same objects to be used.
* Update memoization to take into account the arguments passed into
the method. It should memoize differently for different
methods. Perhaps it could have a special case for methods
with a 0-arity vs n-arity methods, but it needs to handle cases
like with #hash that accept no args, and #optimize that accepts
1 arg.
* Add Relation#antijoin
* Allows "NOT EXISTS/IN" type queries to be executes where every tuple
from the relation is returned that *does not* join with the tuples in
the operand.
* Inclusion/Exclusion improvements:
* Allow attribute/function expressions to exist within the enumerable part
of the Inclusion and Exclusion operations
* The #call method should propagate the Tuple down to each callable entry
in the Enumerable.
* Within the restriction context, make sure the attributes have aliases for:
* Alias #== to #eq (may break alot)
* Alias #!= to #ne (in 1.9 only)
* Alias #>= to #gte
* Alias #> to #gt
* Alias #<= to #lte
* Alias #< to #lt
* Alias #=~ to #match
* Within the sort_by context, make sure the attributes have aliases for:
* Alias #@+ to #asc
* Alias #@- to #desc
Jump to Line
Something went wrong with that request. Please try again.