From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTP id 17E6026CD8 for ; Thu, 19 Jul 2018 22:39:57 -0400 (EDT) Received: from turing.freelists.org ([127.0.0.1]) by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id JmnXECS2JahX for ; Thu, 19 Jul 2018 22:39:57 -0400 (EDT) Received: from smtp59.i.mail.ru (smtp59.i.mail.ru [217.69.128.39]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id CA09E26C4F for ; Thu, 19 Jul 2018 22:39:56 -0400 (EDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) Subject: [tarantool-patches] Re: [PATCH v1 1/3] sql: restrict nullable action definitions From: "n.pettik" In-Reply-To: <972c8144-0f4c-c882-3ab9-4a50cbaf43c6@tarantool.org> Date: Fri, 20 Jul 2018 05:39:48 +0300 Content-Transfer-Encoding: quoted-printable Message-Id: <185A42F6-2824-47BE-A521-147C8D22F944@tarantool.org> References: <33314a00ce2e0602e0a0fa7e30257ff03e3eed16.1531932662.git.kshcherbatov@tarantool.org> <51802451-C9AA-4EB8-8926-D08446738FF1@tarantool.org> <972c8144-0f4c-c882-3ab9-4a50cbaf43c6@tarantool.org> Sender: tarantool-patches-bounce@freelists.org Errors-to: tarantool-patches-bounce@freelists.org Reply-To: tarantool-patches@freelists.org List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: tarantool-patches List-subscribe: List-owner: List-post: List-archive: To: tarantool-patches@freelists.org Cc: Kirill Shcherbatov >> Why do you need on_conflict_action_MAX when you already have = ON_CONFLICT_ACTION_DEFAULT? >> Anyway, there is no action DEFAULT, it is sooner or later converted = to ABORT. > This is the central idea of the patch. on_conflict_action_MAX is a = marker that this field wasn't > initialized yet manually. This allows to detect second attempt to = specify NULL/NOT NULL etc. > There is a comment about this concept in sqlite3AddColumn where = on_conflict_action_MAX is set. > The default behavior is ON_CONFLICT_ACTION_NONE and we have to = distinguish non-initialized > columns and initialized with ON_CONFLICT_ACTION_DEFAULT. Well, it seems to be total mess. DEFAULT (for nullable on conflict = action) is always converted into ABORT. If you move this conversation right = after parser=E2=80=99s pass, you can get rid off using additional enum value: create table t1(a NULL PRIMARY KEY NOT NULL , b); a =3D=3D DEFAULT =E2=80=94> NONE =E2=80=94> ABORT b =3D=3D DEFAULT =E2=80=94> NONE >> Could we avoid using iPKey in this function? We are going to remove = it soon. > I don't increase a complexity here and believe that is patch is not = about to suggest a way to exclude iPkey. > No idea. Nevermind, Kirill already reworked this function in order to avoid using = iPKey.