Re: Use Python "Limited API" in PL/Python

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: pgsql-hackers <pgsql-hackers@postgresql.org>
Cc: Jakob Egger <jakob@eggerapps.at>
Date: 2025-03-05T16:40:22Z
Lists: pgsql-hackers

Attachments

On 03.03.25 11:17, Peter Eisentraut wrote:
> Update for the hackers list: This patch set was briefly committed but 
> had to be reverted because it crashed on some older Python versions; see 
> [0].
> 
> I have locally reproduced the problem with Python 3.6 and 3.7; Python 
> 3.8 is ok.  This matches the results from the buildfarm.
> 
> I have poked at this a bit more but haven't gotten a good idea where or 
> how to fix it so far.  Help welcome.

I have figured this out.  There was a Python API change/bugfix between 
3.7 and 3.8 that directly affects this patch.  The relevant commit is 
<https://github.com/python/cpython/commit/364f0b0f19c>.  I have applied 
the workarounds described there to my patch set, and now it works for 
3.6 and 3.7 as well.

Commits

  1. Enable Python Limited API for PL/Python on MSVC

  2. Activate Python "Limited API" in PL/Python

  3. Prepare for Python "Limited API" in PL/Python

  4. Remove obsolete Python version check