Merge branch 'declassify' into tip
Conflicts: graph/iterator/hasa_iterator.go graph/iterator/linksto_iterator.go graph/iterator/query_shape_test.go graph/leveldb/all_iterator.go graph/leveldb/iterator.go graph/leveldb/leveldb_test.go graph/memstore/triplestore_test.go graph/mongo/iterator.go
This commit is contained in:
commit
2dbbd17fe1
34 changed files with 823 additions and 457 deletions
|
|
@ -46,21 +46,27 @@ const (
|
|||
)
|
||||
|
||||
type Comparison struct {
|
||||
Base
|
||||
subIt graph.Iterator
|
||||
op Operator
|
||||
val interface{}
|
||||
ts graph.TripleStore
|
||||
uid uint64
|
||||
tags graph.Tagger
|
||||
subIt graph.Iterator
|
||||
op Operator
|
||||
val interface{}
|
||||
ts graph.TripleStore
|
||||
result graph.Value
|
||||
}
|
||||
|
||||
func NewComparison(sub graph.Iterator, op Operator, val interface{}, ts graph.TripleStore) *Comparison {
|
||||
var vc Comparison
|
||||
BaseInit(&vc.Base)
|
||||
vc.subIt = sub
|
||||
vc.op = op
|
||||
vc.val = val
|
||||
vc.ts = ts
|
||||
return &vc
|
||||
return &Comparison{
|
||||
uid: NextUID(),
|
||||
subIt: sub,
|
||||
op: op,
|
||||
val: val,
|
||||
ts: ts,
|
||||
}
|
||||
}
|
||||
|
||||
func (it *Comparison) UID() uint64 {
|
||||
return it.uid
|
||||
}
|
||||
|
||||
// Here's the non-boilerplate part of the ValueComparison iterator. Given a value
|
||||
|
|
@ -111,9 +117,13 @@ func (it *Comparison) Reset() {
|
|||
it.subIt.Reset()
|
||||
}
|
||||
|
||||
func (it *Comparison) Tagger() *graph.Tagger {
|
||||
return &it.tags
|
||||
}
|
||||
|
||||
func (it *Comparison) Clone() graph.Iterator {
|
||||
out := NewComparison(it.subIt.Clone(), it.op, it.val, it.ts)
|
||||
out.CopyTagsFrom(it)
|
||||
out.tags.CopyFrom(it)
|
||||
return out
|
||||
}
|
||||
|
||||
|
|
@ -121,7 +131,7 @@ func (it *Comparison) Next() (graph.Value, bool) {
|
|||
var val graph.Value
|
||||
var ok bool
|
||||
for {
|
||||
val, ok = it.subIt.Next()
|
||||
val, ok = graph.Next(it.subIt)
|
||||
if !ok {
|
||||
return nil, false
|
||||
}
|
||||
|
|
@ -129,10 +139,19 @@ func (it *Comparison) Next() (graph.Value, bool) {
|
|||
break
|
||||
}
|
||||
}
|
||||
it.Last = val
|
||||
it.result = val
|
||||
return val, ok
|
||||
}
|
||||
|
||||
// DEPRECATED
|
||||
func (it *Comparison) ResultTree() *graph.ResultTree {
|
||||
return graph.NewResultTree(it.Result())
|
||||
}
|
||||
|
||||
func (it *Comparison) Result() graph.Value {
|
||||
return it.result
|
||||
}
|
||||
|
||||
func (it *Comparison) NextResult() bool {
|
||||
for {
|
||||
hasNext := it.subIt.NextResult()
|
||||
|
|
@ -143,10 +162,15 @@ func (it *Comparison) NextResult() bool {
|
|||
return true
|
||||
}
|
||||
}
|
||||
it.Last = it.subIt.Result()
|
||||
it.result = it.subIt.Result()
|
||||
return true
|
||||
}
|
||||
|
||||
// No subiterators.
|
||||
func (it *Comparison) SubIterators() []graph.Iterator {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (it *Comparison) Check(val graph.Value) bool {
|
||||
if !it.doComparison(val) {
|
||||
return false
|
||||
|
|
@ -157,7 +181,14 @@ func (it *Comparison) Check(val graph.Value) bool {
|
|||
// If we failed the check, then the subiterator should not contribute to the result
|
||||
// set. Otherwise, go ahead and tag it.
|
||||
func (it *Comparison) TagResults(dst map[string]graph.Value) {
|
||||
it.Base.TagResults(dst)
|
||||
for _, tag := range it.tags.Tags() {
|
||||
dst[tag] = it.Result()
|
||||
}
|
||||
|
||||
for tag, value := range it.tags.Fixed() {
|
||||
dst[tag] = value
|
||||
}
|
||||
|
||||
it.subIt.TagResults(dst)
|
||||
}
|
||||
|
||||
|
|
@ -188,3 +219,7 @@ func (it *Comparison) Optimize() (graph.Iterator, bool) {
|
|||
func (it *Comparison) Stats() graph.IteratorStats {
|
||||
return it.subIt.Stats()
|
||||
}
|
||||
|
||||
func (it *Comparison) Size() (int64, bool) {
|
||||
return 0, true
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue