172 похожих чатов

Create table main_parent(   id int ) partition by range (id); create table

parent_01_10 partition of main_parent for values from (0) to (10) partition by list (id);
create table parent_10_20 partition of main_parent for values from (10) to (20) partition by list (id);
create table parent_20_30 partition of main_parent for values from (20) to (30) partition by list (id);

create table parent_01 partition of parent_01_10 for values in (1);
create table parent_11 partition of parent_10_20 for values in (11);
create table parent_21 partition of parent_20_30 for values in (21);


with recursive src as (
  select t.inhparent::regclass, t.inhrelid::regclass
  from pg_catalog.pg_inherits t
  where t.inhparent = 'main_parent'::regclass
  union all
  select t.inhparent::regclass, t.inhrelid::regclass
  from pg_catalog.pg_inherits t join src on t.inhparent = src.inhrelid
)
select src.*, c.relkind, s.*
from src
join pg_class c on c.oid = src.inhrelid
left join lateral (select * from pgstattuple_approx(src.inhrelid) where c.relkind != 'p' offset 0) s on c.relkind != 'p'
а почему тут без offset 0 не работает? это баг или фича?

https://dbfiddle.uk/Cas7B80n

2 ответов

17 просмотров
S-B Автор вопроса

наверно всё же фича, ничто же не запрещает postgres переносить условие из подзапроса в join

Похоже, что функция из pgstattuple сходит с ума, когда пытается примениться на пустом сете внутри lateral join Можно вместо offset 0 написать offset null или limit 1, тоже работает. Это точно не задокументированное поведение, так что больше похоже на плохую совместимость этой функции из расширения с планировщиком при использовании lateral join. А костыль с offset/limit просто меняет разбор запроса, план иначе строится и выполняется

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта