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
- func Parameters(m map[string]any) []proto.Parameter
- type Client
- func Connect(ctx context.Context, conn net.Conn, opt Options) (*Client, error)
- func ConnectWithBuffer(ctx context.Context, conn net.Conn, opt Options, buf *proto.Buffer) (*Client, error)
- func Dial(ctx context.Context, opt Options) (c *Client, err error)
- func DialWithBuffer(ctx context.Context, opt Options, buf *proto.Buffer) (c *Client, err error)
- type Compression
- type CompressionLevel
- type CorruptedDataErr
- type Dialer
- type Exception
- type ExternalTable
- 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 DefaultHandshakeTimeout = 300 * time.Second DefaultReadTimeout = 3 * time.Second )
Defaults for connection.
const NoTimeout = time.Duration(-1)
NoTimeout is a value for Options.ReadTimeout that disables timeout.
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
func Parameters ¶ added in v0.48.0
Parameters is a helper for building Query.Parameters.
Each value is formatted with fmt and enclosed in single quotes. ClickHouse decodes the quoted value before parsing it as the placeholder's declared type. Consequently, backslash escape sequences need to survive two ClickHouse parsing steps. For example, use `line 1\\nline 2` to receive a newline, or `line 1\\\\nline 2` to receive the literal characters \ and n.
EXPERIMENTAL.
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 ConnectWithBuffer ¶ added in v0.67.0
func ConnectWithBuffer(ctx context.Context, conn net.Conn, opt Options, buf *proto.Buffer) (*Client, error)
ConnectWithBuffer performs handshake with ClickHouse server and initializes application level connection using the provided buffer.
func Dial ¶
Dial dials requested address and establishes TCP connection to ClickHouse server, performing handshake.
func DialWithBuffer ¶ added in v0.67.0
DialWithBuffer dials requested address and establishes TCP connection to ClickHouse server, performing handshake using the provided buffer.
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 // CompressionLZ4HC enables LZ4HC compression for data. High CPU overhead. CompressionLZ4HC )
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 CompressionLevel ¶ added in v0.62.0
type CompressionLevel uint32
CompressionLevel setting. A level == 0 is invalid and resolves to the default.
Supported by: LZ4HC.
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 ¶
Exception is server-side error.
func AsException ¶
AsException finds first *Exception in err chain.
type ExternalTable ¶ added in v0.74.0
ExternalTable is additional data that can be sent along with query. External tables can be referred by their name just like any temporary table.
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
QuotaKey string // blank string by default
Compression Compression // disabled by default
CompressionLevel CompressionLevel // compression algorithm specific default
ClientName string // blank string by default
Settings []Setting // none by default
// ReadTimeout is a timeout for reading a single packet from the server.
//
// Defaults to 3s. No timeout if negative (you can use NoTimeout const).
ReadTimeout time.Duration
Dialer Dialer // defaults to net.Dialer
DialTimeout time.Duration // defaults to 1s
TLS *tls.Config // no TLS is used by default
ProtocolVersion int // force protocol version, optional
HandshakeTimeout time.Duration // longer lasting handshake is a case for ClickHouse cloud idle instances, defaults to 5m
// 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
// SSH authentication.
SSHSigner cryptossh.Signer
// 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.
//
// Deprecated: use OnProfileEvents instead. This option will be removed in
// next major release.
OnProfileEvent func(ctx context.Context, e ProfileEvent) error
// OnProfileEvents is same as OnProfileEvent but is called on each event batch.
OnProfileEvents func(ctx context.Context, e []ProfileEvent) error
// OnLog is optional handler for server log entry.
//
// Deprecated: use OnLogs instead. This option will be removed in
// next major release.
OnLog func(ctx context.Context, l Log) error
// OnLogs is optional handler for server log events.
OnLogs func(ctx context.Context, l []Log) error
// Settings are optional query-scoped settings. Can override client settings.
Settings []Setting
// EXPERIMENTAL: parameters for query.
Parameters []proto.Parameter
// 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
// ExternalTables is additional external tables sent to server.
// If ExternalData is not empty, it's sent along with this tables.
ExternalTables []ExternalTable
// Logger for query, optional, defaults to client logger with `query_id` field.
Logger *zap.Logger
}
Query to ClickHouse.
Example (MultipleInputColumns) ¶
var (
body proto.ColStr
name proto.ColStr
sevText proto.ColEnum
sevNumber proto.ColUInt8
ts = new(proto.ColDateTime64).WithPrecision(proto.PrecisionNano)
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"))
ts.Append(now)
name.Append("name")
sevText.Values = append(sevText.Values, "INFO")
sevNumber = append(sevNumber, 10)
arr.Append([]string{"foo", "bar", "baz"})
}
input := proto.Input{
{Name: "ts", Data: ts},
{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" ("ts","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. |
|
Package compress implements compression support.
|
Package compress implements compression support. |
|
examples
|
|
|
insert
command
|
|
|
query_parameters
command
|
|
|
ssh_auth
command
|
|
|
internal
|
|
|
cmd/app
Package app is helper for simple cli apps.
|
Package app is helper for simple cli apps. |
|
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-native-dump
command
|
|
|
cmd/ch-version
command
|
|
|
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
|
|