@rotorsoft/act-pg 1.15.0 → 1.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -852,36 +852,19 @@ var PostgresStore = class {
852
852
  await client.query(
853
853
  `
854
854
  UPDATE ${this._fqs} t
855
- SET priority = COALESCE((s->>'priority')::int, 0)
855
+ SET priority = GREATEST(t.priority, COALESCE((s->>'priority')::int, 0)),
856
+ lane = COALESCE(s->>'lane', 'default'),
857
+ correlated_at = GREATEST(t.correlated_at, (s->>'correlated_at')::int)
856
858
  FROM jsonb_array_elements($1::jsonb) AS s
857
859
  WHERE t.stream = s->>'stream'
858
- AND COALESCE((s->>'priority')::int, 0) > t.priority
860
+ AND (COALESCE((s->>'priority')::int, 0) > t.priority
861
+ OR t.lane <> COALESCE(s->>'lane', 'default')
862
+ OR (s->>'correlated_at' IS NOT NULL
863
+ AND (t.correlated_at IS NULL
864
+ OR t.correlated_at < (s->>'correlated_at')::int)))
859
865
  `,
860
866
  [JSON.stringify(streams)]
861
867
  );
862
- await client.query(
863
- `
864
- UPDATE ${this._fqs} t
865
- SET lane = COALESCE(s->>'lane', 'default')
866
- FROM jsonb_array_elements($1::jsonb) AS s
867
- WHERE t.stream = s->>'stream'
868
- AND t.lane <> COALESCE(s->>'lane', 'default')
869
- `,
870
- [JSON.stringify(streams)]
871
- );
872
- if (streams.some((s) => s.correlated_at !== void 0))
873
- await client.query(
874
- `
875
- UPDATE ${this._fqs} t
876
- SET correlated_at = (s->>'correlated_at')::int
877
- FROM jsonb_array_elements($1::jsonb) AS s
878
- WHERE t.stream = s->>'stream'
879
- AND s->>'correlated_at' IS NOT NULL
880
- AND (t.correlated_at IS NULL
881
- OR t.correlated_at < (s->>'correlated_at')::int)
882
- `,
883
- [JSON.stringify(streams)]
884
- );
885
868
  }
886
869
  if (correlated_at !== void 0)
887
870
  await client.query(
@@ -1187,7 +1170,7 @@ var PostgresStore = class {
1187
1170
  values.push(query.after);
1188
1171
  conditions.push(`stream > $${values.length}`);
1189
1172
  }
1190
- let sql = `SELECT stream, source, at, retry, blocked, error, leased_by, leased_until, priority, lane, deferred_at FROM ${this._fqs}`;
1173
+ let sql = `SELECT stream, source, at, retry, blocked, error, leased_by, leased_until, priority, lane, deferred_at, correlated_at FROM ${this._fqs}`;
1191
1174
  if (conditions.length) sql += " WHERE " + conditions.join(" AND ");
1192
1175
  values.push(limit);
1193
1176
  sql += ` ORDER BY stream LIMIT $${values.length}`;
@@ -1214,7 +1197,9 @@ var PostgresStore = class {
1214
1197
  lane: row.lane,
1215
1198
  // Persisted as timestamptz; surface as ms since epoch (#1221) so
1216
1199
  // the cold-start re-seed can re-arm the drain at the due-time.
1217
- deferred_at: row.deferred_at ? row.deferred_at.getTime() : void 0
1200
+ deferred_at: row.deferred_at ? row.deferred_at.getTime() : void 0,
1201
+ // NULL means "no mark yet" — unknown, not "no work" (#1485).
1202
+ correlated_at: row.correlated_at ?? void 0
1218
1203
  });
1219
1204
  count++;
1220
1205
  }