Tarantool development patches archive
 help / color / mirror / Atom feed
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
> 

  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