*** pgsql/src/backend/optimizer/README 2007/10/26 18:10:50 1.41 --- pgsql/src/backend/optimizer/README 2009/09/29 01:21:02 1.41.2.1 *************** operator is mergejoinable, so there is n *** 467,473 **** get into EquivalenceClasses otherwise. Aggregates are disallowed in WHERE altogether, so will never be found in a mergejoinable clause.) This is just a convenience to maintain a uniform PathKey representation: such an ! EquivalenceClass will never be merged with any other. An EquivalenceClass also contains a list of btree opfamily OIDs, which determines what the equalities it represents actually "mean". All the --- 467,476 ---- get into EquivalenceClasses otherwise. Aggregates are disallowed in WHERE altogether, so will never be found in a mergejoinable clause.) This is just a convenience to maintain a uniform PathKey representation: such an ! EquivalenceClass will never be merged with any other. Note in particular ! that a single-item EquivalenceClass {a.x} is *not* meant to imply an ! assertion that a.x = a.x; the practical effect of this is that a.x could ! be NULL. An EquivalenceClass also contains a list of btree opfamily OIDs, which determines what the equalities it represents actually "mean". All the