From: "n.pettik" <korablev@tarantool.org> To: tarantool-patches@freelists.org Cc: Ivan Koptelov <ivan.koptelov@tarantool.org> Subject: [tarantool-patches] Re: [PATCH] sql: Fixes op-codes' generation for skip-scan Date: Fri, 27 Apr 2018 14:01:01 +0300 [thread overview] Message-ID: <A2F7D746-8C03-42E1-A2D6-708D23B23F76@tarantool.org> (raw) In-Reply-To: <20180427100613.94160-1-ivan.koptelov@tarantool.org> Hello. Do not start commit subject with capital letter after ‘:’. Also, I don’t see your branch at remote repository: you should push it before sending patch (in order to check Travis status, at least). Generally speaking, patch seems to be OK, but consider several minor comments concerning formalisation. > Currently we have skip-scan optimization working > the way described here: > (https://sqlite.org/optoverview.html#skipscan) > > To understand the problem solved consider the example > with some skip-scan query and a table created like > CREATE TABLE t(a, b, c, PRIMARY KEY(c, b, a)); > > Before the patch: op-codes realization of skip-scan > relied on the following work of 'Column' op-code: > If P1 is a number of cursor pointing to the table > then P2 is number of column in 'native' order > (0 for a, 1 for b, etc) > If P1 is a number of cursor pointing to the index > then P2 in number of column in 'index' order > (0 for c, 1 for b, etc) > But currently our 'Column' op-code always consider > P2 to be column number in 'native order’. The limit for commit message is 72 chars… Just reminding you. > > With the patch: > P2 is always set in 'Column' as a column number > in 'native' order. > > Closes #3350; Closes #2859 Just enumerate with comma: Closes #xxxx, #xxxx > — Put here link to the branch and link to the issue. > src/box/sql/wherecode.c | 2 +- > test/sql-tap/skip-scan.test.lua | 102 ++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 103 insertions(+), 1 deletion(-) > create mode 100755 test/sql-tap/skip-scan.test.lua > > diff --git a/src/box/sql/wherecode.c b/src/box/sql/wherecode.c > index 6aec4ae79..a2620386c 100644 > --- a/src/box/sql/wherecode.c > +++ b/src/box/sql/wherecode.c > @@ -721,7 +721,7 @@ codeAllEqualityTerms(Parse * pParse, /* Parsing context */ > VdbeCoverageIf(v, bRev != 0); > sqlite3VdbeJumpHere(v, j); > for (j = 0; j < nSkip; j++) { > - sqlite3VdbeAddOp3(v, OP_Column, iIdxCur, j, > + sqlite3VdbeAddOp3(v, OP_Column, iIdxCur, pIdx->aiColumn[j], Make sure that code fits into 80 chars. Now I can’t check it, since you haven’t pushed your branch. > regBase + j); > testcase(pIdx->aiColumn[j] == XN_EXPR); > VdbeComment((v, "%s", explainIndexColumnName(pIdx, j))); > diff --git a/test/sql-tap/skip-scan.test.lua b/test/sql-tap/skip-scan.test.lua > new file mode 100755 > index 000000000..0c6edbf34 > --- /dev/null > +++ b/test/sql-tap/skip-scan.test.lua I would add to the name of test number of issue: gh-xxxx-skip-scan.test.lua Or, if it covers several issues, put comments before test cases indicating number of issue it belongs to. > +test:do_execsql_test( > + "skip-scan-1.4", > + [[ > + DROP TABLE IF EXISTS t1; > + CREATE TABLE t1(id INTEGER PRIMARY KEY, a TEXT, b INT, c INT, d INT); > + CREATE INDEX t1abc ON t1(a,b,c); > + DROP TABLE IF EXISTS t2; > + CREATE TABLE t2(id PRIMARY KEY); > + INSERT INTO t2 VALUES(1); > + INSERT INTO t1 VALUES(1, 'abc',123,4,5); > + INSERT INTO t1 VALUES(2, 'abc',234,5,6); > + INSERT INTO t1 VALUES(3, 'abc',234,6,7); > + INSERT INTO t1 VALUES(4, 'abc',345,7,8); > + INSERT INTO t1 VALUES(5, 'def',567,8,9); > + INSERT INTO t1 VALUES(6, 'def',345,9,10); > + INSERT INTO t1 VALUES(7, 'bcd',100,6,11); > + ANALYZE; > + DELETE FROM "_sql_stat1"; > + DELETE FROM "_sql_stat4"; > + INSERT INTO "_sql_stat1" VALUES('t1','t1abc','10000 5000 2000 10'); > + ANALYZE t2; > + SELECT a,b,c,d FROM t1 WHERE b=345; > + ]], > + {"abc",345,7,8,"def",345,9,10} Consider formatting of curly braces.
next prev parent reply other threads:[~2018-04-27 11:01 UTC|newest] Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-04-27 10:06 [tarantool-patches] " Ivan Koptelov 2018-04-27 11:01 ` n.pettik [this message] 2018-05-04 8:10 ` [tarantool-patches] [tarantool-patches] " Ivan Koptelov 2018-05-04 9:50 ` n.pettik 2018-05-07 10:42 ` Ivan Koptelov 2018-05-08 16:59 ` n.pettik 2018-05-11 5:28 ` 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=A2F7D746-8C03-42E1-A2D6-708D23B23F76@tarantool.org \ --to=korablev@tarantool.org \ --cc=ivan.koptelov@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='[tarantool-patches] Re: [PATCH] sql: Fixes op-codes'\'' generation for skip-scan' \ /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