func newFloatIterators(itrs []Iterator) []FloatIterator {
	a := make([]FloatIterator, 0, len(itrs))
	for _, itr := range itrs {
		switch itr := itr.(type) {
		case FloatIterator:
			a = append(a, itr)
		default:
			itr.Close()
		}
	}
	return a
}
newFloatIterators converts a slice of Iterator to a slice of FloatIterator.
Drop and closes any iterator in itrs that is not a FloatIterator and cannot
be cast to a FloatIterator.
package query
import (
	"container/heap"
	"context"
	"io"
	"sort"
	"sync"
	"time"
	"github.com/gogo/protobuf/proto"
	"github.com/influxdata/influxql"
)
const DefaultStatsInterval = time.Second
type FloatIterator interface {
	Iterator
	Next() (*FloatPoint, error)
}