Browse Source

the age of last fixes :-)

Namdak Tonpa 5 years ago
parent
commit
672670a470
3 changed files with 8 additions and 9 deletions
  1. 3 3
      src/stores/kvs_rocks.erl
  2. 1 0
      src/stores/kvs_st.erl
  3. 4 6
      test/test_helper.exs

+ 3 - 3
src/stores/kvs_rocks.erl

@@ -58,15 +58,15 @@ prev(I,Key,S,A,X,T,N,C) -> {_,L} = prev2(I,Key,S,A,X,T,N,C), L.
 shd([]) -> [];
 shd(X) -> hd(X).
 
-next2(_,Key,_,_,X,T,N,C) when C == N -> {bt(X),T};
+next2(_,Key,_,_,X,T,N,C) when C == N -> {shd(lists:reverse(T)),T};
 next2(I,Key,S,{ok,A,X},_,T,N,C) -> next2(I,Key,S,A,X,T,N,C);
-next2(_,Key,_,{error,_},X,T,_,_) -> {bt(X),T};
+next2(_,Key,_,{error,_},X,T,_,_) -> {shd(lists:reverse(T)),T};
 next2(I,Key,S,A,X,T,N,C) when size(A) > S ->
      case binary:part(A, 0, S) of Key ->
           next2(I, Key, S, rocksdb:iterator_move(I, next), [], [bt(X)|T], N, C + 1);
           _ -> {shd(lists:reverse(T)),T} end;
 next2(_,Key,_,{ok,A,_},X,T,_,_) -> {bt(X),T};
-next2(_,Key,_,_,X,T,_,_) -> {bt(X),T}.
+next2(_,Key,_,_,X,T,_,_) -> {shd(lists:reverse(T)),T}.
 
 prev2(_,Key,_,_,X,T,N,C) when C == N -> {bt(X),T};
 prev2(I,Key,S,{ok,A,X},_,T,N,C) -> prev2(I,Key,S,A,X,T,N,C);

+ 1 - 0
src/stores/kvs_st.erl

@@ -80,6 +80,7 @@ take(#reader{args=N,feed=Feed,cache={T,O},dir=0}=C) -> % 1
         {[H],A} when element(2,KK) == O -> C#reader{args=Res,pos=Last,cache={e(1,H),e(2,H)}}; % 2
         {[H|X],A} when A < N + 1 orelse N == -1 -> C#reader{args=Res,cache={e(1,H),e(2,H)},pos=Last};
         {[H|X],A} when A == N -> C#reader{args=[bt(BERT)|X],cache={e(1,H),e(2,H)},pos=Last};
+        {[H|X],A} when A =< N andalso Last == 'end'-> C#reader{args=Res,cache={e(1,H),e(2,H)},pos=Last};
         {[H|X],_} -> C#reader{args=X,cache={e(1,H),e(2,H)}} end;
 
 % TODO: try to remove lists:reverse and abstract both branches

+ 4 - 6
test/test_helper.exs

@@ -313,15 +313,13 @@ defmodule BPE.Test do
     log("prev nz3:", nz3)
 
     assert nz3 = []
- 
+
     log(:end, "test prev")
 
   end
 
-  def log(:st, nameTest), do: IO.inspect "________ Start: " <> nameTest
-  def log(:end, nameTest), do: IO.inspect "``````` end: " <> nameTest
-  def log(key, value) do 
-    IO.inspect "~~~~~~~~~~ " <> key 
-    IO.inspect value 
+  def log(x,cursor) do
+     IO.inspect {x,cursor}
   end
+
 end