diff options
author | asmyasnikov <asmyasnikov@yandex-team.ru> | 2022-02-08 10:37:21 +0300 |
---|---|---|
committer | asmyasnikov <asmyasnikov@yandex-team.ru> | 2022-02-08 10:37:21 +0300 |
commit | 6a99be484670d42ac92362906cd2fdf2f670fc88 (patch) | |
tree | 25d7ba3bc773d676bdda421aa51090e0e9f245f5 | |
parent | 8bebf8a653c586920c10da358b410e6ddde0ae18 (diff) | |
download | ydb-6a99be484670d42ac92362906cd2fdf2f670fc88.tar.gz |
KIKIMR-13205 KIKIMR-14176 update ydb-go-sdk to v3.8.11
KIKIMR-13205 KIKIMR-14176 update ydb-go-sdk to v3.8.11
Release v3.8.11:
* Changed connection secure to `true` by default
* Renamed public package `balancer` to `balancers` (this package contains only constructors of balancers)
* Moved interfaces from package `internal/balancer/ibalancer` to `internal/balancer`
* Added `NextResultSetErr()` func for select next result set and return error
* Added package `table/result/indexed` with interfaces `indexed.Required`, `indexed.Optional`, `indexed.RequiredOrOptional`
* Replaced abstract `interface{}` in `Scan` to `indexed.RequiredOrOptional`
* Replaced abstract `interface{}` in `ScanWithDefaults` to `indexed.Required`
* Replaced `trace.Table.OnPoolRetry` callback to `trace.Table.OnPoolDo` and `trace.Table.OnPoolDoTx` callbacks
* Supports server hint `session-close` for gracefully shutdown session
```go
for res.NextResultSet(ctx, "col1", "col2") {
for res.NextRow() {
err = res.Scan(&col1, &col2)
}
}
```
```go
for res.NextResultSet(ctx) {
for res.NextRow() {
err = res.ScanNamed(
named.Optional("col1", &col1),
named.Required("col2", &col2)
)
}
}
```
ref:2e0a8b71c8c7aeeca9497d0e38abbc7f682b3e6f
4 files changed, 39 insertions, 28 deletions
diff --git a/ydb/docs/ru/core/reference/ydb-sdk/example/_includes/example-go.md b/ydb/docs/ru/core/reference/ydb-sdk/example/_includes/example-go.md index e6d4e0d690..3ad8ac6053 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/example/_includes/example-go.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/example/_includes/example-go.md @@ -18,6 +18,8 @@ import ( "github.com/ydb-platform/ydb-go-sdk/v3" "github.com/ydb-platform/ydb-go-sdk/v3/table" // для работы с table-сервисом "github.com/ydb-platform/ydb-go-sdk/v3/table/options" // для работы с table-сервисом + "github.com/ydb-platform/ydb-go-sdk/v3/table/result" // для работы с table-сервисом + "github.com/ydb-platform/ydb-go-sdk/v3/table/result/named" // для работы с table-сервисом "github.com/ydb-platform/ydb-go-sdk-auth-environ" // для аутентификации с использованием перменных окружения "github.com/ydb-platform/ydb-go-yc" // для работы с YDB в Яндекс Облаке ) @@ -54,7 +56,7 @@ defer func() { Объект `db` является входной точкой для работы с сервисами `YDB`. Для работы сервисом таблиц следует использовать клиента table-сервиса `db.Table()`. Клиент table-сервиса предоставляет `API` для выполнения запросов над таблицами. -Наиболее востребован метод `db.Table().Do(ctx, op)`, который реализует фоновое создание сессий и повторные попытки выполнить пользовательскую операцию `op`, в которую пользовательскому коду отдается подготовленная сессия. +Наиболее востребован метод `db.Table().Do(ctx, op)`, который реализует фоновое создание сессий и повторные попытки выполнить пользовательскую операцию `op`, в которую пользовательскому коду отдается подготовленная сессия. Сессия имеет исчерпывающее `API`, позволяющее выполнять `DDL`, `DML`, `DQL` и `TCL` запросы. ## Создание таблиц с помощью CreateTable API {#create-table-api} @@ -126,8 +128,8 @@ err := db.Table().Do( date *time.Time // указатель - для опциональных результатов ) _, res, err = s.Execute( - ctx, - readTx, + ctx, + readTx, ` DECLARE $seriesID AS Uint64; SELECT @@ -153,11 +155,15 @@ err := db.Table().Do( _ = res.Close() // закрытие result'а обязательно }() log.Printf("> select_simple_transaction:\n") - // Имена колонок в NextResultSet устанавливают порядок чтения колонок в последующем Scan - for res.NextResultSet(ctx, "series_id", "title", "release_date") { + for res.NextResultSet(ctx) { for res.NextRow() { - // в Scan передаем адреса (и типы данных), куда следует присвоить результаты запроса - err = res.Scan(&id, &title, &date) + // в ScanNamed передаем имена колонок из строки сканирования, + // адреса (и типы данных), куда следует присвоить результаты запроса + err = res.ScanNamed( + named.Optional("series_id", &id), + named.Optional("title", &title), + named.Optional("release_date", &date), + ) if err != nil { return err } @@ -215,14 +221,19 @@ err = c.Do( date time.Time ) log.Print("\n> scan_query_select:") - // Имена колонок в NextResultSet устанавливают порядок чтения колонок в последующем ScanWithDefaults - for res.NextResultSet(ctx, "series_id", "season_id", "title", "first_aired") { + for res.NextResultSet(ctx) { if err = res.Err(); err != nil { return err } for res.NextRow() { - // ScanWithDefaults позволяет "развернуть" опциональные результаты или использовать дефолтное значение типа go - err = res.ScanWithDefaults(&seriesID, &seasonID, &title, &date) + // named.OptionalOrDefault позволяет "развернуть" опциональные + // результаты или использовать дефолтное значение типа go + err = res.ScanNamed( + named.OptionalOrDefault("series_id", &seriesID), + named.OptionalOrDefault("season_id", &seasonID), + named.OptionalOrDefault("title", &title), + named.OptionalOrDefault("first_aired", &date), + ) if err != nil { return err } diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/balancing/_includes/prefer_local/go.md b/ydb/docs/ru/core/reference/ydb-sdk/recipes/balancing/_includes/prefer_local/go.md index 1029058100..44b5676a1c 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/recipes/balancing/_includes/prefer_local/go.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/recipes/balancing/_includes/prefer_local/go.md @@ -4,9 +4,9 @@ package main import ( "context" "os" - + "github.com/ydb-platform/ydb-go-sdk/v3" - "github.com/ydb-platform/ydb-go-sdk/v3/balancer" + "github.com/ydb-platform/ydb-go-sdk/v3/balancers" ) func main() { @@ -16,16 +16,16 @@ func main() { ctx, ... ydb.WithBalancer( - balancer.PreferLocalDC( - balancer.RandomChoice(), + balancers.PreferLocalDC( + balancers.RandomChoice(), ), ), ) if err != nil { panic(err) } - defer func() { - _ = db.Close(ctx) + defer func() { + _ = db.Close(ctx) }() } ``` diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/balancing/_includes/prefer_location/go.md b/ydb/docs/ru/core/reference/ydb-sdk/recipes/balancing/_includes/prefer_location/go.md index bde00fbdee..440f9827af 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/recipes/balancing/_includes/prefer_location/go.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/recipes/balancing/_includes/prefer_location/go.md @@ -4,9 +4,9 @@ package main import ( "context" "os" - + "github.com/ydb-platform/ydb-go-sdk/v3" - "github.com/ydb-platform/ydb-go-sdk/v3/balancer" + "github.com/ydb-platform/ydb-go-sdk/v3/balancers" ) func main() { @@ -16,8 +16,8 @@ func main() { ctx, ... ydb.WithBalancer( - balancer.PreferLocations( - balancer.RandomChoice(), + balancers.PreferLocations( + balancers.RandomChoice(), "MAN", "VLA", ), @@ -26,8 +26,8 @@ func main() { if err != nil { panic(err) } - defer func() { - _ = db.Close(ctx) + defer func() { + _ = db.Close(ctx) }() } ``` diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/balancing/_includes/random_choice/go.md b/ydb/docs/ru/core/reference/ydb-sdk/recipes/balancing/_includes/random_choice/go.md index 322f15c88c..b97c7ea77c 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/recipes/balancing/_includes/random_choice/go.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/recipes/balancing/_includes/random_choice/go.md @@ -4,9 +4,9 @@ package main import ( "context" "os" - + "github.com/ydb-platform/ydb-go-sdk/v3" - "github.com/ydb-platform/ydb-go-sdk/v3/balancer" + "github.com/ydb-platform/ydb-go-sdk/v3/balancers" ) func main() { @@ -16,14 +16,14 @@ func main() { ctx, ... ydb.WithBalancer( - balancer.RandomChoice(), + balancers.RandomChoice(), ), ) if err != nil { panic(err) } - defer func() { - _ = db.Close(ctx) + defer func() { + _ = db.Close(ctx) }() } ``` |