From: Nikita Pettik <korablev@tarantool.org> To: tarantool-patches@freelists.org Cc: v.shpilevoy@tarantool.org, Nikita Pettik <korablev@tarantool.org> Subject: [tarantool-patches] [PATCH 1/3] sql: do not add explicit <COLLATE "BINARY"> clause Date: Thu, 25 Oct 2018 14:00:07 +0300 [thread overview] Message-ID: <9065ac43f61e7e211d4b248b68e17a64e8caa4f4.1540460716.git.korablev@tarantool.org> (raw) In-Reply-To: <cover.1540460716.git.korablev@tarantool.org> In-Reply-To: <cover.1540460716.git.korablev@tarantool.org> We don't need to add explicit COLLATE "BINARY" clause since binary collation is anyway default. On the other hand, it may confuse due to ambiugty when comparing two terms. Needed for #3185 --- src/box/sql/fkey.c | 2 -- src/box/sql/select.c | 4 ---- src/box/sql/whereexpr.c | 25 ++++++++++++------------- 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/src/box/sql/fkey.c b/src/box/sql/fkey.c index b2d2a19e7..ee1de8e18 100644 --- a/src/box/sql/fkey.c +++ b/src/box/sql/fkey.c @@ -313,8 +313,6 @@ exprTableRegister(Parse * pParse, /* Parsing and code generating context */ pExpr->iTable = regBase + iCol + 1; char affinity = pTab->def->fields[iCol].affinity; pExpr->affinity = affinity; - pExpr = sqlite3ExprAddCollateString(pParse, pExpr, - "binary"); } else { pExpr->iTable = regBase; pExpr->affinity = AFFINITY_INTEGER; diff --git a/src/box/sql/select.c b/src/box/sql/select.c index 02c0a5d26..1ec92aac7 100644 --- a/src/box/sql/select.c +++ b/src/box/sql/select.c @@ -2311,10 +2311,6 @@ sql_multiselect_orderby_to_key_info(struct Parse *parse, struct Select *s, order_by->a[i].pExpr = sqlite3ExprAddCollateString(parse, term, name); - } else { - order_by->a[i].pExpr = - sqlite3ExprAddCollateString(parse, term, - "BINARY"); } } part->coll_id = id; diff --git a/src/box/sql/whereexpr.c b/src/box/sql/whereexpr.c index 612868695..9fa6ce15d 100644 --- a/src/box/sql/whereexpr.c +++ b/src/box/sql/whereexpr.c @@ -1133,7 +1133,6 @@ exprAnalyze(SrcList * pSrc, /* the FROM clause */ Expr *pNewExpr2; int idxNew1; int idxNew2; - const char *zCollSeqName; /* Name of collating sequence */ const u16 wtFlags = TERM_LIKEOPT | TERM_VIRTUAL | TERM_DYNAMIC; pLeft = pExpr->x.pList->a[1].pExpr; @@ -1171,24 +1170,24 @@ exprAnalyze(SrcList * pSrc, /* the FROM clause */ } *pC = c + 1; } - /* Support only for unicode_ci indexes by now */ - zCollSeqName = noCase ? "unicode_ci" : "BINARY"; pNewExpr1 = sqlite3ExprDup(db, pLeft, 0); - pNewExpr1 = sqlite3PExpr(pParse, TK_GE, - sqlite3ExprAddCollateString(pParse, - pNewExpr1, - zCollSeqName), - pStr1); + if (noCase) { + pNewExpr1 = + sqlite3ExprAddCollateString(pParse, pNewExpr1, + "unicode_ci"); + } + pNewExpr1 = sqlite3PExpr(pParse, TK_GE, pNewExpr1, pStr1); transferJoinMarkings(pNewExpr1, pExpr); idxNew1 = whereClauseInsert(pWC, pNewExpr1, wtFlags); testcase(idxNew1 == 0); exprAnalyze(pSrc, pWC, idxNew1); pNewExpr2 = sqlite3ExprDup(db, pLeft, 0); - pNewExpr2 = sqlite3PExpr(pParse, TK_LT, - sqlite3ExprAddCollateString(pParse, - pNewExpr2, - zCollSeqName), - pStr2); + if (noCase) { + pNewExpr2 = + sqlite3ExprAddCollateString(pParse, pNewExpr2, + "unicode_ci"); + } + pNewExpr2 = sqlite3PExpr(pParse, TK_LT, pNewExpr2, pStr2); transferJoinMarkings(pNewExpr2, pExpr); idxNew2 = whereClauseInsert(pWC, pNewExpr2, wtFlags); testcase(idxNew2 == 0); -- 2.15.1
next prev parent reply other threads:[~2018-10-25 11:00 UTC|newest] Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-10-25 11:00 [tarantool-patches] [PATCH 0/3] Change collation compatibility rules according to ANSI SQL Nikita Pettik 2018-10-25 11:00 ` Nikita Pettik [this message] 2018-10-25 11:00 ` [tarantool-patches] [PATCH 2/3] Add surrogate ID for BINARY collation Nikita Pettik 2018-10-31 12:34 ` [tarantool-patches] " Vladislav Shpilevoy 2018-10-31 15:47 ` n.pettik 2018-11-01 11:37 ` Konstantin Osipov 2018-11-01 12:22 ` Vladislav Shpilevoy 2018-11-01 12:58 ` Konstantin Osipov 2018-11-01 13:08 ` n.pettik 2018-11-01 15:39 ` Konstantin Osipov [not found] ` <95CB17D5-E3ED-4B05-A289-983E2FD0DE37@gmail.com> 2018-11-01 17:45 ` n.pettik 2018-11-01 20:00 ` Konstantin Osipov 2018-11-01 20:06 ` Konstantin Osipov 2018-11-01 20:20 ` n.pettik 2018-10-25 11:00 ` [tarantool-patches] [PATCH 3/3] sql: change collation compatibility rules Nikita Pettik 2018-10-31 12:34 ` [tarantool-patches] " Vladislav Shpilevoy 2018-11-12 23:46 ` n.pettik
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=9065ac43f61e7e211d4b248b68e17a64e8caa4f4.1540460716.git.korablev@tarantool.org \ --to=korablev@tarantool.org \ --cc=tarantool-patches@freelists.org \ --cc=v.shpilevoy@tarantool.org \ --subject='Re: [tarantool-patches] [PATCH 1/3] sql: do not add explicit <COLLATE "BINARY"> clause' \ /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