2022-04-21 10:19:37 +03:00
|
|
|
UPDATE hdb_catalog.event_log
|
2023-01-20 14:15:04 +03:00
|
|
|
SET locked = SYSDATETIMEOFFSET() AT TIME ZONE 'UTC'
|
2023-01-10 11:49:32 +03:00
|
|
|
OUTPUT CONVERT(varchar(MAX), inserted.id), inserted.schema_name, inserted.table_name, inserted.trigger_name, inserted.payload, inserted.tries, CONVERT(varchar(MAX), inserted.created_at), CONVERT(varchar(MAX), inserted.next_retry_at)
|
2022-04-21 10:19:37 +03:00
|
|
|
WHERE id in
|
|
|
|
(SELECT TOP(#{fetchBatchSize}) l.id
|
|
|
|
FROM hdb_catalog.event_log l WITH (UPDLOCK, READPAST)
|
|
|
|
WHERE (l.delivered = 0 and l.error = 0)
|
|
|
|
AND (l.locked IS NULL or l.locked < DATEADD(MINUTE, -30, SYSDATETIMEOFFSET()))
|
|
|
|
AND (l.next_retry_at is NULL or l.next_retry_at <= SYSDATETIMEOFFSET())
|
|
|
|
AND l.archived = 0
|
|
|
|
AND l.trigger_name IN #{triggerNamesTxt}
|
|
|
|
-- Note: In MSSQL, when you order it by ASC - it implies nulls first
|
|
|
|
ORDER BY l.locked ASC, l.next_retry_at ASC, l.created_at)
|