Skip to content

Commit e599e8c

Browse files
committed
Fix QueryClient.ReadSingleRow method
1 parent 5adbc82 commit e599e8c

File tree

2 files changed

+28
-37
lines changed

2 files changed

+28
-37
lines changed

src/Ydb.Sdk/src/Services/Query/QueryClient.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,11 @@ public async Task<QueryResponse> Exec(string queryString,
151151
Value.ResultSet.Row? row = null;
152152
await foreach (var part in stream)
153153
{
154+
if (row is null && part.ResultSet is null)
155+
{
156+
throw new QueryWrongResultFormatException("ResultSet is null");
157+
}
158+
154159
if (part.ResultSet is not null)
155160
{
156161
if (row is not null || part.ResultSet.Rows.Count != 1)
@@ -160,10 +165,6 @@ public async Task<QueryResponse> Exec(string queryString,
160165

161166
row = part.ResultSet.Rows[0];
162167
}
163-
else
164-
{
165-
throw new QueryWrongResultFormatException("ResultSet is null");
166-
}
167168
}
168169

169170
return row!;

src/Ydb.Sdk/tests/Query/TestQueryIntegration.cs

Lines changed: 23 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,19 @@ public TestQueryIntegration()
2424
_loggerFactory.CreateLogger<TestQueryIntegration>();
2525
}
2626

27-
28-
[Fact]
29-
public async Task TestSchemeQuery()
30-
{
31-
await using var driver = await Driver.CreateInitialized(_driverConfig, _loggerFactory);
32-
using var client = new QueryClient(driver);
33-
34-
var createResponse = await client.Exec("CREATE TABLE demo_table (id Int32, data Text, PRIMARY KEY(id));");
35-
Assert.Equal(StatusCode.Success, createResponse.Status.StatusCode);
36-
var dropResponse = await client.Exec("DROP TABLE demo_table;",
37-
retrySettings: new RetrySettings { IsIdempotent = false });
38-
Assert.Equal(StatusCode.Success, dropResponse.Status.StatusCode);
39-
}
27+
// TODO uncomment when DDL support will be available on the server side
28+
// [Fact]
29+
// public async Task TestSchemeQuery()
30+
// {
31+
// await using var driver = await Driver.CreateInitialized(_driverConfig, _loggerFactory);
32+
// using var client = new QueryClient(driver);
33+
//
34+
// var createResponse = await client.Exec("CREATE TABLE demo_table (id Int32, data Text, PRIMARY KEY(id));");
35+
// Assert.Equal(StatusCode.Success, createResponse.Status.StatusCode);
36+
// var dropResponse = await client.Exec("DROP TABLE demo_table;",
37+
// retrySettings: new RetrySettings { IsIdempotent = false });
38+
// Assert.Equal(StatusCode.Success, dropResponse.Status.StatusCode);
39+
// }
4040

4141
[Fact]
4242
public async Task TestSimpleSelect()
@@ -283,52 +283,42 @@ public async Task TestReaders()
283283
SELECT name FROM {tableName} LIMIT 1
284284
";
285285

286-
await TestReadAllResultSets(queryClient);
287-
await TestReadAllRows(queryClient);
288-
await TestReadSingleRow(queryClient);
289-
await TestReadScalar(queryClient);
290-
291-
292-
async Task TestReadAllResultSets(QueryClient client)
293286
{
294-
var response = await client.ReadAllResultSets(SelectMultipleResultSetsQuery);
287+
var response = await queryClient.ReadAllResultSets(SelectMultipleResultSetsQuery);
295288
Assert.Equal(StatusCode.Success, response.Status.StatusCode);
296289
var resultSets = response.Result!;
297290
Assert.Equal(2, resultSets.Count);
298291
Assert.Equal(2, resultSets[0].Count);
299292
}
300293

301-
async Task TestReadAllRows(QueryClient client)
302294
{
303295
await Assert.ThrowsAsync<QueryWrongResultFormatException>(() =>
304-
client.ReadAllRows(SelectMultipleResultSetsQuery));
305-
var response = await client.ReadAllRows(SelectMultipleRowsQuery);
296+
queryClient.ReadAllRows(SelectMultipleResultSetsQuery));
297+
var response = await queryClient.ReadAllRows(SelectMultipleRowsQuery);
306298
Assert.Equal(StatusCode.Success, response.Status.StatusCode);
307299
var resultSet = response.Result;
308300
Assert.NotNull(resultSet);
309301
Assert.Equal(2, resultSet!.Count);
310302
}
311303

312-
async Task TestReadSingleRow(QueryClient client)
313304
{
314305
await Assert.ThrowsAsync<QueryWrongResultFormatException>(() =>
315-
client.ReadSingleRow(SelectMultipleResultSetsQuery));
306+
queryClient.ReadSingleRow(SelectMultipleResultSetsQuery));
316307
await Assert.ThrowsAsync<QueryWrongResultFormatException>(() =>
317-
client.ReadSingleRow(SelectMultipleRowsQuery));
318-
var response = await client.ReadSingleRow(SelectSingleRowQuery);
308+
queryClient.ReadSingleRow(SelectMultipleRowsQuery));
309+
var response = await queryClient.ReadSingleRow(SelectSingleRowQuery);
319310
var resultSet = response.Result;
320311
Assert.NotNull(resultSet);
321312
}
322313

323-
async Task TestReadScalar(QueryClient client)
324314
{
325315
await Assert.ThrowsAsync<QueryWrongResultFormatException>(() =>
326-
client.ReadScalar(SelectMultipleResultSetsQuery));
316+
queryClient.ReadScalar(SelectMultipleResultSetsQuery));
327317
await Assert.ThrowsAsync<QueryWrongResultFormatException>(() =>
328-
client.ReadScalar(SelectMultipleRowsQuery));
318+
queryClient.ReadScalar(SelectMultipleRowsQuery));
329319
await Assert.ThrowsAsync<QueryWrongResultFormatException>(() =>
330-
client.ReadScalar(SelectSingleRowQuery));
331-
var response = await client.ReadScalar(SelectScalarQuery);
320+
queryClient.ReadScalar(SelectSingleRowQuery));
321+
var response = await queryClient.ReadScalar(SelectScalarQuery);
332322
var resultSet = response.Result;
333323
Assert.NotNull(resultSet);
334324
}

0 commit comments

Comments
 (0)