Tarantool development patches archive
 help / color / mirror / Atom feed
From: "n.pettik" <korablev@tarantool.org>
To: tarantool-patches@freelists.org
Cc: Roman Khabibov <roman.habibov@tarantool.org>
Subject: [tarantool-patches] Re: [PATCH] sql: add check for <WITH> absence in <CREATE VIEW>
Date: Fri, 9 Aug 2019 18:15:17 +0300	[thread overview]
Message-ID: <DAA03B36-2520-4E40-AF7A-47ECAAB6FB7B@tarantool.org> (raw)
In-Reply-To: <20190802125252.54621-1-roman.habibov@tarantool.org>



> On 2 Aug 2019, at 15:52, Roman Khabibov <roman.habibov@tarantool.org> wrote:
> 
> Check that <CREATE VIEW> hasn't <WITH> after <AS>: "CREATE VIEW v
> AS WITH ... SELECT ...". Throw error, if it has.

What is the reason for that? I run example from ticket:

tarantool> \set language sql
tarantool> \set delimiter ;

tarantool> CREATE TABLE ts (s1 INT PRIMARY KEY);
tarantool> INSERT INTO ts VALUES (1);
tarantool> WITH RECURSIVE w AS (
         >             SELECT s1 FROM ts
         >             UNION ALL
         >             SELECT s1+1 FROM w WHERE s1 < 4)
         >           SELECT * FROM w;
tarantool> CREATE VIEW v AS WITH RECURSIVE w AS (
         >             SELECT s1 FROM ts
         >             UNION ALL
         >             SELECT s1+1 FROM w WHERE s1 < 4)
         >           SELECT * FROM w;
- null
- Space 'W' does not exist
...

So, it fails at the stage of view creation. Please, ask Peter
to provide valid example. Otherwise there’s no problem and
issue can be closed.

> 
> Closes #4149
> ---
> Branch: https://github.com/tarantool/tarantool/tree/romanhabibov/gh-4149-view
> Issue: https://github.com/tarantool/tarantool/issues/4149
> 
> src/box/sql/build.c        |  7 +++++++
> test/sql-tap/view.test.lua | 37 ++++++++++++++++++++++++++++++++++++-
> 2 files changed, 43 insertions(+), 1 deletion(-)
> 
> diff --git a/src/box/sql/build.c b/src/box/sql/build.c
> index ccec10543..e34202c9a 100644
> --- a/src/box/sql/build.c
> +++ b/src/box/sql/build.c
> @@ -1320,6 +1320,13 @@ sql_create_view(struct Parse *parse_context)
> 					    &create_entity_def->name);
> 	if (space == NULL || parse_context->is_aborted)
> 		goto create_view_fail;
> +	assert(view_def->select != NULL);
> +	if (view_def->select->pWith != NULL) {
> +		diag_set(ClientError, ER_CREATE_SPACE, space->def->name,
> +			 "can't create view as <WITH>");
> +			parse_context->is_aborted = true;
> +		goto create_view_fail;
> +	}

This looks like a crutch. Please, either find out if it is
possible to fix this at parser level (changing grammar),
or simply close issue.

  reply	other threads:[~2019-08-09 15:15 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-02 12:52 [tarantool-patches] " Roman Khabibov
2019-08-09 15:15 ` n.pettik [this message]
2019-08-13 12:42   ` [tarantool-patches] " Roman Khabibov
2019-08-13 22:10     ` n.pettik
2019-08-16 19:09       ` Roman Khabibov
2019-08-19 15:39         ` Roman Khabibov
2019-08-20 19:41         ` n.pettik
2019-08-28 12:17           ` Roman Khabibov
2019-08-29 17:59             ` Nikita Pettik
2019-09-04 14:14               ` Roman Khabibov
2019-09-11 13:32                 ` Nikita Pettik
2019-09-13 14:57                   ` Roman Khabibov

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=DAA03B36-2520-4E40-AF7A-47ECAAB6FB7B@tarantool.org \
    --to=korablev@tarantool.org \
    --cc=roman.habibov@tarantool.org \
    --cc=tarantool-patches@freelists.org \
    --subject='[tarantool-patches] Re: [PATCH] sql: add check for <WITH> absence in <CREATE VIEW>' \
    /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