Re: Integration of Psycopg with XTA

From: Christian Ferrari <camauz(at)yahoo(dot)com>
To: Daniele Varrazzo <daniele(dot)varrazzo(at)gmail(dot)com>, Federico Di Gregorio <fog(at)dndg(dot)it>
Cc: psycopg(at)lists(dot)postgresql(dot)org
Subject: Re: Integration of Psycopg with XTA
Date: 2018-10-03 20:50:08
Message-ID: 69747703.5400338.1538599809000@mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: psycopg

On 10/03/2018 02:52 PM, Daniele Varrazzo wrote:
> On Wed, Oct 3, 2018 at 1:44 PM Federico Di Gregorio<fog(at)dndg(dot)it>  wrote:
>> On 10/03/2018 02:37 PM, Daniele Varrazzo wrote:
>>> On Wed, Oct 3, 2018 at 1:28 PM Federico Di Gregorio<fog(at)dndg(dot)it>  wrote:
>>>
>>>>> This is interesting because PyCapsule is for sure a "clean" way to pass
>>>>> the pointer from Psycopg to XTA.
>>> Fog, maybe it's worth adding the capsules for PGconn and PGresult to
>>> the objects interface and document them? Can do that for psycopg 2.8.
>> If it works I'd add it (and document it as an "internal" extension point
>> used by other C-level modules) for 2.8, yes.
>>
>> By PGresult you mean adding it on the cursor, or the connection?
> Yes, i'd say a _pgconn attribute or _get_pgconn() method on the
> connection, a _pgresult thing on the cursor.
>
> By the way a read-only attribute as per your implementation seems
> appropriate to me. Christian, why do you think a function would be
> better?

> I guess the capsule is meant to be consumed by the other API and using a
> method makes is explicit that a new object is instantiated every time. I
> really don't care about this, let's do whatever is more Pythonic.

Dear Daniele & Federico,I'm not a "pythonist" at all, I can't provide suggestions about "Python style".In oo context, typically I expect to call a method when I need to retrieve something, that's why I proposed a method instead of a property.Anyway, my obscure question was related to garbage collection: who is in charge of destroying the capsule and how it must be destroyed?Looking at this example:
pgconn = xx._get_pgconn()do_something(pgconn)pgconn = yy._get_pgconn()
will the first capsule be automatically destroyed by the Python runtime when pgconn is assigned to another one (yy....)? Or some explicit statement must be executed?
If everything is automatically managed by the Python runtime, I will be very happy. If "do_something()" must release the capsule to avoid memory leaks, I have to implement it.

I will be very happy to test a "release candidate" version of the feature and link next LIXA/XTA release with psycopg 2.8.
K.R.Ch.F.

In response to

Responses

Browse psycopg by date

  From Date Subject
Next Message Akshay Joshi 2018-10-04 05:35:19 Copy command hangs in poll() function
Previous Message Federico Di Gregorio 2018-10-03 13:03:52 Re: Integration of Psycopg with XTA