From 8ab9eee443e822f9a19f6b815bbbf8cd729ad848 Mon Sep 17 00:00:00 2001 From: Jaremy Creechley Date: Mon, 28 Aug 2023 21:32:28 -0700 Subject: [PATCH] sorting keys - fix --- datastore/databuffer.nim | 4 ++-- datastore/memoryds.nim | 10 +++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/datastore/databuffer.nim b/datastore/databuffer.nim index 1081068..fef4c78 100644 --- a/datastore/databuffer.nim +++ b/datastore/databuffer.nim @@ -24,8 +24,8 @@ type proc `=destroy`*(x: var DataBufferHolder) = ## copy pointer implementation if x.buf != nil: - when isMainModule or true: - echo "buffer: FREE: ", repr x.buf.pointer + # when isMainModule or true: + # echo "buffer: FREE: ", repr x.buf.pointer deallocShared(x.buf) proc len*(a: DataBuffer): int = a[].size diff --git a/datastore/memoryds.nim b/datastore/memoryds.nim index 3d3461e..dccf2fc 100644 --- a/datastore/memoryds.nim +++ b/datastore/memoryds.nim @@ -1,6 +1,7 @@ import std/tables import std/sequtils import std/strutils +import std/algorithm import pkg/chronos import pkg/questionable @@ -91,11 +92,14 @@ method put*( proc keyIterator(self: MemoryDatastore, queryKey: string): iterator: KeyBuffer {.gcsafe.} = return iterator(): KeyBuffer {.closure.} = - let keys = self.store.keys().toSeq() + var keys = self.store.keys().toSeq() + keys.sort(proc (x, y: KeyBuffer): int = cmp(x.toString, y.toString)) for key in keys: if key.toString().startsWith(queryKey): yield key +import pretty + method query*( self: MemoryDatastore, query: Query, @@ -108,10 +112,14 @@ method query*( var iter = QueryIter.new() + echo "queryKey: ", queryKey + proc next(): Future[?!QueryResponse] {.async.} = let kb = walker() + print "query: ", kb.toString + if finished(walker): iter.finished = true return success (Key.none, EmptyBytes)