Skip to content

Commit 82f4348

Browse files
committed
work around sqlc nullable array value type issue
1 parent b583535 commit 82f4348

File tree

3 files changed

+6
-6
lines changed

3 files changed

+6
-6
lines changed

src/riverqueue/driver/riversqlalchemy/dbsqlc/river_job.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@
5252
-- query.
5353
string_to_array(unnest(:p9\\:\\:text[]), ','),
5454
55-
unnest(:p10\\:\\:bytea[]),
55+
nullif(unnest(:p10\\:\\:bytea[]), ''),
5656
-- Strings of bits are used for the input type here to make sqlalchemy play nicely with bit(8)\\:
57-
unnest(:p11\\:\\:text[])\\:\\:bit(8)
57+
nullif(unnest(:p11\\:\\:text[]), '')\\:\\:bit(8)
5858
5959
ON CONFLICT (unique_key)
6060
WHERE unique_key IS NOT NULL

src/riverqueue/driver/riversqlalchemy/dbsqlc/river_job.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ INSERT INTO river_job(
7373
-- query.
7474
string_to_array(unnest(@tags::text[]), ','),
7575

76-
unnest(@unique_key::bytea[]),
76+
nullif(unnest(@unique_key::bytea[]), ''),
7777
-- Strings of bits are used for the input type here to make sqlalchemy play nicely with bit(8):
78-
unnest(@unique_states::text[])::bit(8)
78+
nullif(unnest(@unique_states::text[]), '')::bit(8)
7979

8080
ON CONFLICT (unique_key)
8181
WHERE unique_key IS NOT NULL

src/riverqueue/driver/riversqlalchemy/sql_alchemy_driver.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,14 +148,14 @@ def _build_insert_many_params(
148148
)
149149
insert_many_params.state.append(cast(models.RiverJobState, insert_params.state))
150150
insert_many_params.tags.append(",".join(insert_params.tags))
151-
insert_many_params.unique_key.append(insert_params.unique_key or None)
151+
insert_many_params.unique_key.append(memoryview(insert_params.unique_key or b""))
152152

153153
if insert_params.unique_states:
154154
one_byte = insert_params.unique_states[0]
155155
bit_string = format(one_byte, "08b")
156156
insert_many_params.unique_states.append(bit_string)
157157
else:
158-
insert_many_params.unique_states.append(None)
158+
insert_many_params.unique_states.append("")
159159

160160
return insert_many_params
161161

0 commit comments

Comments
 (0)