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

Всем привет) Может кто подсказать, как можно создать индексы на

партиционируемой таблице (конкурентно) не зная имен партиций?
Т.е. партиции живут своей жизнь, бизнес логика иногда создает новые, старые удаляет. Из-за этого не получится сделать миграцию, где я пропишу партиции по конкретным именам для создания индекса сначала конкурентно на них а потом на мастер таблице.
А создавать индекс не конкурентно на всей таблице не хочется из-за локов в проде(

5 ответов

31 просмотр

почему не по всем? какая в этом логика? и причем тут логи на проде?

Ilia-Pisanyi🐳 Автор вопроса
Alexey Bulgakov
почему не по всем? какая в этом логика? и причем т...

Нужны на всех партициях. Не логи а локи, исправил) Думал сделать в функции plpgsql но они транзакционные и конкурентно создавать индексы не получится. Цель - создать индексы на всех партициях не зная их имен конкурентно

Ilia Pisanyi🐳
Нужны на всех партициях. Не логи а локи, исправил)...

не надо знать их имена. можно найти имена всех партиций и динамически сформировать create index

Ilia-Pisanyi🐳 Автор вопроса
Alexey Bulgakov
не надо знать их имена. можно найти имена всех пар...

Не понял как. Найти имена всех партиций через pg_inherits? Для этого нужна функция а она транзакционная. Другого способа я не знаю(

Ilia Pisanyi🐳
Не понял как. Найти имена всех партиций через pg_i...

у меня сделано так... CREATE OR REPLACE VIEW ibt_processing.v_partitions AS SELECT tbl.sch_name, tbl.tbl_name, tbl.borders[1]::timestamp with time zone AS range1, tbl.borders[2]::timestamp with time zone AS range2 FROM ( SELECT pt.sch_name, pt.tbl_name, regexp_match(pg_get_expr(c1.relpartbound, c1.oid), 'FOR VALUES FROM \(''(\d\d\d\d-\d\d-\d\d.*)''\) '::text || 'TO \(''(\d\d\d\d-\d\d-\d\d.*)''\)'::text) AS borders FROM ibt_processing.part_tables pt JOIN pg_class c2 ON pt.tbl_name::text = c2.relname AND c2.relkind = 'p'::"char" JOIN pg_inherits i ON c2.oid = i.inhparent JOIN pg_class c1 ON i.inhrelid = c1.oid AND c1.relpartbound IS NOT NULL JOIN pg_namespace n ON c1.relnamespace = n.oid AND pt.sch_name::text = n.nspname) tbl;

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

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

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...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
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
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта