Patrick Buckley
5efe52d433
fix: chunk IN clauses to stay within DB parameter limits ( #286 )
...
* fix: chunk IN clauses to stay within DB parameter limits
psycopg caps query parameters at 65 535 and SQLite defaults to 999.
assign_buckets, prune_workstreams, and count_skill_resources_bulk were
passing unbounded lists into single IN(...) clauses, causing
OperationalError during rebalancer runs on full-size hash rings.
Chunk sizes: 10 000 (PostgreSQL), 500 (SQLite).
* fix: deduplicate assign_buckets input, add chunking regression tests
Address review feedback: deduplicate bucket list before chunking to
prevent inflated rowcount from cross-chunk duplicates. Add tests that
exercise the multi-chunk path (1200 buckets > SQLite chunk_size of 500)
and verify dedup preserves accurate counts.
2026-04-02 20:28:54 -07:00
..
2026-03-02 00:33:37 -08:00
2026-03-23 11:11:40 -07:00
2026-04-01 19:38:24 -07:00
2026-03-10 19:32:37 -07:00
2026-04-01 19:38:24 -07:00
2026-04-01 19:38:24 -07:00
2026-03-13 21:21:09 -07:00
2026-03-11 01:58:39 -07:00
2026-03-29 17:09:17 -07:00
2026-03-31 09:28:19 -07:00
2026-03-13 04:12:46 -07:00
2026-03-30 20:30:05 -07:00
2026-03-23 11:11:40 -07:00
2026-03-14 11:42:18 -07:00
2026-03-30 20:30:05 -07:00
2026-03-30 20:30:05 -07:00
2026-03-30 20:30:05 -07:00
2026-04-01 19:38:24 -07:00
2026-04-01 19:38:24 -07:00
2026-03-13 21:21:09 -07:00
2026-03-29 05:21:08 -07:00
2026-03-02 00:33:37 -08:00
2026-03-23 14:55:14 -07:00
2026-03-03 22:57:34 -08:00
2026-03-16 14:47:06 -07:00
2026-03-23 11:11:40 -07:00
2026-04-02 20:28:54 -07:00
2026-03-30 20:30:05 -07:00
2026-03-21 16:35:47 -07:00
2026-03-02 00:33:37 -08:00
2026-03-13 04:12:46 -07:00
2026-03-23 11:11:40 -07:00
2026-03-26 18:10:23 -07:00
2026-03-31 15:25:55 -07:00
2026-03-04 06:47:30 -08:00
2026-03-02 16:55:12 -08:00
2026-03-24 03:13:23 -07:00
2026-03-28 15:48:11 -07:00
2026-03-15 17:12:13 -07:00
2026-03-12 15:46:00 -07:00
2026-03-12 16:57:31 -07:00
2026-03-21 16:12:50 -07:00
2026-03-20 20:01:26 -07:00
2026-03-23 11:11:40 -07:00
2026-03-15 14:28:03 -07:00
2026-03-13 21:21:09 -07:00
2026-03-28 16:18:12 -07:00
2026-03-29 01:58:08 -07:00
2026-03-30 04:19:24 -07:00
2026-03-30 20:30:05 -07:00
2026-04-01 19:38:24 -07:00
2026-03-07 12:49:07 -08:00
2026-03-17 17:02:25 -07:00
2026-03-23 11:11:40 -07:00
2026-03-21 00:14:46 -07:00
2026-03-07 12:49:07 -08:00
2026-03-23 11:11:40 -07:00
2026-03-17 02:19:22 -07:00
2026-03-28 22:09:52 -07:00
2026-03-31 15:25:55 -07:00
2026-04-01 12:42:09 -07:00
2026-03-03 18:28:39 -08:00
2026-03-30 20:30:05 -07:00
2026-03-29 13:33:58 -07:00
2026-03-30 20:30:05 -07:00
2026-03-29 14:18:39 -07:00
2026-03-02 00:33:37 -08:00
2026-03-02 16:55:12 -08:00
2026-03-10 19:32:37 -07:00
2026-03-23 11:11:40 -07:00
2026-03-30 20:30:05 -07:00
2026-03-02 16:55:12 -08:00
2026-03-30 20:30:05 -07:00
2026-03-12 11:43:06 -07:00
2026-03-21 00:31:53 -07:00
2026-03-30 20:30:05 -07:00
2026-03-03 21:22:24 -08:00
2026-03-04 06:04:59 -08:00
2026-04-01 19:38:24 -07:00
2026-03-30 20:30:05 -07:00
2026-03-28 22:09:52 -07:00
2026-03-29 05:21:08 -07:00
2026-03-29 01:58:08 -07:00
2026-03-14 11:42:18 -07:00
2026-03-17 01:26:44 -07:00
2026-03-17 16:09:06 -07:00
2026-03-31 22:34:24 -07:00
2026-03-17 01:26:44 -07:00
2026-03-23 11:11:40 -07:00
2026-03-16 15:45:21 -07:00
2026-03-17 01:26:44 -07:00
2026-03-28 22:09:52 -07:00
2026-03-03 22:57:34 -08:00
2026-03-23 11:11:40 -07:00
2026-03-23 11:11:40 -07:00
2026-03-30 04:43:49 -07:00
2026-04-01 19:38:24 -07:00
2026-03-31 11:28:39 -07:00
2026-04-01 19:38:24 -07:00
2026-03-25 16:07:05 -07:00
2026-03-30 20:30:05 -07:00
2026-03-12 14:49:58 -07:00
2026-03-17 17:02:25 -07:00
2026-03-29 16:17:48 -07:00
2026-03-23 11:11:40 -07:00
2026-03-28 23:07:47 -07:00
2026-03-23 11:11:40 -07:00
2026-03-10 08:18:28 -07:00
2026-03-23 16:09:03 -07:00
2026-03-15 15:04:22 -07:00
2026-04-02 16:47:51 -07:00