On Tue, Jan 24, 2017 at 4:32 AM, Peter Moser <pitiz...@gmail.com> wrote: > NORMALIZE: splits all the ranges of one relation according to all the range > boundaries of another (but possibly the same) relation whenever some equality > condition over some given attributes is satisfied. > > When the two relations are the same, all ranges with the given equal > attributes > are either equal or disjoint. After this, the traditional GROUP BY or DISTINCT > can be applied. The attributes given to NORMALIZE for a (temporal) GROUP BY > are > the grouping attributes and for a (temporal) DISTINCT the target list > attributes. > > When the two relations are different, but they each contain disjoint ranges > for the same attributes (as the current limitation for the set operations is) > we perform a symmetric NORMALIZE on each of them. Then we have a similar > situation as before, i.e., in both relations ranges with the same attributes > are either equal or disjoint and a traditional set operation > (EXCEPT/INTERSECT/UNION) can be applied. The attributes given to NORMALIZE for > a (temporal) EXCEPT/INTERSECT/UNION are the target list attributes. > > > ALIGN: splits all the ranges of one relation according to all the range > intersections of another relation, i.e., it produces all intersections and > non-overlapping parts, whenever some condition is satisfied. > > We perform a symmetric ALIGN on each relation, after which a traditional inner > or outer join can be applied using equality on the ranges to calculate the > overlap. The condition given to a (temporal) inner or outer join is the > join condition without overlap.
I don't quite understand the difference between NORMALIZE and ALIGN. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers