Skip to content

Commit 0d33c91

Browse files
committed
Make array_safe insert/upsert work with empty rows
1 parent ff2b241 commit 0d33c91

2 files changed

Lines changed: 6 additions & 0 deletions

File tree

sql_athame/dataclasses.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,7 @@ async def insert_multiple_unnest(
440440
async def insert_multiple_array_safe(
441441
cls: Type[T], connection_or_pool: Union[Connection, Pool], rows: Iterable[T]
442442
) -> str:
443+
last = ""
443444
for chunk in chunked(rows, 100):
444445
last = await connection_or_pool.execute(
445446
*cls.insert_multiple_array_safe_sql(chunk)
@@ -467,6 +468,7 @@ async def upsert_multiple_unnest(
467468
async def upsert_multiple_array_safe(
468469
cls: Type[T], connection_or_pool: Union[Connection, Pool], rows: Iterable[T]
469470
) -> str:
471+
last = ""
470472
for chunk in chunked(rows, 100):
471473
last = await connection_or_pool.execute(
472474
*cls.upsert_sql(cls.insert_multiple_array_safe_sql(chunk))

tests/test_asyncpg.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ class Test(ModelBase, table_name="test", primary_key="id"):
5555
b: str
5656

5757
await conn.execute(*Test.create_table_sql())
58+
await Test.insert_multiple(conn, [])
59+
await Test.upsert_multiple(conn, [])
5860

5961
data = [
6062
Test(1, 1, "foo"),
@@ -106,6 +108,8 @@ class Test(
106108
b: str
107109

108110
await conn.execute(*Test.create_table_sql())
111+
await Test.insert_multiple(conn, [])
112+
await Test.upsert_multiple(conn, [])
109113

110114
data = [
111115
Test(1, [1], "foo"),

0 commit comments

Comments
 (0)