Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / statement_timeout в текущей транзакции / 12 сообщений из 12, страница 1 из 1
20.11.2017, 15:10
    #39556225
Gold_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
statement_timeout в текущей транзакции
Добрый день.

Какой из запросов упадет по 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
20.11.2017, 15:27
    #39556247
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
statement_timeout в текущей транзакции
Gold_,

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

эээ
а у Вас
SELECT current_setting('statement_timeout');
по-умолчанию меньше 2 сек?
...
Рейтинг: 0 / 0
20.11.2017, 15:52
    #39556267
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
statement_timeout в текущей транзакции
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
20.11.2017, 15:57
    #39556273
Gold_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
statement_timeout в текущей транзакции
Maxim Boguk,

нет - напрямую.
...
Рейтинг: 0 / 0
20.11.2017, 16:13
    #39556287
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
statement_timeout в текущей транзакции
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
20.11.2017, 16:23
    #39556296
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
statement_timeout в текущей транзакции
Melkij,

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

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

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

спасибо!
то что так надо я понял, но вот поведение ИМХО - чудноватое.
...
Рейтинг: 0 / 0
20.11.2017, 16:48
    #39556319
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
statement_timeout в текущей транзакции
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
20.11.2017, 17:06
    #39556326
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
statement_timeout в текущей транзакции
Gold_,

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

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

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

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

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


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

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


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