in azkustodata/conn.go [99:151]
func (c *Conn) doRequest(ctx context.Context, execType int, db string, query Statement, properties requestProperties) (errors.Op, http.Header, http.Header,
io.ReadCloser, error) {
var op errors.Op
err := c.validateEndpoint()
if err != nil {
op = errors.OpQuery
return 0, nil, nil, nil, errors.E(op, errors.KInternal, fmt.Errorf("could not validate endpoint: %w", err))
}
if execType == execQuery {
op = errors.OpQuery
} else if execType == execMgmt {
op = errors.OpMgmt
}
var endpoint *url.URL
buff := bufferPool.Get().(*bytes.Buffer)
buff.Reset()
defer bufferPool.Put(buff)
switch execType {
case execQuery, execMgmt:
var err error
var csl string
if query.SupportsInlineParameters() || properties.QueryParameters.Count() == 0 {
csl = query.String()
} else {
csl = fmt.Sprintf("%s\n%s", properties.QueryParameters.ToDeclarationString(), query.String())
}
err = json.NewEncoder(buff).Encode(
queryMsg{
DB: db,
CSL: csl,
Properties: properties,
},
)
if err != nil {
return 0, nil, nil, nil, errors.E(op, errors.KInternal, fmt.Errorf("could not JSON marshal the Query message: %w", err))
}
if execType == execQuery {
endpoint = c.endQuery
} else {
endpoint = c.endMgmt
}
default:
return 0, nil, nil, nil, errors.ES(op, errors.KInternal, "internal error: did not understand the type of execType: %d", execType)
}
headers := c.getHeaders(properties)
responseHeaders, closer, err := c.doRequestImpl(ctx, op, endpoint, io.NopCloser(buff), headers, fmt.Sprintf("With query: %s", query.String()))
return op, headers, responseHeaders, closer, err
}