Skip to content

Commit 243e8fd

Browse files
committed
fix write row affected
1 parent f270300 commit 243e8fd

File tree

1 file changed

+8
-11
lines changed

1 file changed

+8
-11
lines changed

slo/src/Linq2db.Slo/SloLinq2DbContext.cs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,12 @@ public sealed class SloTableContext : SloTableContext<SloTableContext.Linq2dbCli
1313
{
1414
protected override string Job => "Linq2DB";
1515

16-
// ВКЛЮЧАЕМ ретраи SDK глобально для всех DataConnection
1716
static SloTableContext()
1817
{
18+
// Включаем ретраи SDK глобально (как и раньше)
1919
YdbSdkRetryPolicyRegistration.UseGloballyWithIdempotence(
2020
maxAttempts: 10,
21-
onRetry: (attempt, ex, delay) =>
22-
{
23-
// метрики/логи при желании
24-
}
21+
onRetry: (attempt, ex, delay) => { /* лог/метрики при желании */ }
2522
);
2623
}
2724

@@ -32,8 +29,7 @@ public sealed class Linq2dbClient
3229
public DataConnection Open() => new DataConnection("YDB", _connectionString);
3330
}
3431

35-
protected override Linq2dbClient CreateClient(Config config)
36-
=> new Linq2dbClient(config.ConnectionString);
32+
protected override Linq2dbClient CreateClient(Config config) => new(config.ConnectionString);
3733

3834
protected override async Task Create(Linq2dbClient client, int operationTimeout)
3935
{
@@ -46,15 +42,15 @@ await db.ExecuteAsync($@"
4642
CREATE TABLE `{SloTable.Name}` (
4743
Guid Uuid,
4844
Id Int32,
49-
PayloadStr Utf8,
45+
PayloadStr Text,
5046
PayloadDouble Double,
5147
PayloadTimestamp Timestamp,
5248
PRIMARY KEY (Guid, Id)
5349
)");
5450
}
5551
catch
5652
{
57-
// YDB не поддерживает IF NOT EXISTS; если таблица есть — это норм
53+
// Таблица уже есть — ок
5854
}
5955

6056
if (!string.IsNullOrWhiteSpace(SloTable.Options))
@@ -67,12 +63,13 @@ protected override async Task<int> Save(Linq2dbClient client, SloTable sloTable,
6763
await using var db = client.Open();
6864
db.CommandTimeout = writeTimeout;
6965

70-
await db.ExecuteAsync($@"
66+
// rowsAffected >= 0 (для UPSERT в YDB может быть 0), поэтому страхуемся и возвращаем минимум 1
67+
var rowsAffected = await db.ExecuteAsync($@"
7168
UPSERT INTO `{SloTable.Name}` (Guid, Id, PayloadStr, PayloadDouble, PayloadTimestamp)
7269
VALUES ({sloTable.Guid}, {sloTable.Id}, {sloTable.PayloadStr}, {sloTable.PayloadDouble}, {sloTable.PayloadTimestamp});
7370
");
7471

75-
return 1;
72+
return rowsAffected > 0 ? rowsAffected : 1;
7673
}
7774

7875
protected override async Task<object?> Select(Linq2dbClient client, (Guid Guid, int Id) select, int readTimeout)

0 commit comments

Comments
 (0)