Skip to content

Commit

Permalink
added internal/xiter package as proxy package for use experimental ra…
Browse files Browse the repository at this point in the history
…ngefunc's
  • Loading branch information
asmyasnikov committed Jun 10, 2024
1 parent 78117d0 commit 4bc2850
Show file tree
Hide file tree
Showing 12 changed files with 914 additions and 804 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
* Added experimental range functions to the `query.Result` and `query.ResultSet` types, available starting with Go version 1.22. These features can be enabled by setting the environment variable `GOEXPERIMENT=rangefunc`.
* Added experimental range functions to the `query.Result` and `query.ResultSet` types, available as for-range loops starting with Go version 1.22. These features can be enabled by setting the environment variable `GOEXPERIMENT=rangefunc`.
* Added public types for `tx.Option`, `options.DoOption` and `options.DoTxOption`

## v3.73.1
Expand Down
16 changes: 0 additions & 16 deletions internal/query/range.go

This file was deleted.

21 changes: 5 additions & 16 deletions internal/query/range_experiment.go
Original file line number Diff line number Diff line change
@@ -1,29 +1,18 @@
//go:build go1.22 && goexperiment.rangefunc

package query

import (
"context"
"io"
"iter"

"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xiter"
"github.com/ydb-platform/ydb-go-sdk/v3/query"
)

type (
resultRange struct {
r query.Result
}
resultSetRange struct {
rs query.ResultSet
}
)

func (r *resultRange) Range(ctx context.Context) iter.Seq2[query.ResultSet, error] {
func rangeResultSets(ctx context.Context, r query.Result) xiter.Seq2[query.ResultSet, error] {
return func(yield func(query.ResultSet, error) bool) {
for {
rs, err := r.r.NextResultSet(ctx)
rs, err := r.NextResultSet(ctx)
if err != nil {
if xerrors.Is(err, io.EOF) {
return
Expand All @@ -37,10 +26,10 @@ func (r *resultRange) Range(ctx context.Context) iter.Seq2[query.ResultSet, erro
}
}

func (r *resultSetRange) Range(ctx context.Context) iter.Seq2[query.Row, error] {
func rangeRows(ctx context.Context, rs query.ResultSet) xiter.Seq2[query.Row, error] {
return func(yield func(query.Row, error) bool) {
for {
rs, err := r.rs.NextRow(ctx)
rs, err := rs.NextRow(ctx)
if err != nil {
if xerrors.Is(err, io.EOF) {
return
Expand Down
25 changes: 12 additions & 13 deletions internal/query/result.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/ydb-platform/ydb-go-sdk/v3/internal/stack"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xcontext"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xiter"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xsync"
"github.com/ydb-platform/ydb-go-sdk/v3/query"
"github.com/ydb-platform/ydb-go-sdk/v3/trace"
Expand All @@ -23,14 +24,10 @@ var (

type (
materializedResult struct {
resultRange

resultSets []query.ResultSet
idx int
}
result struct {
resultRange

stream Ydb_Query_V1.QueryService_ExecuteQueryClient
closeOnce func(ctx context.Context) error
lastPart *Ydb_Query.ExecuteQueryResponsePart
Expand All @@ -41,6 +38,14 @@ type (
}
)

func (r *materializedResult) Range(ctx context.Context) xiter.Seq2[query.ResultSet, error] {
return rangeResultSets(ctx, r)
}

func (r *result) Range(ctx context.Context) xiter.Seq2[query.ResultSet, error] {
return rangeResultSets(ctx, r)
}

func (r *materializedResult) Close(ctx context.Context) error {
return nil
}
Expand All @@ -62,12 +67,9 @@ func (r *materializedResult) Err() error {
}

func newMaterializedResult(resultSets []query.ResultSet) *materializedResult {
r := &materializedResult{
return &materializedResult{
resultSets: resultSets,
}
r.resultRange = resultRange{r: r}

return r
}

func newResult(
Expand Down Expand Up @@ -109,17 +111,14 @@ func newResult(
})
)

r := &result{
return &result{
stream: stream,
resultSetIndex: -1,
lastPart: part,
closed: closed,
closeOnce: closeOnce,
trace: t,
}
r.resultRange = resultRange{r: r}

return r, part.GetTxMeta().GetId(), nil
}, part.GetTxMeta().GetId(), nil
}
}

Expand Down
23 changes: 11 additions & 12 deletions internal/query/result_set.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/ydb-platform/ydb-go-sdk/v3/internal/stack"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/types"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xiter"
"github.com/ydb-platform/ydb-go-sdk/v3/query"
"github.com/ydb-platform/ydb-go-sdk/v3/trace"
)
Expand All @@ -22,16 +23,12 @@ var (

type (
materializedResultSet struct {
resultSetRange

columnNames []string
columnTypes []types.Type
rows []query.Row
idx int
}
resultSet struct {
resultSetRange

index int64
recv func() (*Ydb_Query.ExecuteQueryResponsePart, error)
columns []*Ydb.Column
Expand All @@ -42,6 +39,14 @@ type (
}
)

func (rs *materializedResultSet) Range(ctx context.Context) xiter.Seq2[query.Row, error] {
return rangeRows(ctx, rs)
}

func (rs *resultSet) Range(ctx context.Context) xiter.Seq2[query.Row, error] {
return rangeRows(ctx, rs)
}

func (rs *materializedResultSet) Columns() (columnNames []string) {
return rs.columnNames
}
Expand Down Expand Up @@ -85,14 +90,11 @@ func NewMaterializedResultSet(
columnTypes []types.Type,
rows []query.Row,
) *materializedResultSet {
rs := &materializedResultSet{
return &materializedResultSet{
columnNames: columnNames,
columnTypes: columnTypes,
rows: rows,
}
rs.resultSetRange = resultSetRange{rs: rs}

return rs
}

func newResultSet(
Expand All @@ -104,7 +106,7 @@ func newResultSet(
t = &trace.Query{}
}

rs := &resultSet{
return &resultSet{
index: part.GetResultSetIndex(),
recv: recv,
currentPart: part,
Expand All @@ -113,9 +115,6 @@ func newResultSet(
trace: t,
done: make(chan struct{}),
}
rs.resultSetRange = resultSetRange{rs: rs}

return rs
}

func (rs *resultSet) nextRow(ctx context.Context) (*row, error) {
Expand Down
Loading

0 comments on commit 4bc2850

Please sign in to comment.