PL/Python: Add cursor and execute methods to plan object
Something that has been bothering me in PL/Python for a long time is the
non-object-oriented way in which plans are prepared and executed:
plan = plpy.prepare(...)
res = plpy.execute(plan, ...)
where plpy.execute() takes either a plan or a query string.
I think a better style would be
plan = plpy.prepare(...)
res = plan.execute(...)
so that the "plan" is more like a statement handle that one finds in
other APIs.
This ended up being very easy to implement, so I'm proposing to allow
this new syntax as an alternative.
I came across this again as I was developing the background sessions API
for PL/Python. So I'm also wondering here which style people prefer so
I can implement it there.
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Attachments:
0001-PL-Python-Add-cursor-and-execute-methods-to-plan-obj.patchtext/x-patch; name=0001-PL-Python-Add-cursor-and-execute-methods-to-plan-obj.patchDownload+79-12
On 2/25/17 1:27 PM, Peter Eisentraut wrote:
Something that has been bothering me in PL/Python for a long time is the
non-object-oriented way in which plans are prepared and executed:plan = plpy.prepare(...)
res = plpy.execute(plan, ...)where plpy.execute() takes either a plan or a query string.
I think a better style would be
plan = plpy.prepare(...)
res = plan.execute(...)so that the "plan" is more like a statement handle that one finds in
other APIs.This ended up being very easy to implement, so I'm proposing to allow
this new syntax as an alternative.I came across this again as I was developing the background sessions API
for PL/Python. So I'm also wondering here which style people prefer so
I can implement it there.
This patch applies cleanly at cccbdde.
Any Python folks out there who would like to take a crack at reviewing this?
--
-David
david@pgmasters.net
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 03/16/2017 05:32 PM, David Steele wrote:
On 2/25/17 1:27 PM, Peter Eisentraut wrote:
Something that has been bothering me in PL/Python for a long time is the
non-object-oriented way in which plans are prepared and executed:plan = plpy.prepare(...)
res = plpy.execute(plan, ...)where plpy.execute() takes either a plan or a query string.
I think a better style would be
plan = plpy.prepare(...)
res = plan.execute(...)so that the "plan" is more like a statement handle that one finds in
other APIs.This ended up being very easy to implement, so I'm proposing to allow
this new syntax as an alternative.I came across this again as I was developing the background sessions API
for PL/Python. So I'm also wondering here which style people prefer so
I can implement it there.This patch applies cleanly at cccbdde.
Any Python folks out there who would like to take a crack at reviewing this?
I'm not particularly a Python folk, but I've done enough over the years
with PLs, including PLPython, that I think I can review this :-)
cheers
andrew
--
Andrew Dunstan https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 03/21/2017 06:27 PM, Andrew Dunstan wrote:
On 03/16/2017 05:32 PM, David Steele wrote:
On 2/25/17 1:27 PM, Peter Eisentraut wrote:
Something that has been bothering me in PL/Python for a long time is the
non-object-oriented way in which plans are prepared and executed:plan = plpy.prepare(...)
res = plpy.execute(plan, ...)where plpy.execute() takes either a plan or a query string.
I think a better style would be
plan = plpy.prepare(...)
res = plan.execute(...)so that the "plan" is more like a statement handle that one finds in
other APIs.This ended up being very easy to implement, so I'm proposing to allow
this new syntax as an alternative.I came across this again as I was developing the background sessions API
for PL/Python. So I'm also wondering here which style people prefer so
I can implement it there.This patch applies cleanly at cccbdde.
Any Python folks out there who would like to take a crack at reviewing this?
I'm not particularly a Python folk, but I've done enough over the years
with PLs, including PLPython, that I think I can review this :-)
This is a very simple patch that does what it advertises. It applies
cleanly and provides tests for both the new methods (plan.cursor and
plan.execute).
Marking Ready For Committer.
cheers
andrew
--
Andrew Dunstan https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 2/25/17 10:27 AM, Peter Eisentraut wrote:
So I'm also wondering here which style people prefer so
I can implement it there.
I think the more OO style is definitely better. I expect it would
simplify the code as well.
--
Jim C. Nasby, Data Architect jim@nasby.net
512.569.9461 (cell) http://jim.nasby.net
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
Jim Nasby <jim@nasby.net> writes:
On 2/25/17 10:27 AM, Peter Eisentraut wrote:
So I'm also wondering here which style people prefer so
I can implement it there.I think the more OO style is definitely better. I expect it would
simplify the code as well.
I'm not a Python person, but I'd argue that the "more OO" style should
be the primary style documented, and the old style should just be
mentioned for reference.
- ilmari
--
- Twitter seems more influential [than blogs] in the 'gets reported in
the mainstream press' sense at least. - Matt McLeod
- That'd be because the content of a tweet is easier to condense down
to a mainstream media article. - Calle Dybedahl
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 3/22/17 11:46, Andrew Dunstan wrote:
This is a very simple patch that does what it advertises. It applies
cleanly and provides tests for both the new methods (plan.cursor and
plan.execute).Marking Ready For Committer.
committed
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers