From: Nikita Tatunov <hollow653@gmail.com> To: alexander.turenko@tarantool.org Cc: tarantool-patches@freelists.org Subject: [tarantool-patches] Re: [PATCH] sql: assertion fail on nested select Date: Wed, 18 Jul 2018 16:41:58 +0300 [thread overview] Message-ID: <CAEi+_apJnLTqOp+k3U7jEYUuJR1CJgDDZ4mFWMCvB6LQBvfFzg@mail.gmail.com> (raw) In-Reply-To: <CAEi+_aqjev=MJqutrvud4OwO+Qe3EYcQ6FWKtvUS-K894bx1pA@mail.gmail.com> [-- Attachment #1: Type: text/plain, Size: 3046 bytes --] ср, 18 июл. 2018 г. в 15:34, Nikita Tatunov <hollow653@gmail.com>: > Hello, Alexander! Please consider changes to the patch: > > вт, 17 июл. 2018 г. в 16:59, Alexander Turenko < > alexander.turenko@tarantool.org>: > >> Hi Nikita! >> >> Please, consider comments below. >> >> WBR, Alexander Turenko. >> >> On Mon, Jul 02, 2018 at 03:11:40PM +0300, N.Tatunov wrote: >> > To optimize the select-subquery tarantool uses >> > subquery flattening function which is only used >> > with respect to some restrictions. One of them >> > was implemented improperly. >> > >> >> Be certain: 'some restriction' and just 'improperly' are not good >> problem descriptions. >> >> I would use wording like the following. >> >> > When a subquery is a compound select the subquery flattening >> > optimization verify whether the ORDER BY clause presents, but only for >> > the last subquery component. The commit fixes that to verify all >> > subquery components. >> >> > In case of ORDER BY in non-last component of a compound select the >> > error should be raised. Accepting of such subqueries for the >> > flattening optimization prevents the error to be raised afterwards. >> > Instead it stuck into assertion violation inside flattenSubquery (see >> > the issue). >> >> > Fixed: > > To optimize the select-subquery tarantool uses > subquery flattening optimization which is only used > with respect to some restrictions. When any of > subselects but the last one has an ORDER BY > clause we should raise an error. So subquery > components containing it are not accepted > to be optimized. > > Checking part was only checking if the last > subselect contains the clause which led to an > assertion fail. With the patch applied > flattening is not used in case any of > subselects has an ORDER BY. > > >> I checked sqlite3 check-in 8000d230 (it is immediate predecessor of >> c9104b59 where the flattening optimization seems to be changed, but >> tarantool didn't updated with that check-in). It has the assert, but has >> no a change like yours, and correctly shows the following error: >> >> Error: ORDER BY clause should come after UNION ALL not before >> >> Why it is so? >> >> I tried to test that problem on this sqlite3 version with -DSQLITE_DEBUG and assertion fails there. Since flattening only makes another compound select-stmt with ORDER BY clause I guess error was occuring on flattened version of it. Moreover in latter versions of sqlite3 this assert was deleted and the restriction check wasn't fixed. So I assume sqlite3 developers just don't know about it or don't aim on fixing it as the error anyways occurs but on flattened subquery. > +test:do_catchsql_test( >> > + "subquery-9.3", >> > + [[ >> > + SELECT * FROM (SELECT * FROM table1 ORDER BY 1 UNION All >> > + SELECT * FROM table1 UNION All >> > + SELECT * FROM table1); >> >> All -> ALL >> > > Also fixed. > [-- Attachment #2: Type: text/html, Size: 4408 bytes --]
next prev parent reply other threads:[~2018-07-18 13:42 UTC|newest] Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-07-02 12:11 [tarantool-patches] " N.Tatunov 2018-07-17 13:59 ` [tarantool-patches] " Alexander Turenko 2018-07-18 12:34 ` Nikita Tatunov 2018-07-18 13:41 ` Nikita Tatunov [this message] [not found] ` <07E4F387-E976-432B-A80B-E01B40BCF126@corp.mail.ru> 2018-07-18 15:37 ` Nikita Tatunov 2018-07-18 16:51 ` Alexander Turenko 2018-07-18 20:36 ` n.pettik 2018-07-19 12:47 ` Nikita Tatunov 2018-07-19 13:09 ` n.pettik 2018-07-19 15:22 ` Vladislav Shpilevoy 2018-07-20 13:21 ` 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=CAEi+_apJnLTqOp+k3U7jEYUuJR1CJgDDZ4mFWMCvB6LQBvfFzg@mail.gmail.com \ --to=hollow653@gmail.com \ --cc=alexander.turenko@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='[tarantool-patches] Re: [PATCH] sql: assertion fail on nested select' \ /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