RE: Add function to release an allocated SQLDA - Mailing list pgsql-hackers
From | Kato, Sho |
---|---|
Subject | RE: Add function to release an allocated SQLDA |
Date | |
Msg-id | 25C1C6B2E7BE044889E4FE8643A58BA963A76A93@G01JPEXMBKW03 Whole thread Raw |
In response to | Re: Add function to release an allocated SQLDA (Thomas Munro <thomas.munro@enterprisedb.com>) |
Responses |
Re: Add function to release an allocated SQLDA
|
List | pgsql-hackers |
Hi Thomas Thank you for your reply. >This is not clear to me. ECPGfreeSQLDA() releases a whole chain, but >free() only releases a single SQLDA(), so they are obviously not interchangeable. When exactly should a user prefer oneover the other? If an application use FETCH ALL to get the result set at once, a user should use ECPGfreeSQLDA(). Because the user does not know that the SQLDA holds the result set in the chain. If it does not release it will remain leaked. Considering the use of people who know the structure of SQLDA, I described the releasing method using free () in the document. >If there is a good reason to free just one OR the whole chain, shouldn't we provide a way to do both of those things withoutthe user having to use libc free(), for the benefit of Windows users who can't safely use free()? I think so. Ok, The behavior when releasing one SQLDA with ECPGfreeSQLDA() is the same as free() and using free() is not safety for Windowsusers. So, how about trying to delete the release method using free ()? >This seems to be a spurious hunk, but I cannot see what changed. Sorry, this is a mistake.. -----Original Message----- From: Thomas Munro [mailto:thomas.munro@enterprisedb.com] Sent: Monday, June 18, 2018 2:42 PM To: Kato, Sho/加藤 翔 <kato-sho@jp.fujitsu.com> Cc: Pg Hackers <pgsql-hackers@postgresql.org> Subject: Re: Add function to release an allocated SQLDA On Wed, Jun 13, 2018 at 4:29 PM, Kato, Sho <kato-sho@jp.fujitsu.com> wrote: > I add a function called ECPGfreeSQLDA() becasue there is no API for releasing the SQLDA stored the result set. Hello Kato-san, Thank you for sending the patch! + Alternatively, use the standard C library's free() function as in the example below. + If the result set contains more than one record, an SQLDA corresponding to each records is saved as linked list. + There is a possibility to free allocated memory area doubly and cause the application crash, + because ECPGfreeSQLDA() releases all SQLDAs associated with the specified the SQLDA. This is not clear to me. ECPGfreeSQLDA() releases a whole chain, but free() only releases a single SQLDA(), so they are obviously not interchangeable. When exactly should a user prefer oneover the other? If there is a good reason to free just one OR the whole chain, shouldn't we provide a way to do bothof those things without the user having to use libc free(), for the benefit of Windows users who can't safely use free()? - * the new partition's info into its partition descriptor. If there is a + * the new partition's info into its partition descriptor. If there is + a This seems to be a spurious hunk, but I cannot see what changed. -- Thomas Munro http://www.enterprisedb.com
pgsql-hackers by date: