Re: Removing unneeded self joins

Поиск
Список
Период
Сортировка
От Alexander Lakhin
Тема Re: Removing unneeded self joins
Дата
Msg-id 0ed2cf02-e655-6ec7-a4fe-52fd8d572f65@gmail.com
обсуждение исходный текст
Ответ на Re: Removing unneeded self joins  (Alexander Korotkov <aekorotkov@gmail.com>)
Ответы Re: Removing unneeded self joins  (Alexander Korotkov <aekorotkov@gmail.com>)
Re: Removing unneeded self joins  (Alexander Korotkov <aekorotkov@gmail.com>)
Список pgsql-hackers
Hello Alexander,

23.10.2023 12:47, Alexander Korotkov wrote:
> I think this patch makes substantial improvement to query planning.
> It has received plenty of reviews.  The code is currently in quite
> good shape.  I didn't manage to find the cases when this optimization
> causes significant overhead to planning time.  Even if such cases will
> be spotted there is a GUC option to disable this feature.  So, I'll
> push this if there are no objections.

I've discovered another failure, introduced by d3d55ce57.
Please try the following:
CREATE TABLE t (a int unique, b float);
SELECT * FROM t NATURAL JOIN LATERAL
  (SELECT * FROM t t2 TABLESAMPLE SYSTEM (t.b)) t2;

With asserts enabled, it triggers
TRAP: failed Assert("!bms_is_member(rti, lateral_relids)"), File: "initsplan.c", Line: 697, PID: 3074054
ExceptionalCondition at assert.c:52:13
create_lateral_join_info at initsplan.c:700:8
query_planner at planmain.c:257:2
grouping_planner at planner.c:1523:17
subquery_planner at planner.c:1098:2
standard_planner at planner.c:415:9
planner at planner.c:282:12
pg_plan_query at postgres.c:904:9
pg_plan_queries at postgres.c:996:11
exec_simple_query at postgres.c:1193:19
PostgresMain at postgres.c:4684:27

With no asserts, I get:
ERROR:  failed to construct the join relation

Please take a look at this.

Best regards,
Alexander



В списке pgsql-hackers по дате отправления:

Предыдущее
От: "David G. Johnston"
Дата:
Сообщение: Re: DROP OWNED BY fails to clean out pg_init_privs grants
Следующее
От: Ashutosh Bapat
Дата:
Сообщение: Re: tablecmds.c/MergeAttributes() cleanup