On 12 April 2018 at 18:26, Darafei "Komяpa" Praliaskouski <m...@komzpa.net> wrote: > Hi, > > psql (PostgreSQL) 10.3 > > Here are the steps to reproduce a leak: > > 1. connect to 10.3 server, perform the query similar to: > > select 'message' || generate_series(1,1000000000); > > 2. monitoring psql memory usage in htop or similar tool, press ctrl+c at > some point where you can clearly distinguish a psql with a big allocated > buffer from psql without it. > > 3. see the query cancelled, but psql memory usage stays the same. > > This is especially painful when query you're debugging has a runaway join > condition, and you understand it only after it doesn't return in seconds as > you've expected. > > Is it expected behavior (so I can have a look at something server returned > somehow and it's kept there for me), or a plain leak?
This is totally normal behaviour for any C program. It's part of why systems should have swap space. But it's generally fairly harmless, as it's uncommon for apps to make huge allocations only once then stay running with low memory use thereafter. It would potentially be a leak if doing the same thing repeatedly led to repeated growth. -- Craig Ringer http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services