db

package
v0.3.5 Latest Latest
Warning

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

Go to latest
Published: Mar 13, 2026 License: MIT Imports: 12 Imported by: 4

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ClearTxContext added in v0.1.15

func ClearTxContext(ctx context.Context) context.Context

func DuckDBOperationResult added in v0.3.4

func DuckDBOperationResult() duckdb.TypeInfo

func ParseSQLScriptTemplate added in v0.1.9

func ParseSQLScriptTemplate(dbType ScriptDBType, script string, data ...any) (string, error)

func RegisterScalarFunction added in v0.1.9

func RegisterScalarFunction(ctx context.Context, db *Pool, function ScalarFunction) error

func RegisterScalarFunctionSet added in v0.1.9

func RegisterScalarFunctionSet(ctx context.Context, db *Pool, set ScalarFunctionSet) error

func RegisterTableRowFunction added in v0.1.9

func RegisterTableRowFunction(ctx context.Context, db *Pool, function TableRowFunction) error

Types

type Arrow

type Arrow struct {
	*duckdb.Arrow
	// contains filtered or unexported fields
}

func (*Arrow) Close

func (a *Arrow) Close() error

type Config

type Config struct {
	Path         string `json:"path"`
	MaxOpenConns int    `json:"max_open_conns"`
	MaxIdleConns int    `json:"max_idle_conns"`

	Settings Settings `json:"settings"`
}

type Connection

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

func (*Connection) Close

func (c *Connection) Close() error

func (*Connection) DBConn

func (c *Connection) DBConn() *sql.Conn

func (*Connection) Exec

func (c *Connection) Exec(ctx context.Context, query string, args ...any) (sql.Result, error)

func (*Connection) Query

func (c *Connection) Query(ctx context.Context, query string, args ...any) (*sql.Rows, error)

func (*Connection) QueryRow

func (c *Connection) QueryRow(ctx context.Context, query string, args ...any) *sql.Row

type Pool

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

func Connect

func Connect(ctx context.Context, config Config) (*Pool, error)

func NewPool

func NewPool(path string) (*Pool, error)

func (*Pool) Arrow

func (p *Pool) Arrow(ctx context.Context) (*Arrow, error)

func (*Pool) Close

func (p *Pool) Close() error

func (*Pool) Commit

func (p *Pool) Commit(ctx context.Context) error

func (*Pool) Conn

func (p *Pool) Conn(ctx context.Context) (*Connection, error)

func (*Pool) Connector

func (p *Pool) Connector() *duckdb.Connector

func (*Pool) Exec

func (p *Pool) Exec(ctx context.Context, query string, args ...any) (sql.Result, error)

func (*Pool) IsTxContext

func (p *Pool) IsTxContext(ctx context.Context) bool

func (*Pool) QueryArrowTable added in v0.1.5

func (db *Pool) QueryArrowTable(ctx context.Context, q string, wrap bool, params ...any) (any, error)

func (*Pool) QueryJsonRow

func (db *Pool) QueryJsonRow(ctx context.Context, q string, params ...any) (*types.JsonValue, error)

func (*Pool) QueryJsonScalarArray

func (db *Pool) QueryJsonScalarArray(ctx context.Context, q string, params ...any) (any, error)

func (*Pool) QueryJsonScalarArrayArrow

func (db *Pool) QueryJsonScalarArrayArrow(ctx context.Context, q string, params ...any) (types.ArrowTable, error)

func (*Pool) QueryJsonTableArrow

func (db *Pool) QueryJsonTableArrow(ctx context.Context, q string, wrap bool, params ...any) (types.ArrowTable, error)

func (*Pool) QueryRowToData

func (db *Pool) QueryRowToData(ctx context.Context, data any, q string, params ...any) error

func (*Pool) QueryScalarValue added in v0.1.9

func (db *Pool) QueryScalarValue(ctx context.Context, q string, params ...any) (any, error)

func (*Pool) QueryTableStream added in v0.1.20

func (db *Pool) QueryTableStream(ctx context.Context, q string, params ...any) (types.ArrowTable, func(), error)

Runs a query write results to a stream This method does not support transactions

func (*Pool) QueryTableToSlice

func (db *Pool) QueryTableToSlice(ctx context.Context, data any, q string, params ...any) error

func (*Pool) RegisterScalarFunction added in v0.1.9

func (p *Pool) RegisterScalarFunction(ctx context.Context, function ScalarFunction) error

func (*Pool) RegisterScalarFunctionSet added in v0.1.9

func (p *Pool) RegisterScalarFunctionSet(ctx context.Context, set ScalarFunctionSet) error

func (*Pool) RegisterTableRowFunction added in v0.1.9

func (p *Pool) RegisterTableRowFunction(ctx context.Context, function TableRowFunction) error

func (*Pool) Rollback

func (p *Pool) Rollback(ctx context.Context) error

func (*Pool) SetMaxIdleConns

func (p *Pool) SetMaxIdleConns(n int)

func (*Pool) SetMaxOpenConns

func (p *Pool) SetMaxOpenConns(n int)

func (*Pool) WithTx

func (p *Pool) WithTx(parent context.Context) (context.Context, error)

type ScalarFunction added in v0.1.9

type ScalarFunction interface {
	FuncName() string
	Executor() func(ctx context.Context, args []driver.Value) (any, error)
	Config() duckdb.ScalarFuncConfig
}

type ScalarFunctionCaster added in v0.1.9

type ScalarFunctionCaster[O any] interface {
	ScalarUDF(set *ScalarFunctionTypedSet[O]) ScalarFunction
}

type ScalarFunctionNoArgs added in v0.1.9

type ScalarFunctionNoArgs[O any] struct {
	Name          string
	Execute       func(ctx context.Context) (O, error)
	ConvertOutput func(out O) (any, error)
	OutputType    duckdb.TypeInfo
	IsVolatile    bool
}

func (*ScalarFunctionNoArgs[O]) Config added in v0.1.9

func (*ScalarFunctionNoArgs[O]) Executor added in v0.1.9

func (f *ScalarFunctionNoArgs[O]) Executor() func(ctx context.Context, args []driver.Value) (any, error)

func (*ScalarFunctionNoArgs[O]) FuncName added in v0.1.9

func (f *ScalarFunctionNoArgs[O]) FuncName() string

type ScalarFunctionSet added in v0.1.9

type ScalarFunctionSet interface {
	FuncName() string
	Functions(ctx context.Context, db *Pool) []duckdb.ScalarFunc
}

type ScalarFunctionSetItem added in v0.1.9

type ScalarFunctionSetItem[I any, O any] struct {
	Execute      func(ctx context.Context, input I) (O, error)
	ConvertInput func(args []driver.Value) (I, error)
	InputTypes   []duckdb.TypeInfo
}

func (*ScalarFunctionSetItem[I, O]) ScalarUDF added in v0.1.9

func (f *ScalarFunctionSetItem[I, O]) ScalarUDF(set *ScalarFunctionTypedSet[O]) ScalarFunction

type ScalarFunctionSetItemNoArgs added in v0.1.9

type ScalarFunctionSetItemNoArgs[O any] struct {
	Execute func(ctx context.Context) (O, error)
}

func (*ScalarFunctionSetItemNoArgs[O]) ScalarUDF added in v0.1.9

type ScalarFunctionTypedSet added in v0.1.9

type ScalarFunctionTypedSet[O any] struct {
	Name                  string
	Funcs                 []ScalarFunctionCaster[O]
	ConvertOutput         func(out O) (any, error)
	OutputType            duckdb.TypeInfo
	IsVolatile            bool
	IsSpecialNullHandling bool
}

func (*ScalarFunctionTypedSet[O]) FuncName added in v0.1.9

func (s *ScalarFunctionTypedSet[O]) FuncName() string

func (*ScalarFunctionTypedSet[O]) Functions added in v0.1.9

func (s *ScalarFunctionTypedSet[O]) Functions(ctx context.Context, db *Pool) []duckdb.ScalarFunc

type ScalarFunctionWithArgs added in v0.1.9

type ScalarFunctionWithArgs[I any, O any] struct {
	Name                  string
	Execute               func(ctx context.Context, input I) (O, error)
	ConvertInput          func(args []driver.Value) (I, error)
	ConvertOutput         func(out O) (any, error)
	InputTypes            []duckdb.TypeInfo
	OutputType            duckdb.TypeInfo
	IsVolatile            bool
	IsSpecialNullHandling bool
}

func (*ScalarFunctionWithArgs[I, O]) Config added in v0.1.9

func (*ScalarFunctionWithArgs[I, O]) Executor added in v0.1.9

func (f *ScalarFunctionWithArgs[I, O]) Executor() func(ctx context.Context, args []driver.Value) (any, error)

func (*ScalarFunctionWithArgs[I, O]) FuncName added in v0.1.9

func (f *ScalarFunctionWithArgs[I, O]) FuncName() string

type ScriptDBType added in v0.1.9

type ScriptDBType string
const (
	SDBPostgres         ScriptDBType = "postgres"
	SDBDuckDB           ScriptDBType = "duckdb"
	SDBAttachedDuckDB   ScriptDBType = "attached_duckdb"
	SDBAttachedPostgres ScriptDBType = "attached_postgres"
)

type Settings

type Settings struct {
	AllowedDirectories   []string `json:"allowed_directories"`
	AllowedPaths         []string `json:"allowed_paths"`
	EnableLogging        bool     `json:"enable_logging"`
	MaxMemory            int      `json:"max_memory"`
	MaxTempDirectorySize int      `json:"max_temp_directory_size"`
	TempDirectory        string   `json:"temp_directory"`
	WorkerThreads        int      `json:"worker_threads"`
	HomeDirectory        string   `json:"home_directory"`
	// POSTGRESQL
	PGConnectionLimit int `json:"pg_connection_limit"`
	PGPagesPerTask    int `json:"pg_pages_per_task"`

	// MSSQL
	MSSQLConnectionLimit   int `json:"mssql_connection_limit"`
	MSSQLConnectionTimeout int `json:"mssql_connection_timeout"`
	MSSQLIdleTimeout       int `json:"mssql_idle_timeout"`
	MSSQLQueryTimeout      int `json:"mssql_query_timeout"`
	MSSQLCatalogCacheTTL   int `json:"mssql_catalog_cache_ttl"`
}

type TableRowFunction added in v0.1.9

type TableRowFunction interface {
	FuncName() string
	Bind(ctx context.Context) duckdb.RowTableFunction
}

type TableRowFunctionNoArgs added in v0.1.9

type TableRowFunctionNoArgs[O any] struct {
	Name        string
	Execute     func(ctx context.Context) ([]O, error)
	ColumnInfos []duckdb.ColumnInfo
	FillRow     func(out O, row duckdb.Row) error
}

func (*TableRowFunctionNoArgs[O]) Bind added in v0.1.9

func (*TableRowFunctionNoArgs[O]) FuncName added in v0.1.9

func (f *TableRowFunctionNoArgs[O]) FuncName() string

type TableRowFunctionWithArgs added in v0.1.9

type TableRowFunctionWithArgs[I any, O any] struct {
	Name           string
	Execute        func(ctx context.Context, input I) ([]O, error)
	Arguments      []duckdb.TypeInfo
	NamedArguments map[string]duckdb.TypeInfo
	ConvertArgs    func(named map[string]any, args ...any) (I, error)
	ColumnInfos    []duckdb.ColumnInfo
	FillRow        func(out O, row duckdb.Row) error
}

func (*TableRowFunctionWithArgs[I, O]) Bind added in v0.1.9

func (*TableRowFunctionWithArgs[I, O]) FuncName added in v0.1.9

func (f *TableRowFunctionWithArgs[I, O]) FuncName() string

Jump to

Keyboard shortcuts

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