diff --git a/src/box/sophia_index.cc b/src/box/sophia_index.cc index cc5adaf39fe9c42f8a646ee0732a29c6ca4a1bc5..b6e31cb2cd9322bff57e8107d7b4213385dc0a16 100644 --- a/src/box/sophia_index.cc +++ b/src/box/sophia_index.cc @@ -152,6 +152,8 @@ SophiaIndex::createObject(const char *key, bool async, const char **keyend) part = (char *)&num_parts[i]; partsize = sizeof(uint64_t); } + if (partsize == 0) + part = ""; if (sp_setstring(obj, partname, part, partsize) == -1) sophia_error(env); i++; diff --git a/test/sophia/gh.result b/test/sophia/gh.result index 7c8f9e5139886713b29cd69372b7d9acc2db9b8d..53395769805fd21f287e45195c18b4feacae169b 100644 --- a/test/sophia/gh.result +++ b/test/sophia/gh.result @@ -107,7 +107,7 @@ t = s:select({''},{iterator='GT', limit =1}) ... t --- -- - ['11'] +- - ['1'] ... t = s:select({},{iterator='GT', limit =1}) --- @@ -150,3 +150,24 @@ box.space.t:insert{1,'A'} s:drop() --- ... +-- gh-1009: search for empty string fails +s = box.schema.space.create('t', {engine='sophia'}) +--- +... +i = s:create_index('primary',{parts={1, 'STR'}}) +--- +... +s:insert{''} +--- +... +#i:select{''} +--- +- 1 +... +i:get{''} +--- +- [''] +... +s:drop() +--- +... diff --git a/test/sophia/gh.test.lua b/test/sophia/gh.test.lua index d820e911215d479395b0a52cf96c5b9cf13d7aab..25ed9329e1e127d5433f340bdb841ce4c9912fb9 100644 --- a/test/sophia/gh.test.lua +++ b/test/sophia/gh.test.lua @@ -63,3 +63,12 @@ s = box.schema.space.create('t', {engine='sophia'}) i = s:create_index('primary',{parts={1, 'STR'}}) box.space.t:insert{1,'A'} s:drop() + + +-- gh-1009: search for empty string fails +s = box.schema.space.create('t', {engine='sophia'}) +i = s:create_index('primary',{parts={1, 'STR'}}) +s:insert{''} +#i:select{''} +i:get{''} +s:drop() diff --git a/third_party/sophia b/third_party/sophia index 1dc584e3c6bc425fa4f9dd8afdaca59a482a13cd..ce1607f5634587d6b8a7759f823b0d07d992ea8d 160000 --- a/third_party/sophia +++ b/third_party/sophia @@ -1 +1 @@ -Subproject commit 1dc584e3c6bc425fa4f9dd8afdaca59a482a13cd +Subproject commit ce1607f5634587d6b8a7759f823b0d07d992ea8d