code: func (l *LiteBackend) DeleteRange(ctx context.Context, startKey, endKey []byte) error {
  	if len(startKey) == 0 {
  		return trace.BadParameter("missing parameter startKey")
  	}
  	if len(endKey) == 0 {
  		return trace.BadParameter("missing parameter endKey")
  	}
  	return l.inTransaction(ctx, func(tx *sql.Tx) error {
  		q, err := tx.PrepareContext(ctx,
  			"SELECT key FROM kv WHERE key >= ? and key <= ?")
  		if err != nil {
  			return trace.Wrap(err)
  		}
  		rows, err := q.QueryContext(ctx, string(startKey), string(endKey))
  		if err != nil {
  			return trace.Wrap(err)
  		}
  		defer rows.Close()
  		var keys [][]byte
  		for rows.Next() {
  			var key []byte
  			if err := rows.Scan(&key); err != nil {
  				return trace.Wrap(err)
  			}
  			keys = append(keys, key)
  		}
  
  		for i := range keys {
  			if err := l.deleteInTransaction(l.ctx, keys[i], tx); err != nil {
  				return trace.Wrap(err)
  			}
  		}
  
  		return nil
  	})
  }
docs: // DeleteRange deletes range of items with keys between startKey and endKey
  // Note that elements deleted by range do not produce any events