Re: PL/Python result set slicing broken in Python 3
Jan Urbański <wulczer@wulczer.org>
From: Jan Urbański <wulczer@wulczer.org>
To: Peter Eisentraut <peter_e@gmx.net>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2012-05-05T20:45:15Z
Lists: pgsql-hackers
Attachments
On 04/05/12 20:00, Jan Urbański wrote: > On 03/05/12 11:04, Jan Urbański wrote: >> On 02/05/12 20:18, Peter Eisentraut wrote: >>> This doesn't work anymore with Python 3: >>> >>> rv = plpy.execute(...) >>> do_something(rv[0:1]) >>> >> Sounds ugly. I'll take a look. > > I found some instructions on how to deal with the Python 2/Python 3 > slicing mess: > > http://renesd.blogspot.com/2009/07/python3-c-api-simple-slicing-sqslice.html Thanks to the helpful folk at #python I found out that the fix is much easier. Attached is a patch that fixes the bug and passes regression tests on Pythons 2.3 through 3.2. Apparently once you implement PyMappingMethods.mp_subscript you can drop PySequenceMethods.sq_slice, but I guess there's no harm in keeping it (and I'm not sure it'd work on Python 2.3 with only mp_subscript implemented). Do we want to backpatch this? If so, I'd need to produce a version that applies to the monolithic plpython.c file from the previous releases. Cheers, Jan