/
TODO
29 lines (25 loc) · 1.36 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
* Replace some of the conditional function with polymorphism, especially
where there is special case function for certain types of generators
within other generators.
* Replace Equality/Inequality with classes that handle all of the
special cases.
* Use different classes for inclusive/exclusive Range literals so that
they can be serialized to SQL differently.
* Create Veritas::Literal::Range proxy object w/factory method
* Create Veritas::Literal::Range::Inclusive
* Create Veritas::Literal::Range::Exclusive
* Handle cases where an Inequality/Exclusion predicate is used (or a
Negation wrapping an Equality/Inclusion) on an *optional* attribute.
* Add "OR attribute IS NULL" to the statement to ensure cases when
the value is NULL still matches.
* Handle cases where WHERE clause does and does not reference a function
in the SELECT list.
* It should collapse the inner subquery when there is no reference, and
keep the subquery when it is referenced.
* This will likely apply to projection and rename operators too.
* When Restriction wraps a Summarization, and it would normally wrap the
statement and apply a WHERE clause, it should apply the clause using
HAVING instead.
* Handle case where Extension does not reference a column in the
wrapped Summarization or Rename. It should be safe to collapse the query
in those cases.