Fix for memory leak in dblink

From: Takahiro Itagaki <itagaki(dot)takahiro(at)oss(dot)ntt(dot)co(dot)jp>
To: pgsql-hackers(at)postgresql(dot)org
Subject: Fix for memory leak in dblink
Date: 2010-01-12 03:43:00
Message-ID: 20100112124300.C520.52131E4D@oss.ntt.co.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

There is a memory leak in dblink when we cancel a query during
returning tuples. It could leak a PGresult because memory used
by it is not palloc'ed one. I wrote a patch[1] before, but I've
badly used global variables to track the resource.

The attached is a cleaned up patch rewritten to use a tuplestore
(SFRM_Materialize mode) to return tuples suggested at [2]. Since
we don't return from the dblink function in tuplestore mode, we
can surely release the PGresult with a PG_CATCH block even on error.

Also, dblink_record_internal() and dblink_fetch() are rearranged
to share the same code to return tuples for code refactoring.

[1] http://archives.postgresql.org/pgsql-hackers/2009-06/msg01358.php
[2] http://archives.postgresql.org/pgsql-hackers/2009-10/msg00292.php

Regards,
---
Takahiro Itagaki
NTT Open Source Software Center

Attachment Content-Type Size
dblink-memleak_20100112.patch application/octet-stream 19.8 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Fujii Masao 2010-01-12 03:45:41 Re: Streaming replication status
Previous Message Merlin Moncure 2010-01-12 03:39:14 Re: Compression Library and Usages