func()

in connection.go [177:212]


func (c *conn) query(ctx context.Context, query string, args []namedValue) (driver.Rows, 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()

	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 {
		_ = c.closeStatement(ctx, statementID)
		return nil, c.avaticaErrorToResponseErrorOrError(err)
	}

	resultSets := res.(*message.ExecuteResponse).GetResults()

	return newRows(c, statementID, true, resultSets), nil
}