Index: impl/memory/datastore_index.go |
diff --git a/impl/memory/datastore_index.go b/impl/memory/datastore_index.go |
index db3a83c77a4852da0a0817da58e7e035123af04a..bab22af29f80de9172c8bb5593360ccd2231a429 100644 |
--- a/impl/memory/datastore_index.go |
+++ b/impl/memory/datastore_index.go |
@@ -44,8 +44,17 @@ func defaultIndexes(kind string, pmap ds.PropertyMap) []*ds.IndexDefinition { |
return ret |
} |
+// indexEntriesWithBuiltins generates a new memStore containing the default |
+// indexes for (k, pm) combined with complexIdxs. |
+// |
+// If "pm" is nil, this indicates an absence of a value. This is used |
+// specifically for deletion. |
func indexEntriesWithBuiltins(k *ds.Key, pm ds.PropertyMap, complexIdxs []*ds.IndexDefinition) memStore { |
- sip := serialize.PropertyMapPartially(k, pm) |
+ var sip serialize.SerializedPmap |
+ if pm == nil { |
+ return newMemStore() |
+ } |
+ sip = serialize.PropertyMapPartially(k, pm) |
return indexEntries(sip, k.Namespace(), append(defaultIndexes(k.Kind(), pm), complexIdxs...)) |
} |
@@ -133,6 +142,8 @@ func (m *matcher) match(sortBy []ds.IndexColumn, sip serialize.SerializedPmap) ( |
return m.buf, true |
} |
+// indexEntries generates a new memStore containing index entries for sip for |
+// the supplied index definitions. |
func indexEntries(sip serialize.SerializedPmap, ns string, idxs []*ds.IndexDefinition) memStore { |
ret := newMemStore() |
idxColl := ret.GetOrCreateCollection("idx") |
@@ -256,9 +267,14 @@ func addIndexes(store memStore, aid string, compIdx []*ds.IndexDefinition) { |
} |
} |
+// updateIndexes updates the indexes in store to accommodate a change in entity |
+// value. |
+// |
+// oldEnt is the previous entity value, and newEnt is the new entity value. If |
+// newEnt is nil, that signifies deletion. |
func updateIndexes(store memStore, key *ds.Key, oldEnt, newEnt ds.PropertyMap) { |
// load all current complex query index definitions. |
- compIdx := []*ds.IndexDefinition{} |
+ var compIdx []*ds.IndexDefinition |
walkCompIdxs(store.Snapshot(), nil, func(i *ds.IndexDefinition) bool { |
compIdx = append(compIdx, i) |
return true |