From: | Christian Ferrari <camauz(at)yahoo(dot)com> |
---|---|
To: | psycopg(at)lists(dot)postgresql(dot)org |
Subject: | Re: Integration of Psycopg with XTA |
Date: | 2018-10-02 20:07:50 |
Message-ID: | 106450562.4254785.1538510870700@mail.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | psycopg |
Hi Federico,I have been able to test _raw_pgconn using SWIG, as documented here https://sourceforge.net/p/swig/mailman/message/27919299/ , the trick to use PyCapsule and SWIG together is to specifically map the type with a directive like this one:
%typemap(in) PGconn * {
$1 = (PGconn *) PyCapsule_GetPointer($input, "psycopg2.connection._raw_pgconn");
}
This is interesting because PyCapsule is for sure a "clean" way to pass the pointer from Psycopg to XTA.
A couple of questions to understand how to implement it as a re-usable deliverable.
In current branch, _raw_pgconn is a property, it's not a method, I have to retrieve it as below:
pgconn = rm1._raw_pgconn
xar1 = PostgresqlXaResource(pgconn, "PostgreSQL", "dbname=testdb")
what do you think about a "getter method":
pgconn = rm1._raw_pgconn()
the name of the method does not really matter to me.
_raw_pgconn() create a Capsule object that should be destroyed.What do you think about a factory to create and destroy a PyCapsule that contains the PGconn pointer?
Kind RegardsCh.F.
-------------------------------------------------------------
Good design can't stop bad implementation
Il giovedì 27 settembre 2018, 22:11:35 CEST, Federico Di Gregorio <fog(at)dndg(dot)it> ha scritto:
On 09/27/2018 09:57 PM, Christian Ferrari wrote:
> Thanks, for the fix, now the function works, but unfortunately it's a
> dead end in the SWIG realm...Here's the statement:
> http://www.swig.org/Doc2.0/SWIGDocumentation.html#Python_nn18
> [...]
> *However, the inverse operation is not possible, i.e., you can't build a
> SWIG pointer object from a raw integer value.*
> [...]
>
> PyCapsule https://docs.python.org/2/c-api/capsule.html, suggested by
> Federico seems a more viable approach:
> https://bfroehle.com/2011/07/18/python-capsules/
>
> If Psycopg was able to retrieve a PyCapsule, XTA should be able to use
> it and the Python interpreter would be a gateway between two C/C++
> distinct modules (Psycopg and XTA).
> I'm going to perform some experiments in the XTA wrapper before coming
> back to this mail thread.
If you want the capsule, just pull from my report:
https://github.com/fogzot/psycopg2/tree/feature-expose-pgconn
and use the feature-expose-pgconn branch.
federico
--
Federico Di Gregorio federico(dot)digregorio(at)dndg(dot)it
DNDG srl http://dndg.it
Everything will be OK at the end. If it's not OK, it's not the end.
-- Unknown
From | Date | Subject | |
---|---|---|---|
Next Message | Federico Di Gregorio | 2018-10-03 12:28:00 | Re: Integration of Psycopg with XTA |
Previous Message | Christian Ferrari | 2018-09-29 20:28:53 | Re: Integration of Psycopg with XTA |