More findings: JdbcJoin.getRows diverges from Join.getRows, so EnumerableJoin has different cost from JdbcJoin.
org.apache.calcite.rel.core.Project#computeSelfCost uses dRows * exps.size() in the CPU part of the cost, however VolcanoPlanner just ignores CPU part of the cost. We might want start adding "per cell" cost cpu factor, so the cost of project would be nRows + nRows*nExps*per_cell_cost_factor Vladimir
