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