Given: create
table t1 ( c1 timestamp without time zone, c2 int ); explain
verbose select to_char ( c1, ‘<whatever>’ ) from t1 group by
to_char ( c1, ‘<whatever>’ ); does any one know why the SEQSCAN node has TWO TARGETENTRYs? Why do we project “c1” as well as “to_char(
c1 … )” ? --- For cases where we compute an aggregate, such as: select
min(c1), to_char(c1,…) from t1 group by to_char( c1,…) it would make (some kind of) sense to project out “c1”. But can’t the planner/optimizer distinguish these
cases on the basis that ‘min’ is an aggregate function and ‘to_char’
is not? The planner seems to be computing a minimal target list of
columns (no expressions) first. Guess I’m asking why it isn’t
replaced. |