Re: PostgreSQL : error hint for LATERAL join

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: PALAYRET Jacques <jacques(dot)palayret(at)meteo(dot)fr>
Cc: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>, pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: PostgreSQL : error hint for LATERAL join
Date: 2022-04-11 14:20:06
Message-ID: 267695.1649686806@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

PALAYRET Jacques <jacques(dot)palayret(at)meteo(dot)fr> 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

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message David G. Johnston 2022-04-11 16:05:31 Re: PostgreSQL : error hint for LATERAL join
Previous Message Pankaj Gupta 2022-04-11 13:00:57 DBlink extension and behavior of dblink_get_connections()