Skip to content

Commit 492d1c8

Browse files
authored
update sql/postgre transports to latest and tweak ql query (#4549)
1 parent 224aaaf commit 492d1c8

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

src/Directory.Packages.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@
4747
<PackageVersion Include="NServiceBus.Transport.AzureServiceBus" Version="4.2.3" />
4848
<PackageVersion Include="NServiceBus.Transport.AzureStorageQueues" Version="13.0.1" />
4949
<PackageVersion Include="NServiceBus.Transport.Msmq.Sources" Version="3.0.1" />
50-
<PackageVersion Include="NServiceBus.Transport.PostgreSql" Version="8.1.4" />
51-
<PackageVersion Include="NServiceBus.Transport.SqlServer" Version="8.1.4" />
50+
<PackageVersion Include="NServiceBus.Transport.SqlServer" Version="8.1.5" />
51+
<PackageVersion Include="NServiceBus.Transport.PostgreSql" Version="8.1.5" />
5252
<PackageVersion Include="NuGet.Versioning" Version="6.11.1" />
5353
<PackageVersion Include="NUnit" Version="4.2.2" />
5454
<PackageVersion Include="NUnit.Analyzers" Version="4.3.0" />

src/ServiceControl.Transports.PostgreSql/PostgreSqlTable.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#nullable enable
1+
#nullable enable
22
namespace ServiceControl.Transports.PostgreSql;
33

44
class PostgreSqlTable
@@ -7,13 +7,14 @@ public PostgreSqlTable(string name, string schema)
77
{
88
//HINT: The query approximates queue length value based on max and min of the table sequence.
99
fullTableName = $"\"{schema}\".\"{name}\"";
10-
//NOTE: Postgres doesn't have NOLOCK since it utilises snapshot isolation by default
10+
// As a result, we want to skip rows locked by other transactions with SKIP LOCKED query hint.
1111
LengthQuery = $$"""
1212
SELECT CASE WHEN (EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{{schema}}' AND TABLE_NAME = '{{name}}')) THEN
13-
COALESCE(cast(max(seq) - min(seq) + 1 AS int), 0)
13+
COALESCE(cast((SELECT seq FROM {{schema}}."{{name}}" ORDER BY seq DESC LIMIT 1 FOR UPDATE SKIP LOCKED)
14+
- (SELECT seq FROM {{schema}}."{{name}}" ORDER BY seq ASC LIMIT 1 FOR UPDATE SKIP LOCKED) + 1 AS int), 0)
1415
ELSE
1516
-1
16-
END AS Id FROM {{fullTableName}};
17+
END;
1718
""";
1819
}
1920

0 commit comments

Comments
 (0)