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 ¶
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 ¶
CorruptedDataErr means that provided hash mismatch with calculated.
func (*CorruptedDataErr) Error ¶
func (c *CorruptedDataErr) Error() string
type Dialer ¶
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 ¶
type ProfileEvent = proto.ProfileEvent
type ProfileEventType ¶
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.ColEnum sevNumber proto.ColUInt8 arr = new(proto.ColStr).Array() // 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) arr.Append([]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 ¶
type Server struct {
// contains filtered or unexported fields
}
Server is basic ClickHouse server.
type ServerConn ¶
type ServerConn struct {
// contains filtered or unexported fields
}
ServerConn wraps Server connection.
type ServerOptions ¶
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. |
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. |