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 v2 1/3] sql: do not add explicit <COLLATE "BINARY"> clause
Date: Tue, 13 Nov 2018 03:07:24 +0300 [thread overview]
Message-ID: <9582cd3146ee8717fd249bca78b8132641ff4bb1.1542066357.git.korablev@tarantool.org> (raw)
In-Reply-To: <cover.1542066357.git.korablev@tarantool.org>
In-Reply-To: <cover.1542066357.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 fc39c879e..4e3270f0c 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 16b1044d6..dfa6ed8e0 100644
--- a/src/box/sql/select.c
+++ b/src/box/sql/select.c
@@ -2238,10 +2238,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-11-13 0:07 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-13 0:07 [tarantool-patches] [PATCH v2 0/3] Change collation compatibility rules according to ANSI SQL Nikita Pettik
2018-11-13 0:07 ` Nikita Pettik [this message]
2018-11-13 0:07 ` [tarantool-patches] [PATCH v2 2/3] Introduce "none" and "binary" collations Nikita Pettik
2018-11-13 12:02 ` [tarantool-patches] " Vladislav Shpilevoy
2018-11-13 22:37 ` n.pettik
2018-11-14 11:52 ` Vladislav Shpilevoy
2018-11-14 20:59 ` n.pettik
2018-11-15 11:04 ` Vladislav Shpilevoy
2018-11-13 0:07 ` [tarantool-patches] [PATCH v2 3/3] sql: change collation compatibility rules Nikita Pettik
2018-11-13 12:02 ` [tarantool-patches] " Vladislav Shpilevoy
2018-11-13 22:37 ` n.pettik
2018-11-15 11:24 ` [tarantool-patches] Re: [PATCH v2 0/3] Change collation compatibility rules according to ANSI SQL 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=9582cd3146ee8717fd249bca78b8132641ff4bb1.1542066357.git.korablev@tarantool.org \
--to=korablev@tarantool.org \
--cc=tarantool-patches@freelists.org \
--cc=v.shpilevoy@tarantool.org \
--subject='Re: [tarantool-patches] [PATCH v2 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