Namdak Tonpa 5 лет назад
Родитель
Сommit
2488a65a84
2 измененных файлов с 9 добавлено и 4 удалено
  1. 8 3
      src/stores/kvs_st.erl
  2. 1 1
      test/test_helper.exs

+ 8 - 3
src/stores/kvs_st.erl

@@ -74,11 +74,16 @@ take(#reader{args=N,feed=Feed,cache={T,O},dir=0}=C) ->
    {ok,I} = rocksdb:iterator(ref(), []),
    {ok,K,BERT} = rocksdb:iterator_move(I, {seek,feed_key({T,O},Feed)}),
    {KK,Res} = kvs_rocks:next2(I,Key,size(Key),K,BERT,[],case N of -1 -> -1; J -> J + 1 end,0),
+   RevRes = lists:reverse(Res),
+   Last = case RevRes of
+        [] -> 0;
+        [M|_] when element(2,M) == O -> 'end'
+   end,
    case {Res,length(Res)} of
         {[],_}    -> C#reader{args=[],cache=[]};
-        {[H|_],A} when element(2,KK) == O -> C#reader{args=Res,pos='end',cache={e(1,H),e(2,H)}};
-        {[H|X],A} when A < N + 1 orelse N == -1 -> C#reader{args=Res,cache={e(1,H),e(2,H)}};
-        {[H|X],A} when A == N -> C#reader{args=[bt(BERT)|X],cache={e(1,H),e(2,H)}};
+        {[H],A} when element(2,KK) == O -> C#reader{args=Res,pos='end',cache={e(1,H),e(2,H)}};
+        {[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],_} -> C#reader{args=X,cache={e(1,H),e(2,H)}} end;
 
 take(#reader{pos='begin',dir=1}=C) -> C#reader{args=[]};

+ 1 - 1
test/test_helper.exs

@@ -207,7 +207,7 @@ defmodule BPE.Test do
     r = :kvs.save(t3)
     IO.inspect "t3:"
     IO.inspect t3
-#    assert  z3 == []
+    assert  z3 == []
 
     KVS.reader(id: tid) = :kvs.save(KVS.reader(t3, dir: 1, pos: 0))
     n1 = :kvs.take(KVS.reader(:kvs.load_reader(tid), args: p))