allow KNN cursors

This commit is contained in:
Josh Baker 2017-07-24 08:42:12 -07:00
parent 300635727a
commit 3fae3f70eb
2 changed files with 6 additions and 3 deletions

View File

@ -154,7 +154,7 @@ func (sw *scanWriter) writeHead() {
func (sw *scanWriter) writeFoot() { func (sw *scanWriter) writeFoot() {
sw.mu.Lock() sw.mu.Lock()
defer sw.mu.Unlock() defer sw.mu.Unlock()
cursor := sw.numberItems + sw.cursor cursor := sw.cursor + sw.numberItems
if !sw.hitLimit { if !sw.hitLimit {
cursor = 0 cursor = 0
} }
@ -275,9 +275,13 @@ func (sw *scanWriter) writeObject(opts ScanWriterParams) bool {
return true return true
} }
sw.count++ sw.count++
if sw.count <= sw.cursor {
return true
}
if sw.output == outputCount { if sw.output == outputCount {
return true return true
} }
switch sw.msg.OutputType { switch sw.msg.OutputType {
case server.JSON: case server.JSON:
var wr bytes.Buffer var wr bytes.Buffer

View File

@ -93,8 +93,7 @@ func (c *Controller) cmdSearchArgs(cmd string, vs []resp.Value, types []string)
if cmd == "nearby" { if cmd == "nearby" {
// possible that this is KNN search // possible that this is KNN search
s.knn = s.searchScanBaseTokens.ulimit && // must be true s.knn = s.searchScanBaseTokens.ulimit && // must be true
!s.searchScanBaseTokens.usparse && // must be false !s.searchScanBaseTokens.usparse // must be false
s.searchScanBaseTokens.cursor == 0 // must be zero
} }
if !s.knn { if !s.knn {
err = errInvalidArgument(slat) err = errInvalidArgument(slat)