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 ответов

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

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

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

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

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

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
22
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Всем привет! Использую gitlab-ci. Настроил gitlab-agent для деплоя в куб. При деплое проекта в логах такая ошибка: Executing deploy plan failed to watch "ns:my-project/Ingress...
Konstantin Moiseev
4
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Народ всем привет Подскажите, как включить самописные dll библиотеки в итоговую сборку Сейчас при запуске dev сервера локально формируется папка build, из которой запускается...
Андрей
4
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Комрады, подскажите, в дельфях есть компоненты а-ля TDirectorySelect?
Ed Doc
15
Карта сайта