From: Nikita Pettik <korablev@tarantool.org> To: Kirill Yukhin <kyukhin@tarantool.org> Cc: tarantool-patches@dev.tarantool.org Subject: Re: [Tarantool-patches] [PATCH] sql: raise an error on attempt to use HASH index in SQL Date: Tue, 16 Jun 2020 23:08:12 +0000 [thread overview] Message-ID: <20200616230812.GA9358@tarantool.org> (raw) In-Reply-To: <3002c51d7ae67c00320046838922aa9edd0b4d90.1592319653.git.kyukhin@tarantool.org> On 16 Jun 18:06, Kirill Yukhin wrote: > Since currently query planner is unable to use HASH indexes > and attempt to use it will likely lead to SEGFAULT, this > patch raises an error on attempt to open VDBE cursor > against HASH index. > > Closes #4659 > --- > > ChangeLog entry: > ## Bugs fixed > ### SQL > * Block using HASH indexes in SQL since scheduler scheduler -> planner. > is unable to use it properly (gh-4659). Not only hash indexes, but any other except for tree indexes. > Issue: https://github.com/tarantool/tarantool/issues/4659 > Branch: https://github.com/tarantool/tarantool/tree/kyukhin/gh-4659-block-hash-index Tests fail on your branch. See https://travis-ci.org/github/tarantool/tarantool/jobs/698493716 > src/box/sql/build.c | 6 +++++ > test/sql-tap/gh-4659-block-hash-index.test.lua | 35 ++++++++++++++++++++++++++ > 2 files changed, 41 insertions(+) > create mode 100755 test/sql-tap/gh-4659-block-hash-index.test.lua > > diff --git a/src/box/sql/build.c b/src/box/sql/build.c > index 0b60d2e..b429a4e 100644 > --- a/src/box/sql/build.c > +++ b/src/box/sql/build.c > @@ -722,6 +722,12 @@ vdbe_emit_open_cursor(struct Parse *parse_context, int cursor, int index_id, > struct space *space) > { > assert(space != NULL); > + if (space->index[index_id]->def->type != TREE) { > + diag_set(ClientError, ER_UNSUPPORTED, "SQL", > + "using of non-TREE index type"); Nit: I guess 'of' is reundant in this sentence. Also I'd include hint in error message like: "... type. Please, use INDEXED BY clause to force using proper index." > diff --git a/test/sql-tap/gh-4659-block-hash-index.test.lua b/test/sql-tap/gh-4659-block-hash-index.test.lua > new file mode 100755 > index 0000000..8c84e2d > --- /dev/null > +++ b/test/sql-tap/gh-4659-block-hash-index.test.lua > @@ -0,0 +1,35 @@ > +#!/usr/bin/env tarantool > +test = require("sqltester") > +test:plan(2) > + > +-- gh-4782 - Raise an error in case space features HASH index. > +-- Make sure that in case of attempt to use HASH index > +-- from within SQL statement - an error is raised. > +-- This is actually a stub until we are unable to employ > +-- HASH index while planning a query. > + > +f = { > + {'1', 'unsigned'}, > + {'2', 'string'}, > +} > + > +s = box.schema.create_space("T1", {format = f}) > +s:create_index('PK', {type = 'hash', parts = {'1'}}) > + > +test:do_catchsql_test( > + "blocked-hash-index-1", > + "SELECT * FROM T1", { > + 1, "SQL does not support using of non-TREE index type" > + }) > + > +s = box.schema.create_space("T2", {format = f}) > +s:create_index('PK', {parts = {'2'}}) > +s:create_index('SK', {type = 'hash', parts = {'1'}}) Add a couple of tests covering other index types. > +test:do_catchsql_test( > + "blocked-hash-index-1", > + "SELECT * FROM T2 INDEXED BY SK", { > + 1, "SQL does not support using of non-TREE index type" > + }) > + > +test:finish_test() > -- > 1.8.3.1 >
next prev parent reply other threads:[~2020-06-16 23:08 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-06-16 15:06 Kirill Yukhin 2020-06-16 23:08 ` Nikita Pettik [this message] 2020-06-17 14:45 ` Kirill Yukhin 2020-06-18 18:49 ` Nikita Pettik 2020-06-19 8:36 ` 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=20200616230812.GA9358@tarantool.org \ --to=korablev@tarantool.org \ --cc=kyukhin@tarantool.org \ --cc=tarantool-patches@dev.tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH] sql: raise an error on attempt to use HASH index in SQL' \ /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