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

Всем привет! Вопрос по эксплэйн: подскажите, как сделать так, чтобы

эксплэйн по фукнции выводил работу, которую делают вложенные в неё функции? Вот набросал пример, как это должно работать:

create table test_plan_with_multifunction(id int );

create function f_test_plan_with_multifunction_1() returns int as $$
insert into mchist.test_plan_with_multifunction(id) values (1) returning id;
$$ language sql;

CREATE OR REPLACE FUNCTION f_test_plan_with_multifunction_2(integer)
RETURNS integer
LANGUAGE plpgsql
AS $function$
begin
if $1 < 10 then
insert into test_plan_with_multifunction(id) select mchist.f_test_plan_with_multifunction_2($1 + 1);
end if;
return $1 * f_test_plan_with_multifunction_1();
end $function$

Я делаю самый информативный эксплэйн:
explain (analyze, costs, buffers, verbose) select f_test_plan_with_multifunction_2(1)

Но он мне выдаёт только работу самой первой вызванной функции:
Result (cost=0.00..0.26 rows=1 width=4) (actual time=0.232..0.233 rows=1 loops=1)
Output: f_test_plan_with_multifunction_2(1)
Buffers: shared hit=9
Planning Time: 0.032 ms
Execution Time: 0.257 ms

Что хотелось бы на этом сферическом примере: увидеть вызов всех вложенных f_test_plan_with_multifunction_2, как добавляется запись в таблицу test_plan_with_multifunction_2 в результате их работы.
Также подлючил модуль auto_explain, проверил что появились его настройки, и выставил их:
SET auto_explain.log_nested_statements = ON;
SET auto_explain.log_min_duration = 0;
SET auto_explain.log_analyze = true;

2 ответов

20 просмотров

В EXPLAIN не будет, а вывод auto_explain ищите в логах (ну или в сессии — как уровень сообщений поставите).

max-chistyakov Автор вопроса
Yaroslav Schekin
В EXPLAIN не будет, а вывод auto_explain ищите в л...

Спасибо! это уже ближе к тому, что нужно :)

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
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
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
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
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта