[tarantool-patches] Re: [PATCH] net.box: fix 'unique' index flag in net.box schema

Alexander Turenko alexander.turenko at tarantool.org
Mon Apr 1 13:08:55 MSK 2019


On Mon, Apr 01, 2019 at 11:42:03AM +0300, Vladislav Shpilevoy wrote:
> 
> > diff --git a/test/box-tap/gh-4091-net.box-indexes-are-always-non-unique.test.lua b/test/box-tap/gh-4091-net.box-indexes-are-always-non-unique.test.lua
> > new file mode 100755
> > index 000000000..04c576915
> > --- /dev/null
> > +++ b/test/box-tap/gh-4091-net.box-indexes-are-always-non-unique.test.lua
> 
> Please, just add a one line to box/net.box.lua. It does not help at all
> to have a new file per each issue. This way looks bulky and hard to search
> for something.

I disagree. Summarized here:
https://www.freelists.org/post/tarantool-patches/PATCH-sql-make-SQL-BIND-optional-in-an-iproto-request,2

Anyway, if you feel all-in-one tests as the better approach, I don't
want to spent time to discuss it.

Changed. The new patch is below.

> 
> > @@ -0,0 +1,30 @@
> > +#!/usr/bin/env tarantool
> > +
> > +local tap = require('tap')
> > +local net_box = require('net.box')
> > +local urilib = require('uri')
> > +
> > +box.cfg({
> > +    listen = os.getenv('LISTEN') or 'localhost:3301',
> > +})
> > +
> > +box.schema.user.grant('guest', 'read,write,execute', 'universe')
> > +
> > +box.schema.create_space('s')
> > +box.space.s:create_index('pk')
> > +box.space.s:create_index('sk', {unique = false})
> > +
> > +local test = tap.test('gh-4091-net.box-indexes-are-always-non-unique')
> > +test:plan(2)
> > +
> > +local uri = urilib.parse(box.cfg.listen)
> > +local uri = ('%s:%s'):format(uri.host or 'localhost', uri.service)
> > +local conn = net_box.connect(uri)
> > +
> > +test:is(conn.space.s.index.pk.unique, true, 'unique index')
> > +test:is(conn.space.s.index.sk.unique, false, 'non-unique index')
> > +
> > +box.space.s:drop()
> > +box.schema.user.revoke('guest', 'read,write,execute', 'universe')
> > +
> > +os.exit(test:check() == true and 0 or 1)
> > -- 
> > 2.20.1
> > 

----

commit 9a78b65026714d8abfc9246de7e02475c7ce6727
Author: Alexander Turenko <alexander.turenko at tarantool.org>
Date:   Mon Apr 1 07:54:51 2019 +0300

    net.box: fix 'unique' index flag in net.box schema
    
    Before this commit it always returns false.
    
    Fixes #4091.

diff --git a/src/box/lua/net_box.lua b/src/box/lua/net_box.lua
index b3139a3f5..e1c4b652b 100644
--- a/src/box/lua/net_box.lua
+++ b/src/box/lua/net_box.lua
@@ -1253,7 +1253,7 @@ function remote_methods:_install_schema(schema_version, spaces, indices)
                 }
                 idx.parts[k] = pk
             end
-            idx.unique = not not index[OPTS].is_unique
+            idx.unique = not not index[OPTS].unique
         end
 
         if sl[idx.space] ~= nil then
diff --git a/test/box/net.box.result b/test/box/net.box.result
index aecaf9436..8fc668606 100644
--- a/test/box/net.box.result
+++ b/test/box/net.box.result
@@ -3526,3 +3526,35 @@ s:drop()
 box.cfg{readahead = readahead}
 ---
 ...
+--
+-- gh-4091: index unique flag is always false
+--
+s = box.schema.space.create("test")
+---
+...
+_ = s:create_index("pk")
+---
+...
+_ = s:create_index("sk", {unique = false})
+---
+...
+box.schema.user.grant("guest", "read", "space", "test")
+---
+...
+c = net.connect(box.cfg.listen)
+---
+...
+c.space.test.index.pk.unique -- true
+---
+- true
+...
+c.space.test.index.sk.unique -- false
+---
+- false
+...
+box.schema.user.revoke("guest", "read", "space", "test")
+---
+...
+s:drop()
+---
+...
diff --git a/test/box/net.box.test.lua b/test/box/net.box.test.lua
index 04d6c1903..b81bed239 100644
--- a/test/box/net.box.test.lua
+++ b/test/box/net.box.test.lua
@@ -1435,3 +1435,16 @@ test_run:wait_log('default', 'readahead limit is reached', 1024, 0.1)
 
 s:drop()
 box.cfg{readahead = readahead}
+
+--
+-- gh-4091: index unique flag is always false
+--
+s = box.schema.space.create("test")
+_ = s:create_index("pk")
+_ = s:create_index("sk", {unique = false})
+box.schema.user.grant("guest", "read", "space", "test")
+c = net.connect(box.cfg.listen)
+c.space.test.index.pk.unique -- true
+c.space.test.index.sk.unique -- false
+box.schema.user.revoke("guest", "read", "space", "test")
+s:drop()




More information about the Tarantool-patches mailing list