code: func (s *Store) execute(c *Connection, ex *ExecuteRequest) (*ExecuteResponse, error) {
  	if c == nil {
  		s.connsMu.RLock()
  		c = s.conns[defaultConnID]
  		s.connsMu.RUnlock()
  	}
  	c.SetLastUsedNow()
  
  	start := time.Now()
  
  	d := &databaseSub{
  		ConnID:  c.ID,
  		Atomic:  ex.Atomic,
  		Queries: ex.Queries,
  		Timings: ex.Timings,
  	}
  	cmd, err := newCommand(execute, d)
  	if err != nil {
  		return nil, err
  	}
  	b, err := json.Marshal(cmd)
  	if err != nil {
  		return nil, err
  	}
  
  	f := s.raft.Apply(b, s.ApplyTimeout)
  	if e := f.(raft.Future); e.Error() != nil {
  		if e.Error() == raft.ErrNotLeader {
  			return nil, ErrNotLeader
  		}
  		return nil, e.Error()
  	}
  
  	switch r := f.Response().(type) {
  	case *fsmExecuteResponse:
  		return &ExecuteResponse{
  			Results: r.results,
  			Time:    time.Since(start).Seconds(),
  			Raft:    RaftResponse{f.Index(), s.raftID},
  		}, r.error
  	case *fsmGenericResponse:
  		return nil, r.error
  	default:
  		panic("unsupported type")
  	}
  }
docs: // Execute executes queries that return no rows, but do modify the database. If connection
  // is nil then the utility connection is used.