trino

package
v0.314.0 Latest Latest
Warning

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

Go to latest
Published: Apr 16, 2024 License: Apache-2.0 Imports: 23 Imported by: 18

Documentation

Overview

Package trino provides a database/sql driver for Trino.

The driver should be used via the database/sql package:

import "database/sql"
import _ "github.com/trinodb/trino-go-client/trino"

dsn := "http://user@localhost:8080?catalog=default&schema=test"
db, err := sql.Open("trino", dsn)

Index

Constants

View Source
const (
	KerberosEnabledConfig = "KerberosEnabled"

	SSLCertPathConfig = "SSLCertPath"
	SSLCertConfig     = "SSLCert"
)
View Source
const (
	KIND_TYPE       = typeKind("TYPE")
	KIND_NAMED_TYPE = typeKind("NAMED_TYPE")
	KIND_LONG       = typeKind("LONG")
	KIND_VARIABLE   = typeKind("VARIABLE")
)

Variables

View Source
var (
	// DefaultQueryTimeout is the default timeout for queries executed without a context.
	DefaultQueryTimeout = 60 * time.Second

	// DefaultCancelQueryTimeout is the timeout for the request to cancel queries in Trino.
	DefaultCancelQueryTimeout = 30 * time.Second

	// ErrOperationNotSupported indicates that a database operation is not supported.
	ErrOperationNotSupported = errors.New("trino: operation not supported")

	// ErrQueryCancelled indicates that a query has been cancelled.
	ErrQueryCancelled = errors.New("trino: query cancelled")

	// ErrUnsupportedHeader indicates that the server response contains an unsupported header.
	ErrUnsupportedHeader = errors.New("trino: server response contains an unsupported header")

	// ErrInvalidResponseType indicates that the server returned an invalid type definition.
	ErrInvalidResponseType = errors.New("trino: server response contains an invalid type")

	// ErrInvalidProgressCallbackHeader indicates that server did not get valid headers for progress callback
	ErrInvalidProgressCallbackHeader = errors.New("trino: both " + trinoProgressCallbackParam + " and " + trinoProgressCallbackPeriodParam + " must be set when using progress callback")
)

Functions

func Date added in v0.309.0

func Date(year int, month time.Month, day int) trinoDate

Date creates a representation of a Trino Date type.

func DeregisterCustomClient

func DeregisterCustomClient(key string)

DeregisterCustomClient removes the client associated to the key.

func RegisterCustomClient

func RegisterCustomClient(key string, client *http.Client) error

RegisterCustomClient associates a client to a key in the driver's registry.

Register your custom client in the driver, then refer to it by name in the DSN, on the call to sql.Open:

foobarClient := &http.Client{
	Transport: &http.Transport{
		Proxy: http.ProxyFromEnvironment,
		DialContext: (&net.Dialer{
			Timeout:   30 * time.Second,
			KeepAlive: 30 * time.Second,
			DualStack: true,
		}).DialContext,
		MaxIdleConns:          100,
		IdleConnTimeout:       90 * time.Second,
		TLSHandshakeTimeout:   10 * time.Second,
		ExpectContinueTimeout: 1 * time.Second,
		TLSClientConfig:       &tls.Config{
		// your config here...
		},
	},
}
trino.RegisterCustomClient("foobar", foobarClient)
db, err := sql.Open("trino", "https://user@localhost:8080?custom_client=foobar")

func Serial

func Serial(v interface{}) (string, error)

Serial converts any supported value to its equivalent string for as a Trino parameter See https://trino.io/docs/current/language/types.html

func Time added in v0.309.0

func Time(hour int,
	minute int,
	second int,
	nanosecond int) trinoTime

Time creates a representation of a Trino Time type. To represent time with precision higher than nanoseconds, pass the value as a string and use a cast in the query.

func TimeTz added in v0.309.0

func TimeTz(hour int,
	minute int,
	second int,
	nanosecond int,
	location *time.Location) trinoTimeTz

TimeTz creates a representation of a Trino Time(9) With Timezone type.

func Timestamp added in v0.309.0

func Timestamp(year int,
	month time.Month,
	day int,
	hour int,
	minute int,
	second int,
	nanosecond int) trinoTimestamp

Timestamp creates a representation of a Trino Timestamp(9) type.

Types

type Config

type Config struct {
	ServerURI          string            // URI of the Trino server, e.g. http://user@localhost:8080
	Source             string            // Source of the connection (optional)
	Catalog            string            // Catalog (optional)
	Schema             string            // Schema (optional)
	SessionProperties  map[string]string // Session properties (optional)
	ExtraCredentials   map[string]string // Extra credentials (optional)
	CustomClientName   string            // Custom client name (optional)
	KerberosEnabled    string            // KerberosEnabled (optional, default is false)
	KerberosKeytabPath string            // Kerberos Keytab Path (optional)
	KerberosPrincipal  string            // Kerberos Principal used to authenticate to KDC (optional)
	KerberosRealm      string            // The Kerberos Realm (optional)
	KerberosConfigPath string            // The krb5 config path (optional)
	SSLCertPath        string            // The SSL cert path for TLS verification (optional)
	SSLCert            string            // The SSL cert for TLS verification (optional)
}

Config is a configuration that can be encoded to a DSN string.

func (*Config) FormatDSN

func (c *Config) FormatDSN() (string, error)

FormatDSN returns a DSN string from the configuration.

type Conn

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

Conn is a Trino connection.

func (*Conn) Begin

func (c *Conn) Begin() (driver.Tx, error)

Begin implements the driver.Conn interface.

func (*Conn) Close

func (c *Conn) Close() error

Close implements the driver.Conn interface.

func (*Conn) Prepare

func (c *Conn) Prepare(query string) (driver.Stmt, error)

Prepare implements the driver.Conn interface.

func (*Conn) PrepareContext

func (c *Conn) PrepareContext(ctx context.Context, query string) (driver.Stmt, error)

PrepareContext implements the driver.ConnPrepareContext interface.

type Driver added in v0.302.0

type Driver struct{}

func (*Driver) Open added in v0.302.0

func (d *Driver) Open(name string) (driver.Conn, error)

type ErrQueryFailed

type ErrQueryFailed struct {
	StatusCode int
	Reason     error
}

ErrQueryFailed indicates that a query to Trino failed.

func (*ErrQueryFailed) Error

func (e *ErrQueryFailed) Error() string

Error implements the error interface.

func (*ErrQueryFailed) Unwrap added in v0.314.0

func (e *ErrQueryFailed) Unwrap() error

Unwrap implements the unwrap interface.

type ErrTrino added in v0.314.0

type ErrTrino struct {
	Message       string        `json:"message"`
	SqlState      string        `json:"sqlState"`
	ErrorCode     int           `json:"errorCode"`
	ErrorName     string        `json:"errorName"`
	ErrorType     string        `json:"errorType"`
	ErrorLocation ErrorLocation `json:"errorLocation"`
	FailureInfo   FailureInfo   `json:"failureInfo"`
}

func (ErrTrino) Error added in v0.314.0

func (i ErrTrino) Error() string

type ErrorInfo added in v0.314.0

type ErrorInfo struct {
	Code int    `json:"code"`
	Name string `json:"name"`
	Type string `json:"type"`
}

func (ErrorInfo) Error added in v0.314.0

func (i ErrorInfo) Error() string

type ErrorLocation added in v0.314.0

type ErrorLocation struct {
	LineNumber   int `json:"lineNumber"`
	ColumnNumber int `json:"columnNumber"`
}

type FailureInfo added in v0.314.0

type FailureInfo struct {
	Type          string        `json:"type"`
	Message       string        `json:"message"`
	Cause         *FailureInfo  `json:"cause"`
	Suppressed    []FailureInfo `json:"suppressed"`
	Stack         []string      `json:"stack"`
	ErrorInfo     ErrorInfo     `json:"errorInfo"`
	ErrorLocation ErrorLocation `json:"errorLocation"`
}

type NullMap

type NullMap struct {
	Map   map[string]interface{}
	Valid bool
}

NullMap represents a map type that may be null.

func (*NullMap) Scan

func (m *NullMap) Scan(v interface{}) error

Scan implements the sql.Scanner interface.

type NullSlice2Bool

type NullSlice2Bool struct {
	Slice2Bool [][]sql.NullBool
	Valid      bool
}

NullSlice2Bool represents a two-dimensional slice of bool that may be null.

func (*NullSlice2Bool) Scan

func (s *NullSlice2Bool) Scan(value interface{}) error

Scan implements the sql.Scanner interface.

type NullSlice2Float64

type NullSlice2Float64 struct {
	Slice2Float64 [][]sql.NullFloat64
	Valid         bool
}

NullSlice2Float64 represents a two-dimensional slice of float64 that may be null.

func (*NullSlice2Float64) Scan

func (s *NullSlice2Float64) Scan(value interface{}) error

Scan implements the sql.Scanner interface.

type NullSlice2Int64

type NullSlice2Int64 struct {
	Slice2Int64 [][]sql.NullInt64
	Valid       bool
}

NullSlice2Int64 represents a two-dimensional slice of int64 that may be null.

func (*NullSlice2Int64) Scan

func (s *NullSlice2Int64) Scan(value interface{}) error

Scan implements the sql.Scanner interface.

type NullSlice2Map

type NullSlice2Map struct {
	Slice2Map [][]NullMap
	Valid     bool
}

NullSlice2Map represents a two-dimensional slice of NullMap that may be null.

func (*NullSlice2Map) Scan

func (s *NullSlice2Map) Scan(value interface{}) error

Scan implements the sql.Scanner interface.

type NullSlice2String

type NullSlice2String struct {
	Slice2String [][]sql.NullString
	Valid        bool
}

NullSlice2String represents a two-dimensional slice of string that may be null.

func (*NullSlice2String) Scan

func (s *NullSlice2String) Scan(value interface{}) error

Scan implements the sql.Scanner interface.

type NullSlice2Time

type NullSlice2Time struct {
	Slice2Time [][]NullTime
	Valid      bool
}

NullSlice2Time represents a two-dimensional slice of time.Time that may be null.

func (*NullSlice2Time) Scan

func (s *NullSlice2Time) Scan(value interface{}) error

Scan implements the sql.Scanner interface.

type NullSlice3Bool

type NullSlice3Bool struct {
	Slice3Bool [][][]sql.NullBool
	Valid      bool
}

NullSlice3Bool implements a three-dimensional slice of bool that may be null.

func (*NullSlice3Bool) Scan

func (s *NullSlice3Bool) Scan(value interface{}) error

Scan implements the sql.Scanner interface.

type NullSlice3Float64

type NullSlice3Float64 struct {
	Slice3Float64 [][][]sql.NullFloat64
	Valid         bool
}

NullSlice3Float64 represents a three-dimensional slice of float64 that may be null.

func (*NullSlice3Float64) Scan

func (s *NullSlice3Float64) Scan(value interface{}) error

Scan implements the sql.Scanner interface.

type NullSlice3Int64

type NullSlice3Int64 struct {
	Slice3Int64 [][][]sql.NullInt64
	Valid       bool
}

NullSlice3Int64 implements a three-dimensional slice of int64 that may be null.

func (*NullSlice3Int64) Scan

func (s *NullSlice3Int64) Scan(value interface{}) error

Scan implements the sql.Scanner interface.

type NullSlice3Map

type NullSlice3Map struct {
	Slice3Map [][][]NullMap
	Valid     bool
}

NullSlice3Map represents a three-dimensional slice of NullMap that may be null.

func (*NullSlice3Map) Scan

func (s *NullSlice3Map) Scan(value interface{}) error

Scan implements the sql.Scanner interface.

type NullSlice3String

type NullSlice3String struct {
	Slice3String [][][]sql.NullString
	Valid        bool
}

NullSlice3String implements a three-dimensional slice of string that may be null.

func (*NullSlice3String) Scan

func (s *NullSlice3String) Scan(value interface{}) error

Scan implements the sql.Scanner interface.

type NullSlice3Time

type NullSlice3Time struct {
	Slice3Time [][][]NullTime
	Valid      bool
}

NullSlice3Time represents a three-dimensional slice of time.Time that may be null.

func (*NullSlice3Time) Scan

func (s *NullSlice3Time) Scan(value interface{}) error

Scan implements the sql.Scanner interface.

type NullSliceBool

type NullSliceBool struct {
	SliceBool []sql.NullBool
	Valid     bool
}

NullSliceBool represents a slice of bool that may be null.

func (*NullSliceBool) Scan

func (s *NullSliceBool) Scan(value interface{}) error

Scan implements the sql.Scanner interface.

type NullSliceFloat64

type NullSliceFloat64 struct {
	SliceFloat64 []sql.NullFloat64
	Valid        bool
}

NullSliceFloat64 represents a slice of float64 that may be null.

func (*NullSliceFloat64) Scan

func (s *NullSliceFloat64) Scan(value interface{}) error

Scan implements the sql.Scanner interface.

type NullSliceInt64

type NullSliceInt64 struct {
	SliceInt64 []sql.NullInt64
	Valid      bool
}

NullSliceInt64 represents a slice of int64 that may be null.

func (*NullSliceInt64) Scan

func (s *NullSliceInt64) Scan(value interface{}) error

Scan implements the sql.Scanner interface.

type NullSliceMap

type NullSliceMap struct {
	SliceMap []NullMap
	Valid    bool
}

NullSliceMap represents a slice of NullMap that may be null.

func (*NullSliceMap) Scan

func (s *NullSliceMap) Scan(value interface{}) error

Scan implements the sql.Scanner interface.

type NullSliceString

type NullSliceString struct {
	SliceString []sql.NullString
	Valid       bool
}

NullSliceString represents a slice of string that may be null.

func (*NullSliceString) Scan

func (s *NullSliceString) Scan(value interface{}) error

Scan implements the sql.Scanner interface.

type NullSliceTime

type NullSliceTime struct {
	SliceTime []NullTime
	Valid     bool
}

NullSliceTime represents a slice of time.Time that may be null.

func (*NullSliceTime) Scan

func (s *NullSliceTime) Scan(value interface{}) error

Scan implements the sql.Scanner interface.

type NullTime

type NullTime struct {
	Time  time.Time
	Valid bool
}

NullTime represents a time.Time value that can be null. The NullTime supports Trino's Date, Time and Timestamp data types, with or without time zone.

func (*NullTime) Scan

func (s *NullTime) Scan(value interface{}) error

Scan implements the sql.Scanner interface.

type Numeric

type Numeric string

Numeric is a string representation of a number, such as "10", "5.5" or in scientific form If another string format is used it will error to serialise

type ProgressUpdater added in v0.303.0

type ProgressUpdater interface {
	// Update the query progress, immediately when the query starts, when receiving data, and once when the query is finished.
	Update(QueryProgressInfo)
}

type QueryProgressInfo added in v0.303.0

type QueryProgressInfo struct {
	QueryId    string
	QueryStats stmtStats
}

type UnsupportedArgError

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

func (UnsupportedArgError) Error

func (e UnsupportedArgError) Error() string

Jump to

Keyboard shortcuts

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