Browse Source

Merge branch 'master' of https://github.com/synrc/kvs

IrinaKostiuk 5 years ago
parent
commit
b8f371477e
3 changed files with 7 additions and 4 deletions
  1. 1 1
      mix.exs
  2. 1 1
      src/kvs.app.src
  3. 5 2
      src/stores/kvs_rocks.erl

+ 1 - 1
mix.exs

@@ -4,7 +4,7 @@ defmodule KVS.Mixfile do
   def project do
   def project do
     [
     [
       app: :kvs,
       app: :kvs,
-      version: "6.12.6",
+      version: "6.12.7",
       description: "KVS Abstract Chain Database",
       description: "KVS Abstract Chain Database",
       package: package(),
       package: package(),
       deps: deps()
       deps: deps()

+ 1 - 1
src/kvs.app.src

@@ -1,6 +1,6 @@
 {application, kvs,
 {application, kvs,
    [{description, "KVS Abstract Chain Database"},
    [{description, "KVS Abstract Chain Database"},
-    {vsn, "6.12.6"},
+    {vsn, "6.12.7"},
     {registered, []},
     {registered, []},
     {applications, [kernel,stdlib]},
     {applications, [kernel,stdlib]},
     {mod, { kvs, []}},
     {mod, { kvs, []}},

+ 5 - 2
src/stores/kvs_rocks.erl

@@ -55,13 +55,16 @@ all(R) -> {ok,I} = rocksdb:iterator(ref(), []),
 next(I,Key,S,A,X,T,N,C) -> {_,L} = next2(I,Key,S,A,X,T,N,C), L.
 next(I,Key,S,A,X,T,N,C) -> {_,L} = next2(I,Key,S,A,X,T,N,C), L.
 prev(I,Key,S,A,X,T,N,C) -> {_,L} = prev2(I,Key,S,A,X,T,N,C), L.
 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 -> {bt(X),T};
 next2(I,Key,S,{ok,A,X},_,T,N,C) -> next2(I,Key,S,A,X,T,N,C);
 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,_,_) -> {bt(X),T};
 next2(I,Key,S,A,X,T,N,C) when size(A) > S ->
 next2(I,Key,S,A,X,T,N,C) when size(A) > S ->
      case binary:part(A, 0, S) of Key ->
      case binary:part(A, 0, S) of Key ->
           next2(I, Key, S, rocksdb:iterator_move(I, next), [], [bt(X)|T], N, C + 1);
           next2(I, Key, S, rocksdb:iterator_move(I, next), [], [bt(X)|T], N, C + 1);
-          _ -> {hd(lists:reverse(T)),T} end;
+          _ -> {shd(lists:reverse(T)),T} end;
 next2(_,Key,_,{ok,A,_},X,T,_,_) -> {bt(X),T};
 next2(_,Key,_,{ok,A,_},X,T,_,_) -> {bt(X),T};
 next2(_,Key,_,_,X,T,_,_) -> {bt(X),T}.
 next2(_,Key,_,_,X,T,_,_) -> {bt(X),T}.
 
 
@@ -71,7 +74,7 @@ prev2(_,Key,_,{error,_},X,T,_,_) -> {bt(X),T};
 prev2(I,Key,S,A,X,T,N,C) when size(A) > S ->
 prev2(I,Key,S,A,X,T,N,C) when size(A) > S ->
      case binary:part(A, 0, S) of Key ->
      case binary:part(A, 0, S) of Key ->
           prev2(I, Key, S, rocksdb:iterator_move(I, prev), [], [bt(X)|T], N, C + 1);
           prev2(I, Key, S, rocksdb:iterator_move(I, prev), [], [bt(X)|T], N, C + 1);
-          _ -> {hd(lists:reverse(T)),T} end;
+          _ -> {shd(lists:reverse(T)),T} end;
 prev2(_,Key,_,{ok,A,_},X,T,_,_) -> {bt(X),T};
 prev2(_,Key,_,{ok,A,_},X,T,_,_) -> {bt(X),T};
 prev2(_,Key,_,_,X,T,_,_) -> {bt(X),T}.
 prev2(_,Key,_,_,X,T,_,_) -> {bt(X),T}.