Files
go/conn_exec.go
zeekay 22b3f5ce2b hanzo-ds/go: branded datastore client, rebased on clickhouse-go v2.44.0
Feature-complete v2.44.0 (lib/churl, lib/col, BFloat16, QBit, scanTypeDuration,
Options.Logger *slog.Logger) — fixes the [email protected].0 downgrade RED caught.
Package datastore, module github.com/hanzo-ds/go, depends only on hanzo-ds/native.
Wire strings preserved VERBATIM (X-ClickHouse-* headers, sql.Register("clickhouse"),
clickhouse:// DSN, ClientName="clickhouse-go") — consistent with native.
2026-07-10 13:11:20 -07:00

31 lines
978 B
Go

package datastore
import (
"context"
"github.com/hanzo-ds/go/lib/proto"
"time"
)
func (c *connect) exec(ctx context.Context, query string, args ...any) error {
var (
options = queryOptions(ctx)
queryParamsProtocolSupport = c.revision >= proto.DBMS_MIN_PROTOCOL_VERSION_WITH_PARAMETERS
body, err = bindQueryOrAppendParameters(queryParamsProtocolSupport, &options, query, c.server.Timezone, args...)
)
if err != nil {
return err
}
// set a read deadline - alternative to context.Read operation will fail if no data is received after deadline.
c.conn.SetReadDeadline(time.Now().Add(c.readTimeout))
defer c.conn.SetReadDeadline(time.Time{})
// context level deadlines override any read deadline
if deadline, ok := ctx.Deadline(); ok {
c.conn.SetDeadline(deadline)
defer c.conn.SetDeadline(time.Time{})
}
if err := c.sendQuery(body, &options); err != nil {
return err
}
return c.process(ctx, options.onProcess())
}