From: Kirill Shcherbatov <kshcherbatov@tarantool.org> To: tarantool-patches@freelists.org Cc: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> Subject: [tarantool-patches] Re: [PATCH v1 1/1] sql: fix assertion on invalid PK column name Date: Thu, 12 Jul 2018 13:03:41 +0300 [thread overview] Message-ID: <40d06911-2dbc-69e0-24b3-fb1a70cc33af@tarantool.org> (raw) In-Reply-To: <c067d812-a5bb-ae89-012b-887d21ba5383@tarantool.org> > I know, that removal of assertion always 'fixes' it, but please, > either fix it without removal (and for me it is not obvious why it > should be removed), or explain, why it is invalid. I've included this assertion during refactoring and there is no root causes to keep it, but as we verbally discuss, let's make it working correctly appending additional pCol == NULL OR condition that code below correctly deal with. ======================================== If specified PK column modifier refers nonexistent column, lookup by name keeps NULL column pointer unchanged that should be accounted in assert. Close #3522. --- https://github.com/tarantool/tarantool/compare/kshch/gh-3522-invalid-primary-key-column-name https://github.com/tarantool/tarantool/issues/3522 src/box/sql/build.c | 2 +- test/sql/gh-2929-primary-key.result | 7 +++++++ test/sql/gh-2929-primary-key.test.lua | 5 +++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/box/sql/build.c b/src/box/sql/build.c index e1d896e..5d04e3e 100644 --- a/src/box/sql/build.c +++ b/src/box/sql/build.c @@ -964,7 +964,7 @@ sqlite3AddPrimaryKey(Parse * pParse, /* Parsing context */ } } } - assert(pCol == &pTab->aCol[iCol]); + assert(pCol == NULL || pCol == &pTab->aCol[iCol]); if (nTerm == 1 && pCol != NULL && (pTab->def->fields[iCol].type == FIELD_TYPE_INTEGER) && sortOrder != SORT_ORDER_DESC) { diff --git a/test/sql/gh-2929-primary-key.result b/test/sql/gh-2929-primary-key.result index c238ed7..66a9b96 100644 --- a/test/sql/gh-2929-primary-key.result +++ b/test/sql/gh-2929-primary-key.result @@ -35,3 +35,10 @@ box.sql.execute("CREATE TABLE t5(a, b UNIQUE)") box.sql.execute("DROP TABLE t1") --- ... +-- +-- gh-3522: invalid primary key name +-- +box.sql.execute("CREATE TABLE tx (a INT, PRIMARY KEY (b));") +--- +- error: 'no such column: B' +... diff --git a/test/sql/gh-2929-primary-key.test.lua b/test/sql/gh-2929-primary-key.test.lua index 0a9395c..0e05354 100644 --- a/test/sql/gh-2929-primary-key.test.lua +++ b/test/sql/gh-2929-primary-key.test.lua @@ -16,3 +16,8 @@ box.sql.execute("CREATE TABLE t4(a, b)") box.sql.execute("CREATE TABLE t5(a, b UNIQUE)") box.sql.execute("DROP TABLE t1") + +-- +-- gh-3522: invalid primary key name +-- +box.sql.execute("CREATE TABLE tx (a INT, PRIMARY KEY (b));") -- 2.7.4
next prev parent reply other threads:[~2018-07-12 10:03 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-07-12 6:30 [tarantool-patches] " Kirill Shcherbatov 2018-07-12 8:54 ` [tarantool-patches] " Vladislav Shpilevoy 2018-07-12 10:03 ` Kirill Shcherbatov [this message] 2018-07-12 10:28 ` Vladislav Shpilevoy 2018-07-13 6:54 ` 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=40d06911-2dbc-69e0-24b3-fb1a70cc33af@tarantool.org \ --to=kshcherbatov@tarantool.org \ --cc=tarantool-patches@freelists.org \ --cc=v.shpilevoy@tarantool.org \ --subject='[tarantool-patches] Re: [PATCH v1 1/1] sql: fix assertion on invalid PK column name' \ /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