Skip to content

Commit 6939c3d

Browse files
committed
resolve some conversations
1 parent 90e44cf commit 6939c3d

File tree

4 files changed

+28
-9
lines changed

4 files changed

+28
-9
lines changed

examples/src/QueryExample/QueryExample.cs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,8 @@ private async Task InteractiveTx()
207207
PRAGMA TablePathPrefix('{BasePath}');
208208
209209
SELECT first_aired FROM seasons
210-
WHERE series_id = $series_id AND season_id = $season_id;
210+
WHERE series_id = $series_id AND season_id = $season_id
211+
LIMIT 1;
211212
";
212213
var parameters1 = new Dictionary<string, YdbValue>
213214
{
@@ -254,22 +255,31 @@ private async Task StreamSelect()
254255
";
255256

256257

257-
await Client.Query(
258+
var response = await Client.Query(
258259
query,
259260
func: async stream =>
260261
{
262+
var result = new List<Series>();
261263
await foreach (var part in stream)
262264
{
263265
if (part.ResultSet == null) continue;
264266
foreach (var row in part.ResultSet.Rows)
265267
{
266-
Console.WriteLine(Series.FromRow(row));
268+
result.Add(Series.FromRow(row));
267269
}
268270
}
269271

270-
return stream.Next();
272+
return result;
271273
}
272274
).ConfigureAwait(false);
275+
response.EnsureSuccess();
276+
if (response.Result != null)
277+
{
278+
foreach (var series in response.Result)
279+
{
280+
Console.WriteLine(series);
281+
}
282+
}
273283
}
274284

275285
private async Task ReadScalar()
@@ -362,6 +372,7 @@ private async Task ReadAllResultSets()
362372
{
363373
Console.WriteLine($"\t\t{Series.FromRow(row)}");
364374
}
375+
365376
Console.WriteLine("\t'episodes' contains:");
366377
foreach (var row in episodesSet)
367378
{

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,10 @@ public async Task<QueryResponse> Exec(string queryString,
180180
internal static async Task<YdbValue> ReadScalarHelper(ExecuteQueryStream stream)
181181
{
182182
var row = await ReadSingleRowHelper(stream);
183+
if (row.ColumnCount != 1)
184+
{
185+
throw new QueryWrongResultFormatException("Row should contain exactly one field");
186+
}
183187
return row[0];
184188
}
185189

src/Ydb.Sdk/src/Value/ResultSet.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,5 +129,7 @@ internal Row(Ydb.Value row, IReadOnlyList<Column> columns, IReadOnlyDictionary<s
129129
public YdbValue this[int columnIndex] => new(_columns[columnIndex].Type, _row.Items[columnIndex]);
130130

131131
public YdbValue this[string columnName] => this[_columnsMap[columnName]];
132+
133+
internal int ColumnCount => _columns.Count;
132134
}
133135
}

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,23 +62,23 @@ public async Task TestSimpleSelect()
6262
});
6363

6464
var responseAllRows = await client.ReadAllRows(queryString);
65-
var responseFirstRow = await client.ReadSingleRow(queryString); // ReadOneRow
65+
var responseSingleRow = await client.ReadSingleRow(queryString); // ReadOneRow
6666

6767
Assert.Equal(StatusCode.Success, responseQuery.Status.StatusCode);
6868
Assert.Equal(StatusCode.Success, responseAllRows.Status.StatusCode);
69-
Assert.Equal(StatusCode.Success, responseFirstRow.Status.StatusCode);
69+
Assert.Equal(StatusCode.Success, responseSingleRow.Status.StatusCode);
7070
Assert.NotNull(responseQuery.Result);
71-
Assert.NotNull(responseFirstRow.Result);
71+
Assert.NotNull(responseSingleRow.Result);
7272
Assert.NotNull(responseAllRows.Result);
7373
Assert.Single(responseQuery.Result!);
7474
Assert.Single(responseAllRows.Result!);
7575

7676
var valueQuery = (int)responseQuery.Result!.First()["sum"];
7777
var valueReadAll = (int)responseAllRows.Result!.First()["sum"];
78-
var valueReadFirst = (int)responseFirstRow.Result!["sum"];
78+
var valueReadSingle = (int)responseSingleRow.Result!["sum"];
7979

8080
Assert.Equal(valueQuery, valueReadAll);
81-
Assert.Equal(valueQuery, valueReadFirst);
81+
Assert.Equal(valueQuery, valueReadSingle);
8282
Assert.Equal(5, valueQuery);
8383
}
8484

@@ -326,6 +326,8 @@ await Assert.ThrowsAsync<QueryWrongResultFormatException>(() =>
326326
client.ReadScalar(SelectMultipleResultSetsQuery));
327327
await Assert.ThrowsAsync<QueryWrongResultFormatException>(() =>
328328
client.ReadScalar(SelectMultipleRowsQuery));
329+
await Assert.ThrowsAsync<QueryWrongResultFormatException>(() =>
330+
client.ReadScalar(SelectSingleRowQuery));
329331
var response = await client.ReadScalar(SelectScalarQuery);
330332
var resultSet = response.Result;
331333
Assert.NotNull(resultSet);

0 commit comments

Comments
 (0)