pkg datasource, method (*IndexRanges) String() string
pkg datasource, method (StringFieldRanges) Len() int
pkg datasource, method (StringFieldRanges) Less(int, int) bool
pkg datasource, method (StringFieldRanges) Swap(int, int)
pkg datasource, type Database interface { GetContext, GetTable }
pkg datasource, type Database interface, GetContext() *context.T
pkg datasource, type Database interface, GetTable(string, bool) (Table, error)
pkg datasource, type Index struct
pkg datasource, type Index struct, FieldName string
pkg datasource, type Index struct, Kind vdl.Kind
pkg datasource, type IndexRanges struct
pkg datasource, type IndexRanges struct, FieldName string
pkg datasource, type IndexRanges struct, Kind vdl.Kind
pkg datasource, type IndexRanges struct, NilAllowed bool
pkg datasource, type IndexRanges struct, StringRanges *StringFieldRanges
pkg datasource, type KeyValueStream interface { Advance, Cancel, Err, KeyValue }
pkg datasource, type KeyValueStream interface, Advance() bool
pkg datasource, type KeyValueStream interface, Cancel()
pkg datasource, type KeyValueStream interface, Err() error
pkg datasource, type KeyValueStream interface, KeyValue() (string, *vom.RawBytes)
pkg datasource, type StringFieldRange struct
pkg datasource, type StringFieldRange struct, Limit string
pkg datasource, type StringFieldRange struct, Start string
pkg datasource, type StringFieldRanges []StringFieldRange
pkg datasource, type Table interface { Delete, GetIndexFields, Scan }
pkg datasource, type Table interface, Delete(string) (bool, error)
pkg datasource, type Table interface, GetIndexFields() []Index
pkg datasource, type Table interface, Scan(...IndexRanges) (KeyValueStream, error)
