Skip to content

Commit 76c2b9a

Browse files
committed
Introduced Columns interface
1 parent 7cb01a0 commit 76c2b9a

File tree

3 files changed

+2560
-76
lines changed

3 files changed

+2560
-76
lines changed

app/server/datasource/rdbms/utils/interface.go

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55

66
"go.uber.org/zap"
77

8+
"github.com/apache/arrow/go/v13/arrow"
89
"github.com/ydb-platform/ydb-go-genproto/protos/Ydb"
910

1011
api_common "github.com/ydb-platform/fq-connector-go/api/common"
@@ -16,13 +17,38 @@ import (
1617
"github.com/ydb-platform/fq-connector-go/common"
1718
)
1819

20+
// Rows represents an iterator returning data from a row-oriented storage.
21+
// Each data piece is a row.
22+
type Rows interface {
23+
Close() error
24+
Err() error
25+
Next() bool
26+
NextResultSet() bool
27+
Scan(dest ...any) error
28+
MakeTransformer(columns []*Ydb.Column, cc conversion.Collection) (paging.RowTransformer[any], error)
29+
}
30+
31+
// Columns represents an iterator returning data from a column-oriented storage.
32+
// Each data piece is an Apache Arrow Record.
33+
type Columns interface {
34+
Close() error
35+
Err() error
36+
Next() bool
37+
Record() arrow.Record
38+
}
39+
1940
type QueryParams struct {
2041
Ctx context.Context
2142
Logger *zap.Logger
2243
QueryText string
2344
QueryArgs *QueryArgs
2445
}
2546

47+
type QueryResult struct {
48+
Rows Rows
49+
Columns Columns
50+
}
51+
2652
type Connection interface {
2753
// Query runs a query on a specific connection.
2854
Query(params *QueryParams) (Rows, error)
@@ -37,15 +63,6 @@ type Connection interface {
3763
Close() error
3864
}
3965

40-
type Rows interface {
41-
Close() error
42-
Err() error
43-
Next() bool
44-
NextResultSet() bool
45-
Scan(dest ...any) error
46-
MakeTransformer(columns []*Ydb.Column, cc conversion.Collection) (paging.RowTransformer[any], error)
47-
}
48-
4966
//go:generate stringer -type=QueryPhase
5067
type QueryPhase int8
5168

go.mod

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
module github.com/ydb-platform/fq-connector-go
22

3-
go 1.23
3+
go 1.23.0
4+
5+
toolchain go1.23.8
46

57
require (
68
github.com/ClickHouse/ch-go v0.58.2
@@ -24,28 +26,28 @@ require (
2426
github.com/pingcap/errors v0.11.5-0.20201126102027-b0a155152ca3
2527
github.com/pkg/errors v0.9.1
2628
github.com/prometheus/client_golang v1.16.0
27-
github.com/prometheus/client_model v0.5.0
29+
github.com/prometheus/client_model v0.6.0
2830
github.com/prometheus/common v0.44.0
2931
github.com/prometheus/procfs v0.11.1
3032
github.com/redis/go-redis/v9 v9.7.0
3133
github.com/shirou/gopsutil/v3 v3.24.2
3234
github.com/sijms/go-ora/v2 v2.8.19
3335
github.com/spf13/cobra v1.8.0
3436
github.com/spf13/pflag v1.0.5
35-
github.com/stretchr/testify v1.9.0
36-
github.com/ydb-platform/ydb-go-genproto v0.0.0-20241112172322-ea1f63298f77
37+
github.com/stretchr/testify v1.10.0
38+
github.com/ydb-platform/ydb-go-genproto v0.0.0-20250614155103-604a63ad5da2
3739
github.com/ydb-platform/ydb-go-sdk/v3 v3.108.0
3840
github.com/ydb-platform/ydb-go-yc v0.11.0
3941
go.mongodb.org/mongo-driver v1.17.1
4042
go.uber.org/atomic v1.11.0
41-
go.uber.org/zap v1.26.0
43+
go.uber.org/zap v1.27.0
4244
golang.org/x/exp v0.0.0-20240222234643-814bf88cf225
43-
golang.org/x/sync v0.10.0
45+
golang.org/x/sync v0.12.0
4446
golang.org/x/time v0.5.0
4547
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028
4648
gonum.org/v1/gonum v0.14.0
47-
google.golang.org/grpc v1.65.0
48-
google.golang.org/protobuf v1.34.1
49+
google.golang.org/grpc v1.69.4
50+
google.golang.org/protobuf v1.35.1
4951
gopkg.in/yaml.v3 v3.0.1
5052
k8s.io/api v0.30.2
5153
k8s.io/apimachinery v0.30.2
@@ -55,7 +57,7 @@ require (
5557

5658
require (
5759
github.com/andybalholm/brotli v1.1.0 // indirect
58-
github.com/apache/thrift v0.16.0 // indirect
60+
github.com/apache/thrift v0.17.0 // indirect
5961
github.com/beorn7/perks v1.0.1 // indirect
6062
github.com/cespare/xxhash/v2 v2.3.0 // indirect
6163
github.com/davecgh/go-spew v1.1.1 // indirect
@@ -64,31 +66,31 @@ require (
6466
github.com/frankban/quicktest v1.14.5 // indirect
6567
github.com/go-faster/city v1.0.1 // indirect
6668
github.com/go-faster/errors v0.6.1 // indirect
67-
github.com/go-logr/logr v1.4.1 // indirect
69+
github.com/go-logr/logr v1.4.2 // indirect
6870
github.com/go-ole/go-ole v1.2.6 // indirect
6971
github.com/go-openapi/jsonpointer v0.19.6 // indirect
7072
github.com/go-openapi/jsonreference v0.20.2 // indirect
7173
github.com/go-openapi/swag v0.22.3 // indirect
72-
github.com/goccy/go-json v0.10.0 // indirect
74+
github.com/goccy/go-json v0.10.2 // indirect
7375
github.com/gogo/protobuf v1.3.2 // indirect
74-
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
76+
github.com/golang-jwt/jwt/v4 v4.5.2 // indirect
7577
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe // indirect
7678
github.com/golang-sql/sqlexp v0.1.0 // indirect
7779
github.com/golang/snappy v0.0.4 // indirect
78-
github.com/google/flatbuffers v23.1.21+incompatible // indirect
80+
github.com/google/flatbuffers v23.5.26+incompatible // indirect
7981
github.com/google/gnostic-models v0.6.8 // indirect
8082
github.com/google/gofuzz v1.2.0 // indirect
8183
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
8284
github.com/inconshreveable/mousetrap v1.1.0 // indirect
8385
github.com/jackc/pgpassfile v1.0.0 // indirect
8486
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
8587
github.com/jackc/puddle/v2 v2.2.1 // indirect
86-
github.com/jonboulle/clockwork v0.4.0 // indirect
88+
github.com/jonboulle/clockwork v0.5.0 // indirect
8789
github.com/josharian/intern v1.0.0 // indirect
8890
github.com/json-iterator/go v1.1.12 // indirect
8991
github.com/klauspost/asmfmt v1.3.2 // indirect
9092
github.com/klauspost/compress v1.16.7 // indirect
91-
github.com/klauspost/cpuid/v2 v2.2.3 // indirect
93+
github.com/klauspost/cpuid/v2 v2.2.5 // indirect
9294
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
9395
github.com/mailru/easyjson v0.7.7 // indirect
9496
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
@@ -118,19 +120,19 @@ require (
118120
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
119121
github.com/yusufpapurcu/wmi v1.2.4 // indirect
120122
github.com/zeebo/xxh3 v1.0.2 // indirect
121-
go.opentelemetry.io/otel v1.22.0 // indirect
122-
go.opentelemetry.io/otel/trace v1.22.0 // indirect
123+
go.opentelemetry.io/otel v1.31.0 // indirect
124+
go.opentelemetry.io/otel/trace v1.31.0 // indirect
123125
go.uber.org/multierr v1.11.0 // indirect
124-
golang.org/x/crypto v0.31.0 // indirect
126+
golang.org/x/crypto v0.36.0 // indirect
125127
golang.org/x/mod v0.17.0 // indirect
126-
golang.org/x/net v0.33.0 // indirect
127-
golang.org/x/oauth2 v0.20.0 // indirect
128-
golang.org/x/sys v0.28.0 // indirect
129-
golang.org/x/term v0.27.0 // indirect
130-
golang.org/x/text v0.21.0 // indirect
128+
golang.org/x/net v0.38.0 // indirect
129+
golang.org/x/oauth2 v0.23.0 // indirect
130+
golang.org/x/sys v0.31.0 // indirect
131+
golang.org/x/term v0.30.0 // indirect
132+
golang.org/x/text v0.23.0 // indirect
131133
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
132-
google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect
133-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect
134+
google.golang.org/genproto/googleapis/api v0.0.0-20241015192408-796eee8c2d53 // indirect
135+
google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 // indirect
134136
gopkg.in/inf.v0 v0.9.1 // indirect
135137
gopkg.in/yaml.v2 v2.4.0 // indirect
136138
k8s.io/klog/v2 v2.120.1 // indirect
@@ -139,3 +141,5 @@ require (
139141
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
140142
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
141143
)
144+
145+
replace github.com/ydb-platform/ydb-go-sdk/v3 => /home/vitalyisaev/projects/ydb-go-sdk

0 commit comments

Comments
 (0)