Skip to content

Commit 7115e29

Browse files
authored
Merge pull request #14 from bdowning/safe-array-insert
Make array_safe insert/upsert work with empty rows
2 parents ff2b241 + 087b9ca commit 7115e29

4 files changed

Lines changed: 9 additions & 3 deletions

File tree

.bumpversion.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[bumpversion]
2-
current_version = 0.4.0-alpha-3
2+
current_version = 0.4.0-alpha-4
33
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(-(?P<release>.*)-(?P<build>\d+))?
44
serialize =
55
{major}.{minor}.{patch}-{release}-{build}

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "sql-athame"
3-
version = "0.4.0-alpha-3"
3+
version = "0.4.0-alpha-4"
44
description = "Python tool for slicing and dicing SQL"
55
authors = ["Brian Downing <bdowning@lavos.net>"]
66
license = "MIT"

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: 5 additions & 1 deletion
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,13 +108,15 @@ 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"),
112116
Test(2, [1, 3, 5], "bar"),
113117
Test(3, [], "quux"),
114118
]
115-
await Test.insert_multiple(conn, data)
119+
await Test.insert_multiple(conn, dict(enumerate(data)).values())
116120

117121
c, u, d = await Test.replace_multiple(conn, [], where=[])
118122
assert not c and not u

0 commit comments

Comments
 (0)