Why not sub-selects in targetlists?

Started by Tom Laneover 26 years ago3 messages
#1Tom Lane
tgl@sss.pgh.pa.us

For some reason we currently support sub-SELECT expressions only
in WHERE and HAVING clauses, not in the target list of a SELECT.
Does anyone know why this is?

There are a number of places in the planner/optimizer that would need
to be fixed to make it happen, but the changes are utterly trivial
(calling certain transformation routines on the targetlist as well as
for WHERE and HAVING ... probably about a dozen lines total ...).
And a quick look at the executor doesn't show any reason why it would
have a problem, either. Is there something fundamental that I'm
missing? If not, why wasn't this done to begin with?

regards, tom lane

#2Vadim Mikheev
vadim@krs.ru
In reply to: Tom Lane (#1)
Re: [HACKERS] Why not sub-selects in targetlists?

Tom Lane wrote:

For some reason we currently support sub-SELECT expressions only
in WHERE and HAVING clauses, not in the target list of a SELECT.
Does anyone know why this is?

There are a number of places in the planner/optimizer that would need
to be fixed to make it happen, but the changes are utterly trivial
(calling certain transformation routines on the targetlist as well as
for WHERE and HAVING ... probably about a dozen lines total ...).
And a quick look at the executor doesn't show any reason why it would
have a problem, either. Is there something fundamental that I'm
missing? If not, why wasn't this done to begin with?

As usual, I just hadn't time to do more than it's done for
6.3.X -:) Subselects were not in my TODO list, I made base
implementation because of there were many requests for them.

BTW, please don't forget subselects in FROM.

Vadim

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Vadim Mikheev (#2)
Re: [HACKERS] Why not sub-selects in targetlists?

Vadim Mikheev <vadim@krs.ru> writes:

Tom Lane wrote:

For some reason we currently support sub-SELECT expressions only
in WHERE and HAVING clauses, not in the target list of a SELECT.
Does anyone know why this is?

As usual, I just hadn't time to do more than it's done for
6.3.X -:) Subselects were not in my TODO list, I made base
implementation because of there were many requests for them.

OK, I'll see about adding the missing transformations in the
planner. Shouldn't be hard.

BTW, please don't forget subselects in FROM.

That seems to be a considerably bigger task :-(

regards, tom lane