graphql-engine/server/src-rsr/mssql/mssql_fetch_events.sql.shakespeare
Naveen Naidu abb57e58c8 server/MSSQL: Event Delivery System (Incremental PR - 3)
</details>

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/3392
Co-authored-by: Divi <32202683+imperfect-fourth@users.noreply.github.com>
GitOrigin-RevId: 9df6b0aa7d91f22571b72d3e467da23b916c9140
2022-04-21 07:20:34 +00:00

13 lines
898 B
Plaintext

UPDATE hdb_catalog.event_log
SET locked = SYSDATETIMEOFFSET()
OUTPUT CONVERT(varchar(MAX), inserted.id), inserted.schema_name, inserted.table_name, inserted.trigger_name, CONVERT(varchar(MAX), inserted.payload), inserted.tries, CONVERT(varchar(MAX), inserted.created_at)
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)