Skip to content

Commit a2df891

Browse files
author
James William Pye
committed
Fix first() executing DML.
1 parent 2e02952 commit a2df891

3 files changed

Lines changed: 18 additions & 1 deletion

File tree

postgresql/documentation/changes.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ Changes
99
* Fix db.tracer and pg_python's --pq-trace=
1010
* Fix typo/dropped parts of a raise LoadError in .lib.
1111
[Reported by Vlad Pranskevichus]
12+
* Fix count return from .first() method. Failed to provide an empty
13+
tuple for the rformats of the bind statement.
14+
[Reported by dou dou]
1215

1316
0.9.3 released on 2010-01-01
1417
----------------------------

postgresql/driver/pq3.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -982,7 +982,7 @@ def first(self, *parameters):
982982
self._pq_statement_id,
983983
self._input_formats,
984984
params,
985-
self._output_formats,
985+
self._output_formats or (),
986986
),
987987
# Get all
988988
element.Execute(b'', 0xFFFFFFFF),

postgresql/test/test_driver.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,20 @@ def testStatementCall(self):
407407
ps = self.db.prepare("SELECT 1, 2 UNION ALL SELECT 3, 4")
408408
self.failUnlessEqual(ps(), [(1,2),(3,4)])
409409

410+
def testStatementFirstDML(self):
411+
self.db.execute("CREATE TEMP TABLE first (i int)")
412+
fins = self.db.prepare("INSERT INTO first VALUES (123)").first
413+
fupd = self.db.prepare("UPDATE first SET i = 321 WHERE i = 123").first
414+
fdel = self.db.prepare("DELETE FROM first").first
415+
self.failUnlessEqual(fins(), 1)
416+
self.failUnlessEqual(fdel(), 1)
417+
self.failUnlessEqual(fins(), 1)
418+
self.failUnlessEqual(fupd(), 1)
419+
self.failUnlessEqual(fins(), 1)
420+
self.failUnlessEqual(fins(), 1)
421+
self.failUnlessEqual(fupd(), 2)
422+
self.failUnlessEqual(fdel(), 3)
423+
410424
def testStatementRowsPersistence(self):
411425
# validate that rows' cursor will persist beyond a transaction.
412426
ps = self.db.prepare("SELECT i FROM generate_series($1::int, $2::int) AS g(i)")

0 commit comments

Comments
 (0)