23 lines
1.8 KiB
Markdown
23 lines
1.8 KiB
Markdown
Базовый пример установки хука на `ExecutorEnd_hook`. Для наглядности в примере сразу вызывается сбой после завершения выполнения любого запроса.
|
||
Как выглядит работа:
|
||
```sql
|
||
psql (13.15)
|
||
Type "help" for help.
|
||
|
||
pqddlread=# create extension pqddlread;
|
||
CREATE EXTENSION
|
||
pqddlread=# -- Хук пока не установлен, все запросы выполняются.
|
||
pqddlread=# select 1;
|
||
?column?
|
||
----------
|
||
1
|
||
(1 row)
|
||
|
||
pqddlread=# -- Устанавливаем хук. Он сразу же заработает т.к. на момент завершения вызова функции хук уже стоит.
|
||
pqddlread=# select pqddlread();
|
||
ERROR: This panic indicates that hook was called successfully. Last query info: QueryDesc { operation: 1, plannedstmt: 0x5f9ec2a32650, sourceText: 0x5f9ec2958740, snapshot: 0x5f9ec29df648, crosscheck_snapshot: 0x0, dest: 0x5f9ec2a327c0, params: 0x0, queryEnv: 0x0, instrument_options: 0, tupDesc: 0x5f9ec2a2c3b0, estate: 0x5f9ec2a2bf70, planstate: 0x5f9ec2a2c1a8, already_executed: true, totaltime: 0x0 }
|
||
pqddlread=# -- Теперь ВСЕ запросы сломаны :)
|
||
pqddlread=# select 1;
|
||
ERROR: This panic indicates that hook was called successfully. Last query info: QueryDesc { operation: 1, plannedstmt: 0x5f9ec2a32458, sourceText: 0x5f9ec2958740, snapshot: 0x5f9ec2a1c868, crosscheck_snapshot: 0x0, dest: 0x5f9ec2a325c8, params: 0x0, queryEnv: 0x0, instrument_options: 0, tupDesc: 0x5f9ec29dfa50, estate: 0x5f9ec29df610, planstate: 0x5f9ec29df848, already_executed: true, totaltime: 0x0 }
|
||
pqddlread=# -- Хук выводит всю информацию о запросе. Мы можем делать с ней что угодно.
|
||
``` |