FarragoRelCleanup
From Eigenpedia
This is a list of proposed cleanups related to RelNodes:
- change all rels to do shallow-cloning only (meaning most rels can use the default Java clone impl)
- make all RexNodes hashable to improve rel metadata caching
- eliminate FennelRel abstract bases (e.g. FennelMultipleRel): eigenjira:FRG-104
- possibly controversial: eliminate RelNode.getRows and require that this be always implemented via RelMetadataQuery.getRowCount; in particular, clean up code to propagate null (unknown) rowcounts instead of making up bogus rowcounts; eigenjira:FRG-196
- possibly controversial: eliminate RelNode.computeSelfCost and require that this be always implemented via RelMetadataQuery.getNonCumulativeCost
- probably controversial: eliminate RelNode.getCollationList and require that this be always implemented via RelMetadataQuery.getCollationList
- deal with dangling bits left over from Saffron: eigenjira:FRG-13
- review correlation variables
- replace OneRowRel with ValuesRel
- eliminate the "all/distinct" flag on UnionRel
The following cleanups were completed as part of EigenbaseCodeReorg2008:
- refactor package org.eigenbase.rel; "primitives" produced by SqlToRelConverter (e.g. JoinRel)
go to new package org.eigenbase.rel.algebraremain; everything else (e.g. MergeCalcRule) goes to org.eigenbase.rel.rules - move Fennel-related subset of net.sf.farrago.query to new package net.sf.farrago.fennel.rel
- make rule singleton pattern consistent: eigenjira:FRG-105
- change AggregateRel explain to use MAX($1) instead of MAX(1)

