utils

package
v0.5.2-rc.1 Latest Latest
Warning

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

Go to latest
Published: Aug 12, 2024 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Overview

Package utils contains helper types and functions that can be used by any relational data source.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func MakeReadSplitQuery

func MakeReadSplitQuery(
	logger *zap.Logger,
	formatter SQLFormatter,
	request *api_service_protos.TSelect,
) (string, []any, *api_service_protos.TSelect_TWhat, error)

func MakeTestSplit added in v0.1.1

func MakeTestSplit() *api_service_protos.TSplit

func NewColumnExpression added in v0.1.1

func NewColumnExpression(name string) *api_service_protos.TExpression

func NewDefaultWhat added in v0.1.1

func NewDefaultWhat() *api_service_protos.TSelect_TWhat

NewDefaultWhat generates default What field with a pair of columns

func NewEmptyColumnWhat added in v0.4.9

func NewEmptyColumnWhat() *api_service_protos.TSelect_TWhat

NewEmptyColumnWhat generates What field with a one column of type Int32

func NewInt32ValueExpression added in v0.1.1

func NewInt32ValueExpression(val int32) *api_service_protos.TExpression

func NewTextValueExpression added in v0.1.1

func NewTextValueExpression(val string) *api_service_protos.TExpression

func NewUint64ValueExpression added in v0.1.1

func NewUint64ValueExpression(val uint64) *api_service_protos.TExpression

Types

type Connection

type Connection interface {
	Query(ctx context.Context, query string, args ...any) (Rows, error)
	Close() error
}

type ConnectionManager

type ConnectionManager interface {
	Make(ctx context.Context, logger *zap.Logger, dataSourceInstance *api_common.TDataSourceInstance) (Connection, error)
	Release(logger *zap.Logger, connection Connection)
}

type ConnectionManagerBase

type ConnectionManagerBase struct {
	QueryLoggerFactory common.QueryLoggerFactory
}

type ConnectionManagerMock

type ConnectionManagerMock struct {
	mock.Mock
}

func (*ConnectionManagerMock) Make

func (*ConnectionManagerMock) Release

func (m *ConnectionManagerMock) Release(_ *zap.Logger, conn Connection)

type ConnectionMock

type ConnectionMock struct {
	mock.Mock
}

func (*ConnectionMock) Close

func (m *ConnectionMock) Close() error

func (*ConnectionMock) Query

func (m *ConnectionMock) Query(_ context.Context, query string, params ...any) (Rows, error)

type DataConverter added in v0.1.1

type DataConverter struct{}

DataConverter should be used only from unit tests

func (DataConverter) RowsToColumnBlocks added in v0.1.1

func (dc DataConverter) RowsToColumnBlocks(input [][]any, rowsPerBlock int) [][][]any

type DefaultSchemaProvider added in v0.1.0

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

func (*DefaultSchemaProvider) GetSchema added in v0.1.0

type Operation added in v0.2.21

type Operation func() error

type RetriableErrorChecker added in v0.2.21

type RetriableErrorChecker func(err error) bool

type Retrier added in v0.2.21

type Retrier interface {
	Run(logger *zap.Logger, op Operation) error
}

func NewRetrierFromConfig added in v0.2.21

func NewRetrierFromConfig(cfg *config.TExponentialBackoffConfig, retriableErrorChecker RetriableErrorChecker) Retrier

func NewRetrierNoop added in v0.2.21

func NewRetrierNoop() Retrier

type RetrierSet added in v0.2.21

type RetrierSet struct {
	MakeConnection Retrier
	Query          Retrier
}

func NewRetrierSetNoop added in v0.2.21

func NewRetrierSetNoop() *RetrierSet

type RowTransformerMock

type RowTransformerMock struct {
	mock.Mock
	Acceptors []any
}

func (*RowTransformerMock) AppendToArrowBuilders

func (t *RowTransformerMock) AppendToArrowBuilders(builder []array.Builder) error

func (*RowTransformerMock) GetAcceptors

func (t *RowTransformerMock) GetAcceptors() []any

func (*RowTransformerMock) SetAcceptors

func (*RowTransformerMock) SetAcceptors([]any)

type Rows

type Rows interface {
	Close() error
	Err() error
	Next() bool
	NextResultSet() bool
	Scan(dest ...any) error
	MakeTransformer(ydbTypes []*Ydb.Type, cc conversion.Collection) (paging.RowTransformer[any], error)
}

type RowsMock

type RowsMock struct {
	mock.Mock
	PredefinedData [][]any
	// contains filtered or unexported fields
}

func (*RowsMock) Close

func (m *RowsMock) Close() error

func (*RowsMock) Err

func (m *RowsMock) Err() error

func (*RowsMock) MakeTransformer

func (m *RowsMock) MakeTransformer(ydbType []*Ydb.Type, _ conversion.Collection) (paging.RowTransformer[any], error)

func (*RowsMock) Next

func (m *RowsMock) Next() bool

func (*RowsMock) NextResultSet added in v0.2.8

func (m *RowsMock) NextResultSet() bool

func (*RowsMock) Scan

func (m *RowsMock) Scan(dest ...any) error

type SQLFormatter

type SQLFormatter interface {
	// Get placeholder for n'th argument (starting from 0) for prepared statement
	GetPlaceholder(n int) string

	// Sanitize names of databases, tables, columns, views, schemas
	SanitiseIdentifier(ident string) string

	// Support for high level expression (without subexpressions, they are checked separately)
	SupportsPushdownExpression(expression *api_service_protos.TExpression) bool

	// FormatFrom builds identifier called after FROM (`SELECT ... FROM <this>`)
	FormatFrom(tableName string) string
}

type SchemaBuilder added in v0.1.0

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

func NewSchemaBuilder added in v0.1.0

func NewSchemaBuilder(
	typeMapper datasource.TypeMapper,
	typeMappingSettings *api_service_protos.TTypeMappingSettings,
) *SchemaBuilder

func (*SchemaBuilder) AddColumn added in v0.1.0

func (sb *SchemaBuilder) AddColumn(columnName, columnType string) error

func (*SchemaBuilder) Build added in v0.1.0

func (sb *SchemaBuilder) Build(logger *zap.Logger) (*api_service_protos.TSchema, error)

type SchemaProvider added in v0.1.0

type SchemaProvider interface {
	GetSchema(
		ctx context.Context,
		logger *zap.Logger,
		conn Connection,
		request *api_service_protos.TDescribeTableRequest,
	) (*api_service_protos.TSchema, error)
}

func NewDefaultSchemaProvider added in v0.1.0

func NewDefaultSchemaProvider(
	typeMapper datasource.TypeMapper,
	getArgsAndQueryFunc func(request *api_service_protos.TDescribeTableRequest) (string, []any),
) SchemaProvider

Jump to

Keyboard shortcuts

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