On 24.09.2013 14:42, [email protected] wrote:
CREATE INDEX ON tstzrange fail on 9.3.0 and 9.2.4 - default postgres configuration. It ate whole memory and was killed by oom.Example: postgres=# CREATE TABLE range_test AS SELECT tstzrange(t, t+'1min') tr FROM generate_series('2000-1-1'::TIMESTAMPTZ, '2010-1-1'::TIMESTAMPTZ, '1min') AS t1(t); SELECT 5260321 postgres=# CREATE INDEX ON range_test(tr); WARNING: terminating connection because of crash of another server process DETAIL: The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory. HINT: In a moment you should be able to reconnect to the database and repeat your command. The connection to the server was lost. Attempting reset: Failed.
A-ha, the comparison function of range datatypes, range_cmp(), detoasts its arguments, but fails to free the detoasted copies. Functions are normally not required to free such temporary copies - the memory is usually leaked into a short-lived memory context that will be quickly free'd anyway - but B-tree comparison operators are expected to not leak.
Committed a fix, it will appear in the next minor releases. Thanks for the report!
- Heikki -- Sent via pgsql-bugs mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs
