@@ -71,10 +71,15 @@ public IFetchedJob Dequeue_Transaction(string[] queues, CancellationToken cancel
71
71
SET ""fetchedat"" = NOW() AT TIME ZONE 'UTC'
72
72
WHERE ""id"" IN (
73
73
SELECT ""id""
74
- FROM """ + _options . SchemaName + @""".""jobqueue""
74
+ FROM """ + _options . SchemaName + $ @ """.""jobqueue""
75
75
WHERE ""queue"" = ANY (@queues)
76
- AND ""fetchedat"" {0}
77
- ORDER BY ""fetchedat"", ""jobid""
76
+ AND ""fetchedat"" {{0}}
77
+ ORDER BY
78
+ CASE ""queue""
79
+ { string . Join ( "\n " , queues . Select ( ( q , i ) => $ "WHEN '{ q } ' THEN { i } ") ) }
80
+ ELSE { queues . Length }
81
+ END,
82
+ ""fetchedat"", ""jobid""
78
83
LIMIT 1
79
84
)
80
85
RETURNING ""id"" AS ""Id"", ""jobid"" AS ""JobId"", ""queue"" AS ""Queue"", ""fetchedat"" AS ""FetchedAt"";
@@ -157,10 +162,15 @@ public IFetchedJob Dequeue_UpdateCount(string[] queues, CancellationToken cancel
157
162
158
163
string jobToFetchSqlTemplate = @"
159
164
SELECT ""id"" AS ""Id"", ""jobid"" AS ""JobId"", ""queue"" AS ""Queue"", ""fetchedat"" AS ""FetchedAt"", ""updatecount"" AS ""UpdateCount""
160
- FROM """ + _options . SchemaName + @""".""jobqueue""
165
+ FROM """ + _options . SchemaName + $ @ """.""jobqueue""
161
166
WHERE ""queue"" = ANY (@queues)
162
- AND ""fetchedat"" {0}
163
- ORDER BY ""fetchedat"", ""jobid""
167
+ AND ""fetchedat"" {{0}}
168
+ ORDER BY
169
+ CASE ""queue""
170
+ { string . Join ( "\n " , queues . Select ( ( q , i ) => $ "WHEN '{ q } ' THEN { i } ") ) }
171
+ ELSE { queues . Length }
172
+ END,
173
+ ""fetchedat"", ""jobid""
164
174
LIMIT 1;
165
175
" ;
166
176
0 commit comments