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_builder{
ConnectionId: c.connectionId,
}.Build())
if err != nil {
return nil, c.avaticaErrorToResponseErrorOrError(err)
}
statementID := st.(*message.CreateStatementResponse).GetStatementId()
defer c.closeStatement(ctx, statementID)
res, err := c.httpClient.post(ctx, message.PrepareAndExecuteRequest_builder{
ConnectionId: c.connectionId,
StatementId: statementID,
Sql: query,
MaxRowsTotal: c.config.maxRowsTotal,
FirstFrameMaxSize: c.config.frameMaxSize,
}.Build())
if err != nil {
return nil, c.avaticaErrorToResponseErrorOrError(err)
}
// Currently there is only 1 ResultSet per response for exec
changed := int64(res.(*message.ExecuteResponse).GetResults()[0].GetUpdateCount())
return &result{
affectedRows: changed,
}, nil
}