Actually, a significant part of this was derived from Peter's patch. I should 
have credited him as a co-author as well as a reviewer. I apologize for the 
oversight.

...Robert

> On Jun 30, 2016, at 6:46 PM, Robert Haas <[email protected]> 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 ([email protected])
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-committers


-- 
Sent via pgsql-committers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

Reply via email to