Re: pgsql: Fix several mistakes around parallel workers and client_encoding

Поиск
Список
Период
Сортировка
От Robert Haas
Тема Re: pgsql: Fix several mistakes around parallel workers and client_encoding
Дата
Msg-id E5094B99-E083-480F-9E0D-8C4AF688184A@gmail.com
обсуждение исходный текст
Ответ на pgsql: Fix several mistakes around parallel workers and client_encoding  (Robert Haas <rhaas@postgresql.org>)
Список pgsql-committers
Actually, a significant part of this was derived from Peter's patch. I should have credited him as a co-author as well
asa reviewer. I apologize for the oversight. 

...Robert

> On Jun 30, 2016, at 6:46 PM, Robert Haas <rhaas@postgresql.org> wrote:
>
> Fix several mistakes around parallel workers and client_encoding.
>
> Previously, workers sent data to the leader using the client encoding.
> That mostly worked, but the leader the converted the data back to the
> server encoding.  Since not all encoding conversions are reversible,
> that could provoke failures.  Fix by using the database encoding for
> all communication between worker and leader.
>
> Also, while temporary changes to GUC settings, as from the SET clause
> of a function, are in general OK for parallel query, changing
> client_encoding this way inside of a parallel worker is not OK.
> Previously, that would have confused the leader; with these changes,
> it would not confuse the leader, but it wouldn't do anything either.
> So refuse such changes in parallel workers.
>
> Also, the previous code naively assumed that when it received a
> NotifyResonse from the worker, it could pass that directly back to the
> user.  But now that worker-to-leader communication always uses the
> database encoding, that's clearly no longer correct - though,
> actually, the old way was always broken for V2 clients.  So
> disassemble and reconstitute the message instead.
>
> Issues reported by Peter Eisentraut.  Patch by me, reviewed by
> Peter Eisentraut.
>
> Branch
> ------
> master
>
> Details
> -------
> http://git.postgresql.org/pg/commitdiff/10c0558ffefcd12bf1d3dc35587eba41d1ce4571
>
> Modified Files
> --------------
> src/backend/access/transam/parallel.c | 18 +++++++++++++++++-
> src/backend/commands/async.c          |  5 +----
> src/backend/commands/variable.c       | 24 ++++++++++++++++++++++++
> src/backend/libpq/pqformat.c          | 30 ++++++++++++++++++++++++++++++
> src/backend/libpq/pqmq.c              |  2 +-
> src/include/commands/async.h          |  4 ++++
> src/include/libpq/pqformat.h          |  1 +
> 7 files changed, 78 insertions(+), 6 deletions(-)
>
>
> --
> Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-committers


В списке pgsql-committers по дате отправления:

Предыдущее
От: Robert Haas
Дата:
Сообщение: pgsql: Fix several mistakes around parallel workers and client_encoding
Следующее
От: Noah Misch
Дата:
Сообщение: Re: pgsql: Avoid extra locks in GetSnapshotData if old_snapshot_threshold <