Search Postgresql Archives

Re: PostgreSQL : error hint for LATERAL join

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



PALAYRET Jacques <jacques.palayret@xxxxxxxx> writes:
> For me, one of the two following things should be true : either the hint (in case of a lateral error) is incomplete or the possibility of " cross join lateral " should be removed. 

The reason the hint is worded the way it is is a practical one: the other
possibilities are not drop-in syntactic replacements.

Given

	CREATE TABLE t (x float8);

all five of these are syntactically legal (with or without the
implied LATERAL):

	SELECT * FROM t, sin(x);
	SELECT * FROM t CROSS JOIN sin(x);
	SELECT * FROM t JOIN sin(x) ON true;
	SELECT * FROM t INNER JOIN sin(x) ON true;
	SELECT * FROM t LEFT JOIN sin(x) ON true;

The only way to get to the error in question is to write something
like

	SELECT * FROM t FULL JOIN sin(x) ON true;

If that's what you have, then changing FULL to INNER or LEFT will
produce a syntactically legal query; changing it to CROSS will not
unless you make additional changes (which'd be hard if the ON
condition were nontrivial).

Also, if we were trying to be completionist, we'd have to somehow
work in the comma and implicit-INNER syntaxes, which would surely
make the hint a confusing mess.

Another way to look at it is that there are only two allowed
semantic behaviors here: INNER and LEFT joins.  The fact that
there's more than one way to spell an inner join is a historical
accident.

			regards, tom lane






[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux