Fix memory leak when query cache enabled in streaming replication mode + extended...
authorTatsuo Ishii <ishii@sraoss.co.jp>
Thu, 11 Oct 2018 08:52:57 +0000 (17:52 +0900)
committerTatsuo Ishii <ishii@sraoss.co.jp>
Thu, 11 Oct 2018 08:52:57 +0000 (17:52 +0900)
commitf81b8f198fde1f1ba1758d7e6f70eddb7b8bbf8e
tree2930b4c58de3f3dd2d783228adbf696bed9f51e9
parentf9330c2c8d4a36a7539ba04b8e14adff750caaec
Fix memory leak when query cache enabled in streaming replication mode + extended query case.

If BEGIN is executed in extended protocol, allocated temp buffer for
the command never discarded.  This is because in streaming replication
mode + extended query case, when handle_query_cache gets called at the
command complete timing, the reference counter to query context is not
0, which in turn prevents from calling
pool_discard_temp_query_cache().

In reality, we don't need to care about the query context here, so
let's proceed in streaming replication mode + extended query case.

Note that the memory leak case can be easily reproduced by "pgbench -M
extended" command (standard TPC-B).
src/query_cache/pool_memqcache.c