Documentation ¶
Overview ¶
Example (DatabaseSQL) ¶
package main import ( "context" "database/sql" "log" "time" "github.com/ydb-platform/ydb-go-sdk/v3/retry" ) func main() { db, err := sql.Open("ydb", "grpc://localhost:2136/local") if err != nil { log.Fatal(err) } defer func() { _ = db.Close() }() // cleanup resources db.SetMaxOpenConns(100) db.SetMaxIdleConns(100) db.SetConnMaxIdleTime(time.Second) // workaround for background keep-aliving of YDB sessions var ( id int32 // required value myStr string // optional value ) // retry transaction err = retry.DoTx(context.TODO(), db, func(ctx context.Context, tx *sql.Tx) error { row := tx.QueryRowContext(ctx, `SELECT 42 as id, "my string" as myStr`) if err = row.Scan(&id, &myStr); err != nil { return err } log.Printf("id=%v, myStr='%s'\n", id, myStr) return nil }, retry.WithIdempotent(true)) if err != nil { log.Printf("query failed: %v", err) } }
Output:
Example (DatabaseSQLBindAutoDeclare) ¶
package main import ( "context" "database/sql" "log" "github.com/ydb-platform/ydb-go-sdk/v3/table" "github.com/ydb-platform/ydb-go-sdk/v3/table/types" ) func main() { db, err := sql.Open("ydb", "grpc://localhost:2136/local?go_query_bind=declare", ) if err != nil { log.Fatal(err) } defer func() { _ = db.Close() }() // cleanup resources var ( id int32 // required value title string // optional value ) row := db.QueryRowContext(context.TODO(), "SELECT $id, $title", table.ValueParam("$id", types.Uint64Value(42)), table.ValueParam("$title", types.TextValue("title")), ) if err = row.Scan(&id, &title); err != nil { log.Printf("query failed: %v", err) } else { log.Printf("id=%v, title='%s'\n", id, title) } }
Output:
Example (DatabaseSQLBindAutoDeclareOverConnector) ¶
var ( ctx = context.TODO() nativeDriver = ydb.MustOpen(ctx, "grpc://localhost:2136/local") db = sql.OpenDB(ydb.MustConnector(nativeDriver, ydb.WithAutoDeclare(), )) ) row := db.QueryRowContext(context.TODO(), "SELECT $id, $title", table.ValueParam("$id", types.Uint64Value(42)), table.ValueParam("$title", types.TextValue("title")), ) var ( id int32 // required value title string // optional value ) if err := row.Scan(&id, &title); err != nil { log.Printf("query failed: %v", err) } else { log.Printf("id=%v, title='%s'\n", id, title) }
Output:
Example (DatabaseSQLBindNumericArgs) ¶
package main import ( "context" "database/sql" "log" ) func main() { db, err := sql.Open("ydb", "grpc://localhost:2136/local?go_query_bind=declare,numeric", ) if err != nil { log.Fatal(err) } defer func() { _ = db.Close() }() // cleanup resources var ( id int32 // required value myStr string // optional value ) // numeric args row := db.QueryRowContext(context.TODO(), "SELECT $2, $1", 42, "my string") if err = row.Scan(&myStr, &id); err != nil { log.Printf("query failed: %v", err) } else { log.Printf("id=%v, myStr='%s'\n", id, myStr) } }
Output:
Example (DatabaseSQLBindNumericArgsOverConnector) ¶
var ( ctx = context.TODO() nativeDriver = ydb.MustOpen(ctx, "grpc://localhost:2136/local") db = sql.OpenDB( ydb.MustConnector(nativeDriver, ydb.WithAutoDeclare(), ydb.WithNumericArgs(), ), ) ) defer nativeDriver.Close(ctx) // cleanup resources defer db.Close() // numeric args row := db.QueryRowContext(context.TODO(), "SELECT $2, $1", 42, "my string", ) var ( id int32 // required value myStr string // optional value ) if err := row.Scan(&myStr, &id); err != nil { log.Printf("query failed: %v", err) } else { log.Printf("id=%v, myStr='%s'\n", id, myStr) }
Output:
Example (DatabaseSQLBindPositionalArgs) ¶
package main import ( "context" "database/sql" "log" ) func main() { db, err := sql.Open("ydb", "grpc://localhost:2136/local?go_query_bind=declare,positional", ) if err != nil { log.Fatal(err) } defer func() { _ = db.Close() }() // cleanup resources var ( id int32 // required value myStr string // optional value ) // positional args row := db.QueryRowContext(context.TODO(), "SELECT ?, ?", 42, "my string") if err = row.Scan(&id, &myStr); err != nil { log.Printf("query failed: %v", err) } else { log.Printf("id=%v, myStr='%s'\n", id, myStr) } }
Output:
Example (DatabaseSQLBindPositionalArgsOverConnector) ¶
var ( ctx = context.TODO() nativeDriver = ydb.MustOpen(ctx, "grpc://localhost:2136/local") db = sql.OpenDB( ydb.MustConnector(nativeDriver, ydb.WithAutoDeclare(), ydb.WithNumericArgs(), ), ) ) defer nativeDriver.Close(ctx) // cleanup resources defer db.Close() // positional args row := db.QueryRowContext(context.TODO(), "SELECT ?, ?", 42, "my string") var ( id int32 // required value myStr string // optional value ) if err := row.Scan(&id, &myStr); err != nil { log.Printf("query failed: %v", err) } else { log.Printf("id=%v, myStr='%s'\n", id, myStr) }
Output:
Example (DatabaseSQLBindTablePathPrefix) ¶
package main import ( "context" "database/sql" "log" ) func main() { db, err := sql.Open("ydb", "grpc://localhost:2136/local?go_query_bind=table_path_prefix(/local/path/to/tables)", ) if err != nil { log.Fatal(err) } defer func() { _ = db.Close() }() // cleanup resources var ( id int32 // required value title string // optional value ) // full table path is "/local/path/to/tables/series" row := db.QueryRowContext(context.TODO(), "SELECT id, title FROM series") if err = row.Scan(&id, &title); err != nil { log.Printf("query failed: %v", err) } else { log.Printf("id=%v, title='%s'\n", id, title) } }
Output:
Example (DatabaseSQLBindTablePathPrefixOverConnector) ¶
var ( ctx = context.TODO() nativeDriver = ydb.MustOpen(ctx, "grpc://localhost:2136/local") db = sql.OpenDB(ydb.MustConnector(nativeDriver, ydb.WithTablePathPrefix("/local/path/to/my/folder"), )) ) // full table path is "/local/path/to/tables/series" row := db.QueryRowContext(context.TODO(), "SELECT id, title FROM series") var ( id int32 // required value title string // optional value ) if err := row.Scan(&id, &title); err != nil { log.Printf("query failed: %v", err) } else { log.Printf("id=%v, title='%s'\n", id, title) }
Output:
Example (Discovery) ¶
ctx := context.TODO() db, err := ydb.Open(ctx, "grpc://localhost:2136/local") if err != nil { fmt.Printf("failed to connect: %v", err) return } defer db.Close(ctx) // cleanup resources endpoints, err := db.Discovery().Discover(ctx) if err != nil { fmt.Printf("discover failed: %v", err) return } fmt.Printf("%s endpoints:\n", db.Name()) for i, e := range endpoints { fmt.Printf("%d) %s\n", i, e.String()) }
Output:
Example (EnableGzipCompressionForAllRequests) ¶
ctx := context.TODO() db, err := ydb.Open( ctx, "grpc://localhost:2135/local", ydb.WithAnonymousCredentials(), ydb.With(config.WithGrpcOptions( grpc.WithDefaultCallOptions( grpc.UseCompressor(gzip.Name), ), )), ) if err != nil { fmt.Printf("Driver failed: %v", err) } defer db.Close(ctx) // cleanup resources fmt.Printf("connected to %s, database '%s'", db.Endpoint(), db.Name())
Output:
Example (Query) ¶
ctx := context.TODO() db, err := ydb.Open(ctx, "grpc://localhost:2136/local") if err != nil { panic(err) } defer db.Close(ctx) // cleanup resources materializedResult, err := db.Query().Query( // Do retry operation on errors with best effort ctx, // context manage exiting from Do `SELECT $id as myId, $str as myStr`, query.WithParameters( ydb.ParamsBuilder(). Param("$id").Uint64(42). Param("$str").Text("my string"). Build(), ), query.WithIdempotent(), ) if err != nil { panic(err) } defer func() { _ = materializedResult.Close(ctx) }() // cleanup resources for rs, err := range materializedResult.ResultSets(ctx) { if err != nil { panic(err) } for row, err := range rs.Rows(ctx) { if err != nil { panic(err) } type myStruct struct { ID uint64 `sql:"id"` Str string `sql:"myStr"` } var s myStruct if err = row.ScanStruct(&s); err != nil { panic(err) } } } if err != nil { panic(err) }
Output:
Example (Scripting) ¶
ctx := context.TODO() db, err := ydb.Open(ctx, "grpc://localhost:2136/local") if err != nil { fmt.Printf("failed to connect: %v", err) return } defer db.Close(ctx) // cleanup resources if err = retry.Retry(ctx, func(ctx context.Context) (err error) { //nolint:nonamedreturns res, err := db.Scripting().Execute( ctx, "SELECT 1+1", table.NewQueryParameters(), ) if err != nil { return err } defer res.Close() // cleanup resources if !res.NextResultSet(ctx) { return retry.RetryableError( fmt.Errorf("no result sets"), //nolint:goerr113 retry.WithBackoff(retry.TypeNoBackoff), ) } if !res.NextRow() { return retry.RetryableError( fmt.Errorf("no rows"), //nolint:goerr113 retry.WithBackoff(retry.TypeSlowBackoff), ) } var sum int32 if err = res.Scan(&sum); err != nil { return fmt.Errorf("scan failed: %w", err) } if sum != 2 { return fmt.Errorf("unexpected sum: %v", sum) //nolint:goerr113 } return res.Err() }, retry.WithIdempotent(true)); err != nil { fmt.Printf("Execute failed: %v", err) }
Output:
Example (Table) ¶
ctx := context.TODO() db, err := ydb.Open(ctx, "grpc://localhost:2136/local") if err != nil { log.Fatal(err) } defer db.Close(ctx) // cleanup resources var ( query = `SELECT 42 as id, "my string" as myStr` id int32 // required value myStr string // optional value ) err = db.Table().Do( // Do retry operation on errors with best effort ctx, // context manage exiting from Do func(ctx context.Context, s table.Session) (err error) { // retry operation _, res, err := s.Execute(ctx, table.DefaultTxControl(), query, nil) if err != nil { return err // for auto-retry with driver } defer res.Close() // cleanup resources if err = res.NextResultSetErr(ctx); err != nil { // check single result set and switch to it return err // for auto-retry with driver } for res.NextRow() { // iterate over rows err = res.ScanNamed( named.Required("id", &id), named.OptionalWithDefault("myStr", &myStr), ) if err != nil { return err // generally scan error not retryable, return it for driver check error } log.Printf("id=%v, myStr='%s'\n", id, myStr) } return res.Err() // return finally result error for auto-retry with driver }, table.WithIdempotent(), ) if err != nil { log.Printf("unexpected error: %v", err) }
Output:
Example (Topic) ¶
ctx := context.TODO() db, err := ydb.Open(ctx, "grpc://localhost:2136/local") if err != nil { fmt.Printf("failed connect: %v", err) return } defer db.Close(ctx) // cleanup resources reader, err := db.Topic().StartReader("consumer", topicoptions.ReadTopic("/topic/path")) if err != nil { fmt.Printf("failed start reader: %v", err) return } for { mess, err := reader.ReadMessage(ctx) if err != nil { fmt.Printf("failed start reader: %v", err) return } content, err := io.ReadAll(mess) if err != nil { fmt.Printf("failed start reader: %v", err) return } fmt.Println(string(content)) }
Output:
Index ¶
- Constants
- func GRPCConn(cc *Driver) grpc.ClientConnInterface
- func IsOperationError(err error, codes ...Ydb.StatusIds_StatusCode) bool
- func IsOperationErrorAlreadyExistsError(err error) bool
- func IsOperationErrorNotFoundError(err error) bool
- func IsOperationErrorOverloaded(err error) bool
- func IsOperationErrorSchemeError(err error) bool
- func IsOperationErrorTransactionLocksInvalidated(err error) (isTLI bool)
- func IsOperationErrorUnavailable(err error) bool
- func IsRatelimiterAcquireError(err error) bool
- func IsTimeoutError(err error) bool
- func IsTransportError(err error, codes ...grpcCodes.Code) bool
- func IsYdbError(err error) bool
- func IterateByIssues(err error, ...)
- func ParamsBuilder() params.Builder
- func ParamsFromMap(m map[string]any) params.Parameters
- func RegisterDsnParser(parser func(dsn string) (opts []Option, _ error)) (registrationID int)
- func ToRatelimiterAcquireError(err error) ratelimiter.AcquireError
- func UnregisterDsnParser(registrationID int)
- func WithOperationCancelAfter(ctx context.Context, operationCancelAfter time.Duration) context.Context
- func WithOperationTimeout(ctx context.Context, operationTimeout time.Duration) context.Context
- func WithPreferredNodeID(ctx context.Context, nodeID uint32) context.Context
- func WithQueryMode(ctx context.Context, mode QueryMode) context.Context
- func WithRequestType(ctx context.Context, requestType string) context.Contextdeprecated
- func WithTraceID(ctx context.Context, traceID string) context.Contextdeprecated
- func WithTxControl(ctx context.Context, txc *table.TransactionControl) context.Context
- type Connectiondeprecated
- type ConnectorOption
- func WithDatabaseSQLTrace(t trace.DatabaseSQL, opts ...trace.DatabaseSQLComposeOption) ConnectorOption
- func WithDefaultDataQueryOptions(opts ...options.ExecuteDataQueryOption) ConnectorOption
- func WithDefaultQueryMode(mode QueryMode) ConnectorOption
- func WithDefaultScanQueryOptions(opts ...options.ExecuteScanQueryOption) ConnectorOption
- func WithDefaultTxControl(txControl *table.TransactionControl) ConnectorOption
- func WithDisableServerBalancer() ConnectorOption
- func WithFakeTx(modes ...QueryMode) ConnectorOption
- func WithQueryService(b bool) ConnectorOption
- type Driver
- func (d *Driver) Close(ctx context.Context) (finalErr error)
- func (d *Driver) Coordination() coordination.Client
- func (d *Driver) Discovery() discovery.Client
- func (d *Driver) Endpoint() string
- func (d *Driver) Name() string
- func (d *Driver) Operation() *operation.Client
- func (d *Driver) Query() *internalQuery.Client
- func (d *Driver) Ratelimiter() ratelimiter.Client
- func (d *Driver) Scheme() scheme.Client
- func (d *Driver) Scripting() scripting.Client
- func (d *Driver) Secure() bool
- func (d *Driver) String() string
- func (d *Driver) Table() table.Client
- func (d *Driver) Topic() topic.Client
- func (d *Driver) With(ctx context.Context, opts ...Option) (*Driver, error)
- type Error
- type Option
- func MergeOptions(opts ...Option) Option
- func With(options ...config.Option) Option
- func WithAccessTokenCredentials(accessToken string) Option
- func WithAnonymousCredentials() Option
- func WithApplicationName(applicationName string) Option
- func WithBalancer(balancer *balancerConfig.Config) Option
- func WithCertificate(cert *x509.Certificate) Option
- func WithCertificatesFromFile(caFile string, opts ...certificates.FromFileOption) Option
- func WithCertificatesFromPem(bytes []byte, opts ...certificates.FromPemOption) Option
- func WithConnectionString(connectionString string) Option
- func WithConnectionTTL(ttl time.Duration) Option
- func WithCreateCredentialsFunc(createCredentials func(ctx context.Context) (credentials.Credentials, error)) Option
- func WithCredentials(c credentials.Credentials) Option
- func WithDatabase(database string) Optiondeprecated
- func WithDialTimeout(timeout time.Duration) Option
- func WithDiscoveryInterval(discoveryInterval time.Duration) Option
- func WithEndpoint(endpoint string) Optiondeprecated
- func WithIgnoreTruncated() Option
- func WithInsecure() Option
- func WithLazyTx(lazyTx bool) Option
- func WithLogger(l log.Logger, details trace.Detailer, opts ...log.Option) Option
- func WithMinTLSVersion(minVersion uint16) Option
- func WithNodeAddressMutator(mutator func(address string) string) Option
- func WithOauth2TokenExchangeCredentials(opts ...credentials.Oauth2TokenExchangeCredentialsOption) Option
- func WithOauth2TokenExchangeCredentialsFile(configFilePath string, ...) Option
- func WithPanicCallback(panicCallback func(e interface{})) Option
- func WithQueryConfigOption(option queryConfig.Option) Option
- func WithRatelimiterOptions(opts ...ratelimiterConfig.Option) Option
- func WithRequestsType(requestsType string) Option
- func WithRetryBudget(b budget.Budget) Option
- func WithSecure(secure bool) Option
- func WithSessionPoolCreateSessionTimeout(createSessionTimeout time.Duration) Option
- func WithSessionPoolDeleteTimeout(deleteTimeout time.Duration) Option
- func WithSessionPoolIdleThreshold(idleThreshold time.Duration) Option
- func WithSessionPoolKeepAliveMinSize(keepAliveMinSize int) Optiondeprecated
- func WithSessionPoolKeepAliveTimeout(keepAliveTimeout time.Duration) Optiondeprecated
- func WithSessionPoolSessionIdleTimeToLive(idleThreshold time.Duration) Option
- func WithSessionPoolSessionUsageLimit(sessionUsageLimit uint64) Option
- func WithSessionPoolSizeLimit(sizeLimit int) Option
- func WithSharedBalancer(parent *Driver) Option
- func WithStaticCredentials(user, password string) Option
- func WithStaticCredentialsLogin(login string) Option
- func WithStaticCredentialsPassword(password string) Option
- func WithTLSConfig(tlsConfig *tls.Config) Option
- func WithTLSSInsecureSkipVerify() Option
- func WithTableConfigOption(option tableConfig.Option) Option
- func WithTraceCoordination(t trace.Coordination, opts ...trace.CoordinationComposeOption) Option
- func WithTraceDatabaseSQL(t trace.DatabaseSQL, opts ...trace.DatabaseSQLComposeOption) Option
- func WithTraceDiscovery(t trace.Discovery, opts ...trace.DiscoveryComposeOption) Option
- func WithTraceDriver(t trace.Driver, opts ...trace.DriverComposeOption) Option
- func WithTraceQuery(t trace.Query, opts ...trace.QueryComposeOption) Option
- func WithTraceRatelimiter(t trace.Ratelimiter, opts ...trace.RatelimiterComposeOption) Option
- func WithTraceRetry(t trace.Retry, opts ...trace.RetryComposeOption) Option
- func WithTraceScheme(t trace.Scheme, opts ...trace.SchemeComposeOption) Option
- func WithTraceScripting(t trace.Scripting, opts ...trace.ScriptingComposeOption) Option
- func WithTraceTable(t trace.Table, opts ...trace.TableComposeOption) Option
- func WithTraceTopic(t trace.Topic, opts ...trace.TopicComposeOption) Option
- func WithUserAgent(userAgent string) Optiondeprecated
- type QueryBindConnectorOption
- type QueryMode
- type SQLConnector
Examples ¶
- Package (DatabaseSQL)
- Package (DatabaseSQLBindAutoDeclare)
- Package (DatabaseSQLBindAutoDeclareOverConnector)
- Package (DatabaseSQLBindNumericArgs)
- Package (DatabaseSQLBindNumericArgsOverConnector)
- Package (DatabaseSQLBindPositionalArgs)
- Package (DatabaseSQLBindPositionalArgsOverConnector)
- Package (DatabaseSQLBindTablePathPrefix)
- Package (DatabaseSQLBindTablePathPrefixOverConnector)
- Package (Discovery)
- Package (EnableGzipCompressionForAllRequests)
- Package (Query)
- Package (Scripting)
- Package (Table)
- Package (Topic)
- Open
- Open (Advanced)
- ParamsFromMap
Constants ¶
const ( DataQueryMode ExplainQueryMode ScanQueryMode SchemeQueryMode ScriptingQueryMode QueryExecuteQueryMode )
const Version = version.Version
Version reports current version of sdk
Variables ¶
This section is empty.
Functions ¶
func GRPCConn ¶ added in v3.25.0
func GRPCConn(cc *Driver) grpc.ClientConnInterface
GRPCConn casts *ydb.Driver to grpc.ClientConnInterface for executing unary and streaming RPC over internal driver balancer.
Warning: for connect to driver-unsupported YDB services
func IsOperationError ¶
func IsOperationError(err error, codes ...Ydb.StatusIds_StatusCode) bool
IsOperationError reports whether any error is an operation error with one of passed codes. If codes not defined IsOperationError returns true on error is an operation error.
func IsOperationErrorAlreadyExistsError ¶ added in v3.5.0
IsOperationErrorAlreadyExistsError checks whether given err is an operation error with code AlreadyExistsError
func IsOperationErrorNotFoundError ¶ added in v3.5.0
IsOperationErrorNotFoundError checks whether given err is an operation error with code NotFoundError
func IsOperationErrorOverloaded ¶ added in v3.5.0
IsOperationErrorOverloaded checks whether given err is an operation error with code Overloaded
func IsOperationErrorSchemeError ¶ added in v3.5.0
IsOperationErrorSchemeError checks whether given err is an operation error with code SchemeError
func IsOperationErrorTransactionLocksInvalidated ¶ added in v3.48.4
IsOperationErrorTransactionLocksInvalidated checks does err a TLI issue
func IsOperationErrorUnavailable ¶ added in v3.5.0
IsOperationErrorUnavailable checks whether given err is an operation error with code Unavailable
func IsRatelimiterAcquireError ¶ added in v3.11.0
IsRatelimiterAcquireError checks whether given err is an ratelimiter acquire error
func IsTimeoutError ¶
IsTimeoutError checks whether given err is a some timeout error (context, transport or operation).
func IsTransportError ¶
IsTransportError checks whether given err is a transport (grpc) error.
func IsYdbError ¶ added in v3.4.2
IsYdbError reports when given error is and ydb error (transport, operation or internal driver error)
func IterateByIssues ¶
func IterateByIssues(err error, it func(message string, code Ydb.StatusIds_StatusCode, severity uint32))
IterateByIssues helps to iterate over internal issues of operation error.
func ParamsBuilder ¶ added in v3.57.0
ParamsBuilder used for create query arguments instead of tons options.
Experimental: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#experimental
func ParamsFromMap ¶ added in v3.92.0
func ParamsFromMap(m map[string]any) params.Parameters
ParamsFromMap build parameters from named map
Experimental: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#experimental
Example ¶
ctx := context.TODO() db, err := ydb.Open( ctx, "grpc://localhost:2135/local", ydb.WithAnonymousCredentials(), ydb.WithBalancer( balancers.PreferLocationsWithFallback( balancers.RandomChoice(), "a", "b", ), ), ydb.WithSessionPoolSizeLimit(100), ) if err != nil { fmt.Printf("Driver failed: %v", err) } defer db.Close(ctx) // cleanup resources fmt.Printf("connected to %s, database '%s'", db.Endpoint(), db.Name()) res, err := db.Query().QueryRow(ctx, ` DECLARE $textArg AS Text; DECLARE $intArg AS Int64; SELECT $textArg AS TextField, $intArg AS IntField `, query.WithParameters(ydb.ParamsFromMap(map[string]any{ "$textArg": "asd", "$intArg": int64(123), })), ) if err != nil { fmt.Printf("query failed") } var result struct { TextField string IntField int64 } err = res.ScanStruct(&result) if err != nil { fmt.Printf("scan failed") }
Output:
func RegisterDsnParser ¶ added in v3.68.0
RegisterDsnParser registers DSN parser for ydb.Open and sql.Open driver constructors
Experimental: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#experimental
func ToRatelimiterAcquireError ¶ added in v3.11.0
func ToRatelimiterAcquireError(err error) ratelimiter.AcquireError
ToRatelimiterAcquireError casts given err to ratelimiter.AcquireError. If given err is not ratelimiter acquire error - returns nil
func UnregisterDsnParser ¶ added in v3.68.0
func UnregisterDsnParser(registrationID int)
UnregisterDsnParser unregisters DSN parser by key
Experimental: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#experimental
func WithOperationCancelAfter ¶ added in v3.18.0
func WithOperationCancelAfter(ctx context.Context, operationCancelAfter time.Duration) context.Context
WithOperationCancelAfter returns a copy of parent context in which YDB operation cancel after parameter is set to d. If parent context cancellation timeout is smaller than d, parent context is returned.
func WithOperationTimeout ¶ added in v3.18.0
WithOperationTimeout returns a copy of parent context in which YDB operation timeout parameter is set to d. If parent context timeout is smaller than d, parent context is returned.
func WithPreferredNodeID ¶ added in v3.91.0
WithPreferredNodeID allows to set preferred node to get session from
func WithQueryMode ¶ added in v3.33.0
WithQueryMode set query mode for legacy database/sql driver
For actual database/sql driver works over query service client and no needs query mode
func WithRequestType
deprecated
added in
v3.13.0
WithRequestType returns a copy of parent context with custom request type
Deprecated: use meta.WithRequestType instead. Will be removed after Oct 2024. Read about versioning policy: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#deprecated
func WithTraceID
deprecated
added in
v3.13.0
WithTraceID returns a copy of parent context with traceID
Deprecated: use meta.WithTraceID instead. Will be removed after Oct 2024. Read about versioning policy: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#deprecated
func WithTxControl ¶ added in v3.36.0
Types ¶
type Connection
deprecated
type Connection interface { // Endpoint returns initial endpoint Endpoint() string // Name returns database name Name() string // Secure returns true if database connection is secure Secure() bool // Close closes connection and clear resources Close(ctx context.Context) error // Table returns table client Table() table.Client // Scheme returns scheme client Scheme() scheme.Client // Coordination returns coordination client Coordination() coordination.Client // Ratelimiter returns ratelimiter client Ratelimiter() ratelimiter.Client // Discovery returns discovery client Discovery() discovery.Client // Scripting returns scripting client Scripting() scripting.Client // Topic returns topic client Topic() topic.Client }
Connection interface provide access to YDB service clients Interface and list of clients may be changed in the future
Deprecated: use Driver instance instead. Will be removed at next major release. Read about versioning policy: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#deprecated
type ConnectorOption ¶ added in v3.33.0
func WithDatabaseSQLTrace ¶ added in v3.34.0
func WithDatabaseSQLTrace( t trace.DatabaseSQL, opts ...trace.DatabaseSQLComposeOption, ) ConnectorOption
func WithDefaultDataQueryOptions ¶ added in v3.33.0
func WithDefaultDataQueryOptions(opts ...options.ExecuteDataQueryOption) ConnectorOption
func WithDefaultQueryMode ¶ added in v3.33.0
func WithDefaultQueryMode(mode QueryMode) ConnectorOption
func WithDefaultScanQueryOptions ¶ added in v3.33.0
func WithDefaultScanQueryOptions(opts ...options.ExecuteScanQueryOption) ConnectorOption
func WithDefaultTxControl ¶ added in v3.33.0
func WithDefaultTxControl(txControl *table.TransactionControl) ConnectorOption
func WithDisableServerBalancer ¶ added in v3.42.4
func WithDisableServerBalancer() ConnectorOption
func WithFakeTx ¶ added in v3.44.0
func WithFakeTx(modes ...QueryMode) ConnectorOption
func WithQueryService ¶ added in v3.95.0
func WithQueryService(b bool) ConnectorOption
WithQueryService is an experimental flag for create database/sql driver over query service client
By default database/sql driver works over table service client Default will be changed to `WithQueryService` after March 2025
type Driver ¶ added in v3.43.0
type Driver struct {
// contains filtered or unexported fields
}
Driver type provide access to YDB service clients
func New
deprecated
New connects to database and return driver runtime holder
Deprecated: use ydb.Open instead. New func have no required arguments, such as connection string. Thats why we recognize that New have wrong signature. Will be removed after Oct 2024. Read about versioning policy: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#deprecated
func Open ¶ added in v3.21.0
Open connects to database by DSN and return driver runtime holder
DSN accept Driver string like
"grpc[s]://{endpoint}/{database}[?param=value]"
See sugar.DSN helper for make dsn from endpoint and database
Example ¶
ctx := context.TODO() db, err := ydb.Open(ctx, "grpc://localhost:2135/local") if err != nil { fmt.Printf("Driver failed: %v", err) } defer db.Close(ctx) // cleanup resources fmt.Printf("connected to %s, database '%s'", db.Endpoint(), db.Name())
Output:
Example (Advanced) ¶
ctx := context.TODO() db, err := ydb.Open( ctx, "grpc://localhost:2135/local", ydb.WithAnonymousCredentials(), ydb.WithBalancer( balancers.PreferLocationsWithFallback( balancers.RandomChoice(), "a", "b", ), ), ydb.WithSessionPoolSizeLimit(100), ) if err != nil { fmt.Printf("Driver failed: %v", err) } defer db.Close(ctx) // cleanup resources fmt.Printf("connected to %s, database '%s'", db.Endpoint(), db.Name())
Output:
func (*Driver) Coordination ¶ added in v3.43.0
func (d *Driver) Coordination() coordination.Client
Coordination returns coordination client
func (*Driver) Operation ¶ added in v3.77.0
Operation returns operation client
Experimental: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#experimental
func (*Driver) Query ¶ added in v3.57.0
func (d *Driver) Query() *internalQuery.Client
Query returns query client
func (*Driver) Ratelimiter ¶ added in v3.43.0
func (d *Driver) Ratelimiter() ratelimiter.Client
Ratelimiter returns ratelimiter client
type Error ¶ added in v3.4.2
type Error interface { error // Code reports the error code Code() int32 // Name reports the short name of error Name() string }
Error is an interface of error which reports about error code and error name.
func OperationError ¶ added in v3.16.9
OperationError returns operation error description. If given err is not an operation error - returns nil.
func TransportError ¶ added in v3.16.9
TransportError checks when given error is a transport error and returns description of transport error.
type Option ¶
Option contains configuration values for Driver
func MergeOptions ¶ added in v3.5.1
MergeOptions concatentaes provided options to one cumulative value.
func With ¶
With collects additional configuration options.
This option does not replace collected option, instead it will append provided options.
func WithAnonymousCredentials ¶
func WithAnonymousCredentials() Option
WithAnonymousCredentials force to make requests withou authentication.
func WithApplicationName ¶ added in v3.57.4
WithApplicationName add provided application name to all api requests
func WithBalancer ¶ added in v3.6.0
func WithBalancer(balancer *balancerConfig.Config) Option
func WithCertificate ¶
func WithCertificate(cert *x509.Certificate) Option
WithCertificate appends certificate to TLS config root certificates
func WithCertificatesFromFile ¶
func WithCertificatesFromFile(caFile string, opts ...certificates.FromFileOption) Option
WithCertificatesFromFile appends certificates by filepath to TLS config root certificates
func WithCertificatesFromPem ¶
func WithCertificatesFromPem(bytes []byte, opts ...certificates.FromPemOption) Option
WithCertificatesFromPem appends certificates from pem-encoded data to TLS config root certificates
func WithConnectionString ¶
WithConnectionString accept Driver string like
grpc[s]://{endpoint}/{database}[?param=value]
Warning: WithConnectionString will be removed at next major release
(Driver string will be required string param of ydb.Open)
func WithConnectionTTL ¶ added in v3.7.0
WithConnectionTTL defines duration for parking idle connections
func WithCreateCredentialsFunc ¶
func WithCreateCredentialsFunc(createCredentials func(ctx context.Context) (credentials.Credentials, error)) Option
WithCreateCredentialsFunc add callback funcion to provide requests credentials
func WithCredentials ¶
func WithCredentials(c credentials.Credentials) Option
WithCredentials in conjunction with Driver.With function prohibit reuse of conn pool. Thus, Driver.With will effectively create totally separate Driver.
func WithDatabase
deprecated
added in
v3.2.1
func WithDialTimeout ¶
WithDialTimeout sets timeout for establishing new Driver to cluster
Default dial timeout is config.DefaultDialTimeout
func WithDiscoveryInterval ¶
WithDiscoveryInterval sets interval between cluster discovery calls.
func WithEndpoint
deprecated
added in
v3.2.1
func WithIgnoreTruncated ¶ added in v3.36.0
func WithIgnoreTruncated() Option
WithIgnoreTruncated disables errors on truncated flag
func WithInsecure ¶ added in v3.8.6
func WithInsecure() Option
WithInsecure defines secure option.
Warning: WithInsecure lost current TLS config.
func WithLazyTx ¶ added in v3.80.8
WithLazyTx enables lazy transactions in query service client
Lazy transaction means that begin call will be noop and first execute creates interactive transaction with given transaction settings
Experimental: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#experimental
func WithLogger ¶ added in v3.3.0
WithLogger add enables logging for selected tracing events.
See trace package documentation for details.
func WithMinTLSVersion ¶ added in v3.9.1
WithMinTLSVersion set minimum TLS version acceptable for connections
func WithNodeAddressMutator ¶ added in v3.67.0
WithNodeAddressMutator applies mutator for node addresses from discovery.ListEndpoints response
Experimental: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#experimental
func WithOauth2TokenExchangeCredentials ¶ added in v3.65.0
func WithOauth2TokenExchangeCredentials( opts ...credentials.Oauth2TokenExchangeCredentialsOption, ) Option
WithOauth2TokenExchangeCredentials adds credentials that exchange token using OAuth 2.0 token exchange protocol: https://www.rfc-editor.org/rfc/rfc8693
func WithOauth2TokenExchangeCredentialsFile ¶ added in v3.75.0
func WithOauth2TokenExchangeCredentialsFile( configFilePath string, opts ...credentials.Oauth2TokenExchangeCredentialsOption, ) Option
WithOauth2TokenExchangeCredentialsFile adds credentials that exchange token using OAuth 2.0 token exchange protocol: https://www.rfc-editor.org/rfc/rfc8693 Config file must be a valid json file
Fields of json file
grant-type: [string] Grant type option (default: "urn:ietf:params:oauth:grant-type:token-exchange") res: [string | list of strings] Resource option (optional) aud: [string | list of strings] Audience option for token exchange request (optional) scope: [string | list of strings] Scope option (optional) requested-token-type: [string] Requested token type option (default: "urn:ietf:params:oauth:token-type:access_token") subject-credentials: [creds_json] Subject credentials options (optional) actor-credentials: [creds_json] Actor credentials options (optional) token-endpoint: [string] Token endpoint
Fields of creds_json (JWT):
type: [string] Token source type. Set JWT alg: [string] Algorithm for JWT signature. Supported algorithms can be listed with GetSupportedOauth2TokenExchangeJwtAlgorithms() private-key: [string] (Private) key in PEM format (RSA, EC) or Base64 format (HMAC) for JWT signature kid: [string] Key id JWT standard claim (optional) iss: [string] Issuer JWT standard claim (optional) sub: [string] Subject JWT standard claim (optional) aud: [string | list of strings] Audience JWT standard claim (optional) jti: [string] JWT ID JWT standard claim (optional) ttl: [string] Token TTL (default: 1h)
Fields of creds_json (FIXED):
type: [string] Token source type. Set FIXED token: [string] Token value token-type: [string] Token type value. It will become subject_token_type/actor_token_type parameter in token exchange request (https://www.rfc-editor.org/rfc/rfc8693)
func WithPanicCallback ¶ added in v3.17.0
func WithPanicCallback(panicCallback func(e interface{})) Option
WithPanicCallback specified behavior on panic Warning: WithPanicCallback must be defined on start of all options (before `WithTrace{Driver,Table,Scheme,Scripting,Coordination,Ratelimiter}` and other options) If not defined - panic would not intercept with driver
func WithQueryConfigOption ¶ added in v3.57.0
func WithQueryConfigOption(option queryConfig.Option) Option
WithQueryConfigOption collects additional configuration options for query.Client. This option does not replace collected option, instead it will appen provided options.
func WithRatelimiterOptions ¶ added in v3.11.0
func WithRatelimiterOptions(opts ...ratelimiterConfig.Option) Option
WithRatelimiterOptions returns reatelimiter option
func WithRequestsType ¶ added in v3.13.0
func WithRetryBudget ¶ added in v3.66.0
WithRetryBudget sets retry budget for all calls of all retryers.
Experimental: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#experimental
func WithSecure ¶ added in v3.7.0
WithSecure defines secure option
Warning: use ydb.Open with required Driver string parameter instead
For making Driver string from endpoint+database+secure - use sugar.DSN()
func WithSessionPoolCreateSessionTimeout ¶
WithSessionPoolCreateSessionTimeout set timeout for new session creation process in table.Client
func WithSessionPoolDeleteTimeout ¶
WithSessionPoolDeleteTimeout set timeout to gracefully close deleting session in table.Client
func WithSessionPoolIdleThreshold ¶
WithSessionPoolIdleThreshold defines interval for idle sessions
func WithSessionPoolKeepAliveMinSize
deprecated
WithSessionPoolKeepAliveMinSize set minimum sessions should be keeped alive in table.Client
Deprecated: use WithApplicationName instead. Will be removed after Oct 2024. Read about versioning policy: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#deprecated
func WithSessionPoolKeepAliveTimeout
deprecated
WithSessionPoolKeepAliveTimeout set timeout of keep alive requests for session in table.Client
Deprecated: use WithApplicationName instead. Will be removed after Oct 2024. Read about versioning policy: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#deprecated
func WithSessionPoolSessionIdleTimeToLive ¶ added in v3.80.3
WithSessionPoolSessionIdleTimeToLive limits maximum time to live of idle session If idleTimeToLive is less than or equal to zero then sessions will not be closed by idle
func WithSessionPoolSessionUsageLimit ¶ added in v3.80.10
WithSessionPoolSessionUsageLimit set max count for use session
func WithSessionPoolSizeLimit ¶
WithSessionPoolSizeLimit set max size of internal sessions pool in table.Client
func WithSharedBalancer ¶ added in v3.89.1
WithSharedBalancer sets balancer from parent driver to child driver
func WithStaticCredentials ¶ added in v3.34.0
func WithStaticCredentialsLogin ¶ added in v3.93.0
func WithStaticCredentialsPassword ¶ added in v3.93.0
func WithTLSConfig ¶ added in v3.23.0
WithTLSConfig replaces older TLS config
Warning: all early TLS config changes (such as WithCertificate, WithCertificatesFromFile, WithCertificatesFromPem, WithMinTLSVersion, WithTLSSInsecureSkipVerify) will be lost
func WithTLSSInsecureSkipVerify ¶ added in v3.11.0
func WithTLSSInsecureSkipVerify() Option
WithTLSSInsecureSkipVerify applies InsecureSkipVerify flag to TLS config
func WithTableConfigOption ¶
func WithTableConfigOption(option tableConfig.Option) Option
WithTableConfigOption collects additional configuration options for table.Client. This option does not replace collected option, instead it will appen provided options.
func WithTraceCoordination ¶ added in v3.10.0
func WithTraceCoordination(t trace.Coordination, opts ...trace.CoordinationComposeOption) Option
WithTraceCoordination returns coordination trace option
func WithTraceDatabaseSQL ¶ added in v3.34.0
func WithTraceDatabaseSQL(t trace.DatabaseSQL, opts ...trace.DatabaseSQLComposeOption) Option
WithTraceDatabaseSQL adds configured discovery tracer to Driver
func WithTraceDiscovery ¶ added in v3.10.0
func WithTraceDiscovery(t trace.Discovery, opts ...trace.DiscoveryComposeOption) Option
WithTraceDiscovery adds configured discovery tracer to Driver
func WithTraceDriver ¶
func WithTraceDriver(t trace.Driver, opts ...trace.DriverComposeOption) Option
WithTraceDriver appends trace.Driver into driver traces
func WithTraceQuery ¶ added in v3.57.1
func WithTraceQuery(t trace.Query, opts ...trace.QueryComposeOption) Option
WithTraceQuery appends trace.Query into query traces
func WithTraceRatelimiter ¶ added in v3.10.0
func WithTraceRatelimiter(t trace.Ratelimiter, opts ...trace.RatelimiterComposeOption) Option
WithTraceRatelimiter returns ratelimiter trace option
func WithTraceRetry ¶ added in v3.54.0
func WithTraceRetry(t trace.Retry, opts ...trace.RetryComposeOption) Option
WithTraceRetry appends trace.Retry into retry traces
func WithTraceScheme ¶ added in v3.10.0
func WithTraceScheme(t trace.Scheme, opts ...trace.SchemeComposeOption) Option
WithTraceScheme returns scheme trace option
func WithTraceScripting ¶ added in v3.10.0
func WithTraceScripting(t trace.Scripting, opts ...trace.ScriptingComposeOption) Option
WithTraceScripting scripting trace option
func WithTraceTable ¶
func WithTraceTable(t trace.Table, opts ...trace.TableComposeOption) Option
WithTraceTable appends trace.Table into table traces
func WithTraceTopic ¶ added in v3.32.0
func WithTraceTopic(t trace.Topic, opts ...trace.TopicComposeOption) Option
WithTraceTopic adds configured discovery tracer to Driver
func WithUserAgent
deprecated
added in
v3.7.0
WithUserAgent add provided user agent value to all api requests
Deprecated: use WithApplicationName instead. Will be removed after Oct 2024. Read about versioning policy: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#deprecated
type QueryBindConnectorOption ¶ added in v3.44.0
type QueryBindConnectorOption interface { ConnectorOption bind.Bind }
func WithAutoDeclare ¶ added in v3.44.0
func WithAutoDeclare() QueryBindConnectorOption
func WithNumericArgs ¶ added in v3.44.0
func WithNumericArgs() QueryBindConnectorOption
func WithPositionalArgs ¶ added in v3.44.0
func WithPositionalArgs() QueryBindConnectorOption
func WithTablePathPrefix ¶ added in v3.44.0
func WithTablePathPrefix(tablePathPrefix string) QueryBindConnectorOption
type SQLConnector ¶ added in v3.45.0
func Connector ¶ added in v3.33.0
func Connector(parent *Driver, opts ...ConnectorOption) (SQLConnector, error)
func MustConnector ¶ added in v3.44.0
func MustConnector(parent *Driver, opts ...ConnectorOption) SQLConnector
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
internal
|
|
coordination/conversation
Package conversation contains coordination session internal code that helps implement a typical conversation-like session protocol based on a bidirectional gRPC stream.
|
Package conversation contains coordination session internal code that helps implement a typical conversation-like session protocol based on a bidirectional gRPC stream. |
grpcwrapper/rawtopic/rawtopicreadermock
Code generated by MockGen.
|
Code generated by MockGen. |
xlist
Package xlist is a copy of standard container/list but uses generics for strict checks on compile time
|
Package xlist is a copy of standard container/list but uses generics for strict checks on compile time |
topicreader
Package topicreader provide Reader to receive messages from YDB topics More examples in examples repository
|
Package topicreader provide Reader to receive messages from YDB topics More examples in examples repository |