Skip to content

Commit 139be1d

Browse files
author
Roman Golov
committed
Add ResultSet.Index method
1 parent 44ddaa6 commit 139be1d

File tree

6 files changed

+28
-17
lines changed

6 files changed

+28
-17
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
* Added `ResultSet.Index()` method
2+
13
## v3.74.5
24
* Fixed bug with reading empty result set parts.
35
* Fixed nil pointer dereference when closing result set

internal/query/result.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ var (
2525
type (
2626
materializedResult struct {
2727
resultSets []query.ResultSet
28-
idx int
28+
idx int64
2929
}
3030
result struct {
3131
stream Ydb_Query_V1.QueryService_ExecuteQueryClient
@@ -51,7 +51,7 @@ func (r *materializedResult) Close(ctx context.Context) error {
5151
}
5252

5353
func (r *materializedResult) NextResultSet(ctx context.Context) (query.ResultSet, error) {
54-
if r.idx == len(r.resultSets) {
54+
if r.idx == int64(len(r.resultSets)) {
5555
return nil, xerrors.WithStackTrace(io.EOF)
5656
}
5757

internal/query/result_set.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ func (rs *materializedResultSet) NextRow(ctx context.Context) (query.Row, error)
8585
return rs.rows[rs.idx], nil
8686
}
8787

88+
func (rs *materializedResultSet) Index() int {
89+
return rs.idx
90+
}
91+
8892
func NewMaterializedResultSet(
8993
columnNames []string,
9094
columnTypes []types.Type,
@@ -169,3 +173,7 @@ func (rs *resultSet) NextRow(ctx context.Context) (_ query.Row, err error) {
169173

170174
return rs.nextRow(ctx)
171175
}
176+
177+
func (rs *resultSet) Index() int {
178+
return int(rs.index)
179+
}

internal/query/result_set_test.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func TestResultSetNext(t *testing.T) {
5959

6060
return part, nil
6161
}, recv, nil)
62-
require.EqualValues(t, 0, rs.index)
62+
require.EqualValues(t, 0, rs.Index())
6363
{
6464
_, err := rs.nextRow(ctx)
6565
require.ErrorIs(t, err, io.EOF)
@@ -144,7 +144,7 @@ func TestResultSetNext(t *testing.T) {
144144

145145
return part, nil
146146
}, recv, nil)
147-
require.EqualValues(t, 0, rs.index)
147+
require.EqualValues(t, 0, rs.Index())
148148
{
149149
_, err := rs.nextRow(ctx)
150150
require.NoError(t, err)
@@ -303,7 +303,7 @@ func TestResultSetNext(t *testing.T) {
303303

304304
return part, nil
305305
}, recv, nil)
306-
require.EqualValues(t, 0, rs.index)
306+
require.EqualValues(t, 0, rs.Index())
307307
{
308308
_, err := rs.nextRow(ctx)
309309
require.NoError(t, err)
@@ -441,7 +441,7 @@ func TestResultSetNext(t *testing.T) {
441441

442442
return part, nil
443443
}, recv, nil)
444-
require.EqualValues(t, 0, rs.index)
444+
require.EqualValues(t, 0, rs.Index())
445445
{
446446
_, err := rs.nextRow(ctx)
447447
require.NoError(t, err)
@@ -544,7 +544,7 @@ func TestResultSetNext(t *testing.T) {
544544

545545
return part, nil
546546
}, recv, nil)
547-
require.EqualValues(t, 0, rs.index)
547+
require.EqualValues(t, 0, rs.Index())
548548
{
549549
_, err := rs.nextRow(childCtx)
550550
require.NoError(t, err)
@@ -636,7 +636,7 @@ func TestResultSetNext(t *testing.T) {
636636

637637
return part, nil
638638
}, recv, nil)
639-
require.EqualValues(t, 0, rs.index)
639+
require.EqualValues(t, 0, rs.Index())
640640
{
641641
_, err := rs.nextRow(ctx)
642642
require.NoError(t, err)
@@ -735,7 +735,7 @@ func TestResultSetNext(t *testing.T) {
735735

736736
return part, nil
737737
}, recv, nil)
738-
require.EqualValues(t, 0, rs.index)
738+
require.EqualValues(t, 0, rs.Index())
739739
{
740740
_, err := rs.nextRow(ctx)
741741
require.NoError(t, err)
@@ -886,7 +886,7 @@ func TestResultSetNext(t *testing.T) {
886886

887887
return part, nil
888888
}, recv, nil)
889-
require.EqualValues(t, 0, rs.index)
889+
require.EqualValues(t, 0, rs.Index())
890890
{
891891
_, err := rs.nextRow(ctx)
892892
require.NoError(t, err)
@@ -948,7 +948,7 @@ func TestResultSetNext(t *testing.T) {
948948

949949
return part, nil
950950
}, recv, nil)
951-
require.EqualValues(t, 0, rs.index)
951+
require.EqualValues(t, 0, rs.Index())
952952
t.Run("Columns", func(t *testing.T) {
953953
require.EqualValues(t, []string{"a", "b"}, rs.Columns())
954954
})

internal/query/result_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ func TestResultNextResultSet(t *testing.T) {
352352
t.Log("nextResultSet")
353353
rs, err := r.nextResultSet(ctx)
354354
require.NoError(t, err)
355-
require.EqualValues(t, 0, rs.index)
355+
require.EqualValues(t, 0, rs.Index())
356356
{
357357
t.Log("next (row=1)")
358358
_, err := rs.nextRow(ctx)
@@ -393,13 +393,13 @@ func TestResultNextResultSet(t *testing.T) {
393393
t.Log("nextResultSet")
394394
rs, err := r.nextResultSet(ctx)
395395
require.NoError(t, err)
396-
require.EqualValues(t, 1, rs.index)
396+
require.EqualValues(t, 1, rs.Index())
397397
}
398398
{
399399
t.Log("nextResultSet")
400400
rs, err := r.nextResultSet(ctx)
401401
require.NoError(t, err)
402-
require.EqualValues(t, 2, rs.index)
402+
require.EqualValues(t, 2, rs.Index())
403403
{
404404
t.Log("next (row=1)")
405405
_, err := rs.nextRow(ctx)
@@ -521,7 +521,7 @@ func TestResultNextResultSet(t *testing.T) {
521521
t.Log("nextResultSet")
522522
rs, err := r.nextResultSet(ctx)
523523
require.NoError(t, err)
524-
require.EqualValues(t, 0, rs.index)
524+
require.EqualValues(t, 0, rs.Index())
525525
{
526526
t.Log("next (row=1)")
527527
_, err := rs.nextRow(ctx)
@@ -840,7 +840,7 @@ func TestResultNextResultSet(t *testing.T) {
840840
t.Log("nextResultSet")
841841
rs, err := r.nextResultSet(ctx)
842842
require.NoError(t, err)
843-
require.EqualValues(t, 0, rs.index)
843+
require.EqualValues(t, 0, rs.Index())
844844
{
845845
t.Log("next (row=1)")
846846
_, err := rs.nextRow(ctx)
@@ -881,7 +881,7 @@ func TestResultNextResultSet(t *testing.T) {
881881
t.Log("nextResultSet")
882882
rs, err := r.nextResultSet(ctx)
883883
require.NoError(t, err)
884-
require.EqualValues(t, 2, rs.index)
884+
require.EqualValues(t, 2, rs.Index())
885885
}
886886
{
887887
t.Log("nextResultSet")

query/result.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ type (
2323
Columns() []string
2424
ColumnTypes() []Type
2525
NextRow(ctx context.Context) (Row, error)
26+
Index() int
2627

2728
// Range is experimental API for range iterators available with Go version 1.22+ and flag `GOEXPERIMENT=rangefunc`.
2829
Range(ctx context.Context) xiter.Seq2[Row, error]

0 commit comments

Comments
 (0)