[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