From: "N.Tatunov" <hollow653@gmail.com> To: tarantool-patches@freelists.org Cc: korablev@tarantool.org, Hollow <hollow653@gmail.com> Subject: [tarantool-patches] [PATCH] sql: correct confusing message Date: Tue, 27 Mar 2018 19:02:08 +0300 [thread overview] Message-ID: <1522166528-23387-1-git-send-email-hollow653@gmail.com> (raw) From: Hollow <hollow653@gmail.com> Required to fix the following message: "- error: expressions prohibited in PRIMARY KEY and UNIQUE constraints" Currently this message appears even when user tries to CREATE non-unique functional index which isn't concerned with the following error message. Thus far the message was corrected to the proper one. Closes #3236 --- Branch: https://github.com/tarantool/tarantool Issue: https://github.com/tarantool/tarantool/issues/3236 src/box/sql/build.c | 8 +++---- test/sql-tap/colname.test.lua | 4 ++-- test/sql/message-func-indexes.result | 41 ++++++++++++++++++++++++++++++++++ test/sql/message-func-indexes.test.lua | 18 +++++++++++++++ 4 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 test/sql/message-func-indexes.result create mode 100644 test/sql/message-func-indexes.test.lua diff --git a/src/box/sql/build.c b/src/box/sql/build.c index dd0f45c..c7f6b3c 100644 --- a/src/box/sql/build.c +++ b/src/box/sql/build.c @@ -1802,7 +1802,7 @@ emitNewSysSpaceSequenceRecord(Parse *pParse, int space_id, const char reg_seq_id /* 1. Space id */ sqlite3VdbeAddOp2(v, OP_SCopy, space_id, first_col + 1); - + /* 2. Sequence id */ sqlite3VdbeAddOp2(v, OP_IntCopy, reg_seq_id, first_col + 2); @@ -2015,7 +2015,7 @@ sqlite3EndTable(Parse * pParse, /* Parse context */ sqlite3OpenTable(pParse, iCursor, sys_space_sequence, OP_OpenWrite); - + reg_space_seq_record = emitNewSysSpaceSequenceRecord( pParse, iSpaceId, @@ -3065,8 +3065,8 @@ sqlite3CreateIndex(Parse * pParse, /* All information about this parse */ pCExpr = sqlite3ExprSkipCollate(pListItem->pExpr); if (pCExpr->op != TK_COLUMN) { sqlite3ErrorMsg(pParse, - "expressions prohibited in PRIMARY KEY and " - "UNIQUE constraints"); + "functional indexes aren't supported " + "in the current version"); goto exit_create_index; } else { j = pCExpr->iColumn; diff --git a/test/sql-tap/colname.test.lua b/test/sql-tap/colname.test.lua index 71010da..c96623e 100755 --- a/test/sql-tap/colname.test.lua +++ b/test/sql-tap/colname.test.lua @@ -643,13 +643,13 @@ test:do_catchsql_test( "colname-11.2", [[CREATE TABLE t1(a, b, c, d, e, PRIMARY KEY(a), UNIQUE('b' COLLATE "unicode_ci" DESC));]], - {1, "/expressions prohibited in PRIMARY KEY/"}) + {1, "/functional indexes aren't supported in the current version/"}) test:execsql("create table table1(a primary key, b, c)") test:do_catchsql_test( "colname-11.3", [[ CREATE INDEX t1c ON table1('c'); ]], - {1, "/expressions prohibited in PRIMARY KEY/"}) + {1, "/functional indexes aren't supported in the current version/"}) test:finish_test() diff --git a/test/sql/message-func-indexes.result b/test/sql/message-func-indexes.result new file mode 100644 index 0000000..797cf28 --- /dev/null +++ b/test/sql/message-func-indexes.result @@ -0,0 +1,41 @@ +test_run = require('test_run').new() +--- +... +-- Creating tables. +box.sql.execute("CREATE TABLE t1(id INTEGER PRIMARY KEY, a INTEGER)") +--- +... +box.sql.execute("CREATE TABLE t2(object INTEGER PRIMARY KEY, price INTEGER, count INTEGER)") +--- +... +-- Expressions that're supposed to create functional indexes +-- should return certain message. +box.sql.execute("CREATE INDEX i1 ON t1(a+1)") +--- +- error: functional indexes aren't supported in the current version +... +box.sql.execute("CREATE INDEX i2 ON t1(a)") +--- +... +box.sql.execute("CREATE INDEX i3 ON t2(price + 100)") +--- +- error: functional indexes aren't supported in the current version +... +box.sql.execute("CREATE INDEX i4 ON t2(price)") +--- +... +box.sql.execute("CREATE INDEX i5 ON t2(count + 1)") +--- +- error: functional indexes aren't supported in the current version +... +box.sql.execute("CREATE INDEX i6 ON t2(count * price)") +--- +- error: functional indexes aren't supported in the current version +... +-- Cleaning up. +box.sql.execute("DROP TABLE t1") +--- +... +box.sql.execute("DROP TABLE t2") +--- +... diff --git a/test/sql/message-func-indexes.test.lua b/test/sql/message-func-indexes.test.lua new file mode 100644 index 0000000..fac715b --- /dev/null +++ b/test/sql/message-func-indexes.test.lua @@ -0,0 +1,18 @@ +test_run = require('test_run').new() + +-- Creating tables. +box.sql.execute("CREATE TABLE t1(id INTEGER PRIMARY KEY, a INTEGER)") +box.sql.execute("CREATE TABLE t2(object INTEGER PRIMARY KEY, price INTEGER, count INTEGER)") + +-- Expressions that're supposed to create functional indexes +-- should return certain message. +box.sql.execute("CREATE INDEX i1 ON t1(a+1)") +box.sql.execute("CREATE INDEX i2 ON t1(a)") +box.sql.execute("CREATE INDEX i3 ON t2(price + 100)") +box.sql.execute("CREATE INDEX i4 ON t2(price)") +box.sql.execute("CREATE INDEX i5 ON t2(count + 1)") +box.sql.execute("CREATE INDEX i6 ON t2(count * price)") + +-- Cleaning up. +box.sql.execute("DROP TABLE t1") +box.sql.execute("DROP TABLE t2") -- 2.7.4
next reply other threads:[~2018-03-27 16:02 UTC|newest] Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-03-27 16:02 N.Tatunov [this message] 2018-03-27 16:36 ` [tarantool-patches] " n.pettik -- strict thread matches above, loose matches on Subject: below -- 2018-03-27 11:49 [tarantool-patches] " Hollow
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=1522166528-23387-1-git-send-email-hollow653@gmail.com \ --to=hollow653@gmail.com \ --cc=korablev@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='Re: [tarantool-patches] [PATCH] sql: correct confusing message' \ /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