Tarantool development patches archive
 help / color / mirror / Atom feed
From: Alexander Turenko <alexander.turenko@tarantool.org>
To: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
Cc: tarantool-patches@freelists.org
Subject: [tarantool-patches] Re: [PATCH] net.box: fix 'unique' index flag in net.box schema
Date: Mon, 1 Apr 2019 13:08:55 +0300	[thread overview]
Message-ID: <20190401100855.3sioaqaennantyo3@tkn_work_nb> (raw)
In-Reply-To: <9ae2ce53-0956-effd-e0a1-6fcd93559167@tarantool.org>

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@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()

  reply	other threads:[~2019-04-01 10:09 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-01  5:08 [tarantool-patches] " Alexander Turenko
2019-04-01  8:42 ` [tarantool-patches] " Vladislav Shpilevoy
2019-04-01 10:08   ` Alexander Turenko [this message]
2019-04-01 15:32     ` Vladislav Shpilevoy
2019-04-01 16:15       ` Alexander Turenko
2019-04-01 17:51         ` Vladislav Shpilevoy
2019-04-12 16:22 ` Kirill Yukhin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190401100855.3sioaqaennantyo3@tkn_work_nb \
    --to=alexander.turenko@tarantool.org \
    --cc=tarantool-patches@freelists.org \
    --cc=v.shpilevoy@tarantool.org \
    --subject='[tarantool-patches] Re: [PATCH] net.box: fix '\''unique'\'' index flag in net.box schema' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox