ydbgoquery

package module
v0.0.0-alpha Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 19, 2024 License: Apache-2.0 Imports: 23 Imported by: 0

README

CI Go Report Card Coverage Go version License

ydb-go-query

Experimental YDB client that focuses on query service. Work in progress.

Features

  • Query execution (with parameters)
  • Transactions
  • Client-side 3-levels load balancing (dc->node->connection) with continuous 'out-of-band' nodes discovery
  • Session pool with session recycling
  • Yandex Cloud IAM auth (for serverless YDB) and user-pass auth
TODO
  • DC/location priorities for balancer
  • Migrations
  • Scripts
  • More type helpers
  • Retries

Usage

package main

import (
	"context"
	"fmt"
	ydb "github.com/adwski/ydb-go-query"
)

func main() {
	ctx := context.Background()

	client, _ := ydb.Open(ctx, ydb.Config{
		InitialNodes: []string{"4.3.2.1:2136"}, // endpoints used for discovery
		DB:           "/mydb",                  // database path
	})

	result, err := client.QueryCtx().Exec(ctx, `SELECT 1`)

	switch {
	case err != nil:
		fmt.Printf("YDB error: %v\n", err)

	case result.Err() != nil:
		fmt.Printf("Query error: %v\nIssues: \n%v\n", result.Err(), result.Issues())

	default:
		fmt.Printf("Ok!\nstats: %v\ncols: %v\n", result.Stats(), result.Cols())
		for rIdx, row := range result.Rows() {
			fmt.Printf("row %d: %v\n", rIdx, row)
		}
	}
}

More examples can be found in examples/.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNoInitialNodes           = errors.New("no initial nodes was provided")
	ErrDBEmpty                  = errors.New("db is empty")
	ErrDiscoveryTransportCreate = errors.New("discovery transport create error")
)
View Source
var ErrAuthTransport = errors.New("unable to create auth transport")

Functions

This section is empty.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

func Open

func Open(ctx context.Context, cfg Config, opts ...Option) (*Client, error)

func (*Client) Close

func (c *Client) Close()

func (*Client) QueryCtx

func (c *Client) QueryCtx() *qq.Ctx

type Config

type Config struct {
	DB           string
	InitialNodes []string
	// contains filtered or unexported fields
}

type Option

type Option func(context.Context, *Config) error

func WithLogger

func WithLogger(log logger.Logger) Option

func WithOnlineReadOnly

func WithOnlineReadOnly() Option

func WithOnlineReadOnlyInconsistent

func WithOnlineReadOnlyInconsistent() Option

func WithQueryTimeout added in v0.0.1

func WithQueryTimeout(timeout time.Duration) Option

func WithSerializableReadWrite

func WithSerializableReadWrite() Option

func WithSessionCreateTimeout

func WithSessionCreateTimeout(timeout time.Duration) Option

func WithSessionPoolSize

func WithSessionPoolSize(size uint) Option

func WithSnapshotReadOnly

func WithSnapshotReadOnly() Option

func WithStaleReadOnly

func WithStaleReadOnly() Option

func WithTransportTLS

func WithTransportTLS() Option

func WithUserPass

func WithUserPass(username, password string) Option

func WithYCAuthBytes

func WithYCAuthBytes(iamKeyBytes []byte) Option

func WithYCAuthFile

func WithYCAuthFile(filename string) Option

func WithZapLogger added in v0.0.1

func WithZapLogger(log *zap.Logger) Option

func WithZeroLogger

func WithZeroLogger(log zerolog.Logger) Option

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL