[pgpool-committers: 4226] pgpool: Fix ancient bug of stream write modules.
Tatsuo Ishii
ishii at postgresql.org
Tue Aug 29 16:08:50 JST 2017
Fix ancient bug of stream write modules.
- Fix bug with pool_write_noerror() when requested length exceeds
remaining write buffer size. This could lead to a buffer overrun
problem, which has not been reported in the field as far as I know
though.
- When write buffer is full, pool_flush_it() is called, which could
write data to socket in the middle of message. I found this by using
following pgproto data. To fix the problem directly write requested
data if the write buffer is going to be full.
'P' "" "SELECT * FROM pgbench_accounts LIMIT 100" 0
'B' "" "" 0 0 0
'E' "" 0
'S'
'Y'
'X'
- Enhance performance of pool_unread(). When retrieving large number
of rows in streaming replication and extended query, pool_unread is
very slow because it needs to memmove large number of bytes in the
read buffer. This happens in read_kind_from_backend() since it uses
pool_unread() to check 'A' packet. To optimize the situation, modify
pool_unread(). If there's enough room in front of cp->po, copies the
data there to avoid memmove.
Branch
------
V3_5_STABLE
Details
-------
https://git.postgresql.org/gitweb?p=pgpool2.git;a=commitdiff;h=e0d27bd148ba80a6b0c0c83210e74220de6b727e
Modified Files
--------------
src/utils/pool_stream.c | 148 +++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 140 insertions(+), 8 deletions(-)
More information about the pgpool-committers
mailing list