in connection.go [131:169]
func (c *conn) exec(ctx context.Context, query string, args []namedValue) (driver.Result, error) {
if c.connectionId == "" {
return nil, driver.ErrBadConn
}
if len(args) != 0 {
return nil, driver.ErrSkip
}
st, err := c.httpClient.post(ctx, &message.CreateStatementRequest{
ConnectionId: c.connectionId,
})
if err != nil {
return nil, c.avaticaErrorToResponseErrorOrError(err)
}
statementID := st.(*message.CreateStatementResponse).StatementId
defer c.closeStatement(context.Background(), statementID)
res, err := c.httpClient.post(ctx, &message.PrepareAndExecuteRequest{
ConnectionId: c.connectionId,
StatementId: statementID,
Sql: query,
MaxRowsTotal: c.config.maxRowsTotal,
FirstFrameMaxSize: c.config.frameMaxSize,
})
if err != nil {
return nil, c.avaticaErrorToResponseErrorOrError(err)
}
// Currently there is only 1 ResultSet per response for exec
changed := int64(res.(*message.ExecuteResponse).Results[0].UpdateCount)
return &result{
affectedRows: changed,
}, nil
}