]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
test: test behaviour of cursors with a row maker returning None
authorMartin Baláž <balaz@brightpick.ai>
Wed, 7 May 2025 20:10:06 +0000 (22:10 +0200)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Fri, 9 May 2025 00:16:45 +0000 (02:16 +0200)
tests/test_cursor_common.py
tests/test_cursor_common_async.py
tests/test_cursor_server.py
tests/test_cursor_server_async.py

index d99f734e033558bd37a51a19550680b2bce5dfbd..74c428448b98b7febb5427418863ea5c9ece1010 100644 (file)
@@ -883,3 +883,20 @@ def test_error_no_result(conn):
         psycopg.ProgrammingError, match="last operation.*result status: EMPTY_QUERY"
     ):
         cur.fetchone()
+
+
+def test_row_maker_returns_none(conn):
+    cur = conn.cursor(row_factory=rows.scalar_row)
+    query = "values (null), (0)"
+    recs = [None, 0]
+
+    cur.execute(query)
+    assert [cur.fetchone() for _ in range(len(recs))] == recs
+    cur.execute(query)
+    assert cur.fetchmany(len(recs)) == recs
+    cur.execute(query)
+    assert cur.fetchall() == recs
+    cur.execute(query)
+    assert list(cur) == recs
+    stream = cur.stream(query)
+    assert list(stream) == recs
index 03e5ef6b0fe5795e5e841cf77e00a0acfdc7dc9f..2b06240287d1ce9b7321dca3e32678c79abba8aa 100644 (file)
@@ -890,3 +890,20 @@ async def test_error_no_result(aconn):
         psycopg.ProgrammingError, match="last operation.*result status: EMPTY_QUERY"
     ):
         await cur.fetchone()
+
+
+async def test_row_maker_returns_none(aconn):
+    cur = aconn.cursor(row_factory=rows.scalar_row)
+    query = "values (null), (0)"
+    recs = [None, 0]
+
+    await cur.execute(query)
+    assert [await cur.fetchone() for _ in range(len(recs))] == recs
+    await cur.execute(query)
+    assert await cur.fetchmany(len(recs)) == recs
+    await cur.execute(query)
+    assert await cur.fetchall() == recs
+    await cur.execute(query)
+    assert await alist(cur) == recs
+    stream = cur.stream(query)
+    assert await alist(stream) == recs
index cc2d4cb5e4738b5314ec2346fba1b60187cc370a..0c28447bcd76f9a40bc4e897cc842217401bf0ce 100644 (file)
@@ -554,3 +554,20 @@ def test_stolen_cursor_close(conn):
     cur1.execute("declare test cursor for select generate_series(1, 6)")
     cur2 = conn.cursor("test")
     cur2.close()
+
+
+def test_row_maker_returns_none(conn):
+    cur = conn.cursor(row_factory=rows.scalar_row)
+    query = "values (null), (0)"
+    recs = [None, 0]
+
+    cur.execute(query)
+    assert [cur.fetchone() for _ in range(len(recs))] == recs
+    cur.execute(query)
+    assert cur.fetchmany(len(recs)) == recs
+    cur.execute(query)
+    assert cur.fetchall() == recs
+    cur.execute(query)
+    assert list(cur) == recs
+    stream = cur.stream(query)
+    assert list(stream) == recs
index 98ae9a27857bea3cbbdab6f81f31d537a9987ff8..014223c31ee0ea9012091e1c50de701575732d6f 100644 (file)
@@ -560,3 +560,20 @@ async def test_stolen_cursor_close(aconn):
     await cur1.execute("declare test cursor for select generate_series(1, 6)")
     cur2 = aconn.cursor("test")
     await cur2.close()
+
+
+async def test_row_maker_returns_none(aconn):
+    cur = aconn.cursor(row_factory=rows.scalar_row)
+    query = "values (null), (0)"
+    recs = [None, 0]
+
+    await cur.execute(query)
+    assert [await cur.fetchone() for _ in range(len(recs))] == recs
+    await cur.execute(query)
+    assert await cur.fetchmany(len(recs)) == recs
+    await cur.execute(query)
+    assert await cur.fetchall() == recs
+    await cur.execute(query)
+    assert await alist(cur) == recs
+    stream = cur.stream(query)
+    assert await alist(stream) == recs