mirror of
https://github.com/hanzo-ds/go.git
synced 2026-10-30 19:45:01 +00:00
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.
31 lines
978 B
Go
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())
|
|
}
|