You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by da...@apache.org on 2020/09/16 17:06:38 UTC

[couchdb] 06/12: Fix mango end key generation

This is an automated email from the ASF dual-hosted git repository.

davisp pushed a commit to branch feature-ebtree-views
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit c1656bff4f72970aa2bad1275a1353abb52b45d2
Author: Paul J. Davis <pa...@gmail.com>
AuthorDate: Wed Aug 12 13:16:11 2020 -0500

    Fix mango end key generation
    
    This reverts back to the previous approach since we're not using
    couch_views_encoding any more.
---
 src/mango/src/mango_cursor_view.erl | 14 +++++++-------
 src/mango/src/mango_idx_view.erl    |  7 ++++---
 src/mango/src/mango_idx_view.hrl    | 13 +++++++++++++
 3 files changed, 24 insertions(+), 10 deletions(-)

diff --git a/src/mango/src/mango_cursor_view.erl b/src/mango/src/mango_cursor_view.erl
index 4960fa1..015481e 100644
--- a/src/mango/src/mango_cursor_view.erl
+++ b/src/mango/src/mango_cursor_view.erl
@@ -31,6 +31,7 @@
 -include_lib("fabric/include/fabric.hrl").
 
 -include("mango_cursor.hrl").
+-include("mango_idx_view.hrl").
 
 
 create(Db, Indexes, Selector, Opts) ->
@@ -85,16 +86,15 @@ explain(Cursor) ->
 maybe_replace_max_json([]) ->
     [];
 
+maybe_replace_max_json([?MAX_JSON_OBJ | T]) ->
+    [<<"<MAX>">> | maybe_replace_max_json(T)];
+
+maybe_replace_max_json([H | T]) ->
+    [H | maybe_replace_max_json(T)];
+
 maybe_replace_max_json(?MAX_STR) ->
     <<"<MAX>">>;
 
-maybe_replace_max_json([H | T] = EndKey) when is_list(EndKey) ->
-    MAX_VAL = couch_views_encoding:max(),
-    H1 = if H == MAX_VAL  -> <<"<MAX>">>;
-            true -> H
-    end,
-    [H1 | maybe_replace_max_json(T)];
-
 maybe_replace_max_json(EndKey) ->
     EndKey.
 
diff --git a/src/mango/src/mango_idx_view.erl b/src/mango/src/mango_idx_view.erl
index f80cc21..a73d82a 100644
--- a/src/mango/src/mango_idx_view.erl
+++ b/src/mango/src/mango_idx_view.erl
@@ -34,6 +34,7 @@
 -include_lib("couch/include/couch_db.hrl").
 -include("mango.hrl").
 -include("mango_idx.hrl").
+-include("mango_idx_view.hrl").
 
 
 validate_new(#idx{}=Idx, _Db) ->
@@ -131,7 +132,7 @@ is_usable(Idx, Selector, SortFields) ->
     % and the selector is not a text search (so requires a text index)
     RequiredFields = columns(Idx),
 
-    % sort fields are required to exist in the results so 
+    % sort fields are required to exist in the results so
     % we don't need to check the selector for these
     RequiredFields1 = ordsets:subtract(lists:usort(RequiredFields), lists:usort(SortFields)),
 
@@ -182,11 +183,11 @@ start_key([{'$eq', Key, '$eq', Key} | Rest]) ->
 
 
 end_key([]) ->
-    [couch_views_encoding:max()];
+    [?MAX_JSON_OBJ];
 end_key([{_, _, '$lt', Key} | Rest]) ->
     case mango_json:special(Key) of
         true ->
-            [couch_views_encoding:max()];
+            [?MAX_JSON_OBJ];
         false ->
             [Key | end_key(Rest)]
     end;
diff --git a/src/mango/src/mango_idx_view.hrl b/src/mango/src/mango_idx_view.hrl
new file mode 100644
index 0000000..d0f4674
--- /dev/null
+++ b/src/mango/src/mango_idx_view.hrl
@@ -0,0 +1,13 @@
+% Licensed under the Apache License, Version 2.0 (the "License"); you may not
+% use this file except in compliance with the License. You may obtain a copy of
+% the License at
+%
+% http://www.apache.org/licenses/LICENSE-2.0
+%
+% Unless required by applicable law or agreed to in writing, software
+% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+% License for the specific language governing permissions and limitations under
+% the License.
+
+-define(MAX_JSON_OBJ, {[{<<255, 255, 255, 255>>, <<>>}]}).
\ No newline at end of file