Обсуждение: Detecting query timeouts properly

Поиск
Список
Период
Сортировка

Detecting query timeouts properly

От
Evan Martin
Дата:
Hello,

I'm using PostgreSQL 9.2.8 via Npgsql 2.2.0. When a query times out it
returns error 57014 with the message "canceling statement due to
statement timeout". I use the message to detect the timeout and re-try
in some cases. It seems a bit wrong to rely on the message, though - I
presume the message text is subject to change between releases. Is there
a better way? I cannot just rely on code 57014, because the same code is
used when the user cancels the query (eg. from pgAdmin), in which case I
don't want to re-try.

Regards,

Evan


Re: Detecting query timeouts properly

От
Albe Laurenz
Дата:
Evan Martin wrote:
> I'm using PostgreSQL 9.2.8 via Npgsql 2.2.0. When a query times out it
> returns error 57014 with the message "canceling statement due to
> statement timeout". I use the message to detect the timeout and re-try
> in some cases. It seems a bit wrong to rely on the message, though - I
> presume the message text is subject to change between releases. Is there
> a better way? I cannot just rely on code 57014, because the same code is
> used when the user cancels the query (eg. from pgAdmin), in which case I
> don't want to re-try.

I don't think that there is a good way to disambiguate that, and I agree
that parsing the error message text is not a very robust solution.

Is it really necessary to bother with the case that a statement is
explicitly canceled?  That should not happen too often, and if you have
statement_timeout set to non-zero, queries should not "hang" indefinitely
long anyway, right?

Yours
Laurenz Albe