Documentation
¶
Overview ¶
Package ch implements ClickHouse client.
Index ¶
- Constants
- Variables
- func CompressionStrings() []string
- func IsErr(err error, codes ...proto.Error) bool
- func IsException(err error) bool
- type Client
- type Compression
- type CorruptedDataErr
- type Dialer
- type Exception
- type Log
- type Options
- type ProfileEvent
- type ProfileEventType
- type Query
- type Server
- type ServerConn
- type ServerOptions
- type Setting
Examples ¶
Constants ¶
const ( DefaultDatabase = "default" DefaultUser = "default" DefaultHost = "127.0.0.1" DefaultPort = 9000 DefaultDialTimeout = 1 * time.Second )
Defaults for connection.
Variables ¶
var ErrClosed = errors.New("client is closed")
ErrClosed means that client was already closed.
Functions ¶
func CompressionStrings ¶
func CompressionStrings() []string
CompressionStrings returns a slice of all String values of the enum
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client implements ClickHouse binary protocol client on top of single TCP connection.
func Connect ¶
Connect performs handshake with ClickHouse server and initializes application level connection.
func Dial ¶
Dial dials requested address and establishes TCP connection to ClickHouse server, performing handshake.
func (*Client) Close ¶
Close closes underlying connection and frees all resources, rendering Client to unusable state.
func (*Client) ServerInfo ¶ added in v0.19.0
func (c *Client) ServerInfo() proto.ServerHello
ServerInfo returns server information.
type Compression ¶
type Compression byte
Compression setting.
Trade bandwidth for CPU.
const ( // CompressionDisabled disables compression. Lowest CPU overhead. CompressionDisabled Compression = iota // CompressionLZ4 enables LZ4 compression for data. Medium CPU overhead. CompressionLZ4 // CompressionZSTD enables ZStandard compression. High CPU overhead. CompressionZSTD // CompressionNone uses no compression but data has checksums. CompressionNone )
func CompressionString ¶
func CompressionString(s string) (Compression, error)
CompressionString retrieves an enum value from the enum constants string name. Throws an error if the param is not part of the enum.
func CompressionValues ¶
func CompressionValues() []Compression
CompressionValues returns all values of the enum
func (Compression) IsACompression ¶
func (i Compression) IsACompression() bool
IsACompression returns "true" if the value is listed in the enum definition. "false" otherwise
func (Compression) String ¶
func (i Compression) String() string
type CorruptedDataErr ¶ added in v0.5.0
CorruptedDataErr means that provided hash mismatch with calculated.
func (*CorruptedDataErr) Error ¶ added in v0.5.0
func (c *CorruptedDataErr) Error() string
type Dialer ¶ added in v0.17.1
type Dialer interface {
DialContext(ctx context.Context, network, address string) (net.Conn, error)
}
A Dialer dials using a context.
type Exception ¶
type Exception struct {
Code proto.Error
Name string
Message string
Stack string
Next []Exception // non-nil only for top exception
}
Exception is server-side error.
func AsException ¶
AsException finds first *Exception in err chain.
type Options ¶
type Options struct {
Logger *zap.Logger // defaults to Nop.
Address string // 127.0.0.1:9000
Database string // "default"
User string // "default"
Password string // blank string by default
Compression Compression // disabled by default
Settings []Setting // none by default
Dialer Dialer // defaults to net.Dialer
DialTimeout time.Duration // defaults to 1s
TLS *tls.Config // no TLS is used by default
// Additional OpenTelemetry instrumentation that will capture query body
// and other parameters.
//
// Note: OpenTelemetry context propagation works without this option too.
OpenTelemetryInstrumentation bool
TracerProvider trace.TracerProvider
MeterProvider metric.MeterProvider
// contains filtered or unexported fields
}
Options for Client. Zero value is valid.
type ProfileEvent ¶ added in v0.5.0
type ProfileEvent = proto.ProfileEvent
type ProfileEventType ¶ added in v0.5.0
type ProfileEventType = proto.ProfileEventType
type Query ¶
type Query struct {
// Body of query, like "SELECT 1".
Body string
// QueryID is ID of query, defaults to new UUIDv4.
QueryID string
// QuotaKey of query, optional.
QuotaKey string
// Input columns for INSERT operations.
Input proto.Input
// OnInput is called to allow ingesting more data to Input.
//
// The io.EOF reports that no more input should be ingested.
//
// Optional, single block is ingested from Input if not provided,
// but query will fail if Input is set but has zero rows.
OnInput func(ctx context.Context) error
// Result columns for SELECT operations.
Result proto.Result
// OnResult is called when Result is filled with result block.
//
// Optional, but query will fail of more than one block is received
// and no OnResult is provided.
OnResult func(ctx context.Context, block proto.Block) error
// OnProgress is optional progress handler. The progress value contain
// difference, so progress should be accumulated if needed.
OnProgress func(ctx context.Context, p proto.Progress) error
// OnProfile is optional handler for profiling data.
OnProfile func(ctx context.Context, p proto.Profile) error
// OnProfileEvent is optional handler for profiling event stream data.
OnProfileEvent func(ctx context.Context, e ProfileEvent) error
// OnLog is optional handler for server log entry.
OnLog func(ctx context.Context, l Log) error
// Settings are optional query-scoped settings. Can override client settings.
Settings []Setting
// Secret is optional inter-server per-cluster secret for Distributed queries.
//
// See https://clickhouse.com/docs/en/engines/table-engines/special/distributed/#distributed-clusters
Secret string
// InitialUser is optional initial user for Distributed queries.
InitialUser string
// ExternalData is optional data for server to load.
//
// https://clickhouse.com/docs/en/engines/table-engines/special/external-data/
ExternalData []proto.InputColumn
// ExternalTable name. Defaults to _data.
ExternalTable string
}
Query to ClickHouse.
Example (MultipleInputColumns) ¶
var (
body proto.ColStr
timestamp proto.ColDateTime64
name proto.ColStr
sevText proto.ColEnum8Auto
sevNumber proto.ColUInt8
arrValues proto.ColStr
arr = proto.ColArr{Data: &arrValues} // Array(String)
now = time.Date(2010, 1, 1, 10, 22, 33, 345678, time.UTC)
)
// Append 10 rows.
for i := 0; i < 10; i++ {
body.AppendBytes([]byte("Hello"))
timestamp = append(timestamp, proto.ToDateTime64(now, proto.PrecisionNano))
name.Append("name")
sevText.Values = append(sevText.Values, "INFO")
sevNumber = append(sevNumber, 10)
arrValues.ArrAppend(&arr, []string{"foo", "bar", "baz"})
}
input := proto.Input{
{Name: "timestamp", Data: timestamp.Wrap(proto.PrecisionNano)},
{Name: "severity_text", Data: &sevText},
{Name: "severity_number", Data: sevNumber},
{Name: "body", Data: body},
{Name: "name", Data: name},
{Name: "arr", Data: arr},
}
fmt.Println(input.Into("logs"))
Output: INSERT INTO logs (timestamp, severity_text, severity_number, body, name, arr) VALUES
type Server ¶ added in v0.4.0
type Server struct {
// contains filtered or unexported fields
}
Server is basic ClickHouse server.
func NewServer ¶ added in v0.4.0
func NewServer(opt ServerOptions) *Server
NewServer returns new ClickHouse Server.
type ServerConn ¶ added in v0.4.0
type ServerConn struct {
// contains filtered or unexported fields
}
ServerConn wraps Server connection.
type ServerOptions ¶ added in v0.4.0
ServerOptions wraps possible Server configuration.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package chpool is a connection pool for ch.
|
Package chpool is a connection pool for ch. |
|
Package cht implements ClickHouse testing utilities, primarily end to end.
|
Package cht implements ClickHouse testing utilities, primarily end to end. |
|
internal
|
|
|
cmd/app
Package app is helper for simple cli apps.
|
Package app is helper for simple cli apps. |
|
cmd/ch-arr
command
|
|
|
cmd/ch-bench-numbers
command
|
|
|
cmd/ch-bench-numbers-concurrent
command
|
|
|
cmd/ch-bench-rnd
command
|
|
|
cmd/ch-bench-server
command
|
|
|
cmd/ch-bench-str
command
|
|
|
cmd/ch-bench-trace-id
command
|
|
|
cmd/ch-compression
command
|
|
|
cmd/ch-ex-numbers
command
|
|
|
cmd/ch-insert-lag
command
|
|
|
cmd/ch-low-cord
command
|
|
|
cmd/ch-map
command
|
|
|
cmd/ch-nullable
command
|
|
|
cmd/ch-version
command
|
|
|
compress
Package compress implements compression support.
|
Package compress implements compression support. |
|
e2e
Package e2e implements end to end testing utilities.
|
Package e2e implements end to end testing utilities. |
|
gold
Package gold implements golden files.
|
Package gold implements golden files. |
|
version
Package version resolves current module version.
|
Package version resolves current module version. |
|
ztest
Package ztest provides a variety of helpers for testing log output.
|
Package ztest provides a variety of helpers for testing log output. |
|
Package otelch provide OpenTelemetry instrumentation for go-faster/ch.
|
Package otelch provide OpenTelemetry instrumentation for go-faster/ch. |
|
Package proto implements ClickHouse wire protocol.
|
Package proto implements ClickHouse wire protocol. |
|
cmd/ch-gen-col
command
|