powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / statement_timeout в текущей транзакции
12 сообщений из 12, страница 1 из 1
statement_timeout в текущей транзакции
    #39556225
Gold_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Какой из запросов упадет по timeout?

Код: sql
1.
2.
3.
4.
begin;
	set session statement_timeout  to '2s';
	SELECT pg_sleep(5);
commit;



Код: sql
1.
2.
3.
4.
begin;
	set  local statement_timeout  to '2s';
	SELECT pg_sleep(5);
commit;



А если выполнить еще раз? )
Так и должно быть? )

Спасибо за ответы.
...
Рейтинг: 0 / 0
statement_timeout в текущей транзакции
    #39556247
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gold_,

так оба же и отстреливаются, как и запланировано. И на повторном вызове ничего не меняется.
...
Рейтинг: 0 / 0
statement_timeout в текущей транзакции
    #39556252
Gold_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,

эээ
а у Вас
SELECT current_setting('statement_timeout');
по-умолчанию меньше 2 сек?
...
Рейтинг: 0 / 0
statement_timeout в текущей транзакции
    #39556267
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gold_Добрый день.

Какой из запросов упадет по timeout?

Код: sql
1.
2.
3.
4.
begin;
	set session statement_timeout  to '2s';
	SELECT pg_sleep(5);
commit;



Код: sql
1.
2.
3.
4.
begin;
	set  local statement_timeout  to '2s';
	SELECT pg_sleep(5);
commit;



А если выполнить еще раз? )
Так и должно быть? )

Спасибо за ответы.

А вы случайно не через pgbouncer в transaction pooling mode пробуете? Так как transaction pooling + set session - вам скучно не будет (кратко - он не работает... подробно - работает но не так как хотите).
...
Рейтинг: 0 / 0
statement_timeout в текущей транзакции
    #39556273
Gold_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

нет - напрямую.
...
Рейтинг: 0 / 0
statement_timeout в текущей транзакции
    #39556287
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gold_Melkij,

эээ
а у Вас
SELECT current_setting('statement_timeout');
по-умолчанию меньше 2 сек?
Выключен, т.е. 0.
И если он по-умолчанию стоит меньше - это же не помешает его изменить.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
postgres=# reset statement_timeout ;
RESET
postgres=# show statement_timeout ;
 statement_timeout 
-------------------
 0
(1 строка)

postgres=# begin;
BEGIN
postgres=# set session statement_timeout  to '2s';
SET
postgres=# SELECT pg_sleep(5);
ERROR:  canceling statement due to statement timeout
postgres=# commit;
ROLLBACK
postgres=# begin;
BEGIN
postgres=# set  local statement_timeout  to '2s';
SET
postgres=# SELECT pg_sleep(5);
ERROR:  canceling statement due to statement timeout
postgres=# commit;
ROLLBACK
postgres=# begin;
BEGIN
postgres=# set session statement_timeout  to '2s';
SET
postgres=# SELECT pg_sleep(5);
ERROR:  canceling statement due to statement timeout
postgres=# commit;
ROLLBACK
postgres=# begin;
BEGIN
postgres=# set  local statement_timeout  to '2s';
SET
postgres=# SELECT pg_sleep(5);
ERROR:  canceling statement due to statement timeout
postgres=# commit;
ROLLBACK
postgres=# select version();
                                         version                                          
------------------------------------------------------------------------------------------
 PostgreSQL 9.6.6 on x86_64-pc-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit
(1 строка)

postgres=# 
Вполне ожидаемое поведение, сюрпризов не наблюдаю.
...
Рейтинг: 0 / 0
statement_timeout в текущей транзакции
    #39556296
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkij,

а вы батчами, батчами, а не постейтментнто. оно ещё как--то специально называется. там интересно бывает.

2ТС -- оно всегда так было. таймаут устанавливался только к концу батча стейтментов, в котором устанавливался. даже помнится с ф--ей был какой--то затыцк. но тут могу врать.

посылайте батч так :
Код: sql
1.
begin;set session statement_timeout  to '2s';commit;SELECT pg_sleep(5);
...
Рейтинг: 0 / 0
statement_timeout в текущей транзакции
    #39556316
Gold_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwwq,

спасибо!
то что так надо я понял, но вот поведение ИМХО - чудноватое.
...
Рейтинг: 0 / 0
statement_timeout в текущей транзакции
    #39556319
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,

в psql настоящие мультистейтменты не получаются. у меня. но кое что можно нащупать:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
postgres=# show statement_timeout; statement_timeout 
-------------------
 0
(1 row)

postgres=# do $$ begin set session statement_timeout  to '2s';PERFORM  pg_sleep(5);end;$$;
DO
postgres=# begin;set session statement_timeout  to '2s';SELECT pg_sleep(5);commit;
BEGIN
SET
ERROR:  canceling statement due to statement timeout
ROLLBACK
postgres=# 


т.е. в DO он не успел установиться. а "мультибатч" не работает как настоящий.
...
Рейтинг: 0 / 0
statement_timeout в текущей транзакции
    #39556326
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gold_,

Установка параметров - транзакционная.
Если транзакция завершается откатом, то отменяется и установка SET.

Вполне логичное поведение.
...
Рейтинг: 0 / 0
statement_timeout в текущей транзакции
    #39556327
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gold_qwwq,

спасибо!
то что так надо я понял, но вот поведение ИМХО - чудноватое.когда с разбега на такое напарываешься -- то да, неожиданности полные штаны.

а сам по себе мультистейтмент -- весьма и весьма полезная штука, если инжектируемый код не писать.
...
Рейтинг: 0 / 0
statement_timeout в текущей транзакции
    #39557121
Gold_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,

На что "жалуюсь" лучше меня описал qwwq и способ решение,
чтобы повторить нужен клиент, умеющий проигрывать "мультистейтмент" (PgAdmin подходит)


Павел Лузанов ,
то что Вы написали не вызывает сомнений, но я о другом.

qwwq,
Еще раз спасибо!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / statement_timeout в текущей транзакции
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]