[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