From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
To: Konstantin Osipov <kostja.osipov@gmail.com>,
Kirill Yukhin <kyukhin@tarantool.org>,
Chris Sosnin <k.sosnin@tarantool.org>,
tarantool-patches@dev.tarantool.org
Subject: Re: [Tarantool-patches] [PATCH] box: remove unicode_ci for functions
Date: Tue, 10 Dec 2019 00:09:41 +0100 [thread overview]
Message-ID: <cc7f1523-eb71-5312-695d-6fc82b343f65@tarantool.org> (raw)
In-Reply-To: <20191209133955.GA8196@atlas>
Hi! Thanks for the discussion!
On 09/12/2019 14:39, Konstantin Osipov wrote:
> * Kirill Yukhin <kyukhin@tarantool.org> [19/12/09 16:28]:
>>> Who is "we"?
>>
>> We are team of Tarantool developers working for MailRU Group.
>
> Actually this decision was made without any discussions - it was
> quickly hacked in back in 2018. Maybe you and Nikita had some
> discussion prompted by Peter's firm stance that we should
> uppercase, but that was it. I protested several times while I
> was still on board but had not anticipated how bad the solution
> would turn out to be when it is implemented to follow through on
> time. Now it is still not to late - bit it's getting more late
> every day.
>
> What we learned since then is that every single newbie trips over
> it.
>
>
Well, you was exactly the person who voted for uppercase of
everything. Peter was for it too, but you made the decision,
and you at that time had a right to forbid it.
Now talking of the 'Newbies stumbling into the uppercase'.
Newbies, who use SQL only, will never notice the uppercasing.
Because SQL creates in uppercase and searches by uppercase
by default. It is a matter of how to organize tutorial for
newbies. In a tutorial they should study SQL and Lua box
separately, and then learn about details of how to use them
both. Where they would be explained, that SQL standard
uppercases everything. And they need to use quotes to force
lowercase.
Talking of the case insensitivity. I see several problems
serious enough to forget about this forever:
- Compatibility. As you probably know (and actually you are
the one, from who I learned it) - if an API is public, it
*is* used by someone. You always should assume that. As
well as here you should assume, that for someone the case
matters.
- Standard. This just violates the SQL standard, when you can
find lowercase names without quotes. We fought for the
standard too much to just drop it now because of this.
- Consistency. If you want space names case insensitive, you
should realize, that it involves making case insensitive
index names, user names, trigger, fk, ck names. This also
includes tuple field names, and .... case-insensitive JSON
paths! That is a very scary thing if you think about it.
Consider this example:
t = box.tuple.new({
{
key = 100,
KEY = 200
}
})
t["[1].key"]
What should be returned? Take into account, that this is
not an impossible example. 'key' and 'KEY' might be a
consequence of necessity to support a legacy system in a
user application, which was changed some time ago, and
they decided to store both cases for compatibility. Your
proposal breaks our backward compatibility, and compatibility
of that system.
- Performance. With your proposal we would need to replace
*all* strcmp/memcmp() not related to indexes to strcasecmp().
The latter is ~x100 slower. That will slowdown everything -
from field name access to lookup in internal hash tables
using names as a key. I don't think it is worth the syntax
sugar. Especially taking into account how hard it becomes to
fit everything into the single tx thread.
next prev parent reply other threads:[~2019-12-09 23:09 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-29 23:39 Chris Sosnin
2019-11-30 20:34 ` Konstantin Osipov
2019-12-01 14:12 ` k.sosnin
2019-12-01 14:36 ` Vladislav Shpilevoy
2019-12-02 7:07 ` Konstantin Osipov
2019-12-02 14:36 ` Nikita Pettik
2019-12-02 14:49 ` Konstantin Osipov
2019-12-06 11:42 ` Kirill Yukhin
2019-12-06 20:17 ` Konstantin Osipov
2019-12-09 11:06 ` Kirill Yukhin
2019-12-09 11:24 ` Konstantin Osipov
2019-12-09 13:25 ` Kirill Yukhin
2019-12-09 13:39 ` Konstantin Osipov
2019-12-09 14:07 ` Nikita Pettik
2019-12-09 23:09 ` Vladislav Shpilevoy [this message]
2019-12-10 8:19 ` Konstantin Osipov
2019-12-10 12:44 ` 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=cc7f1523-eb71-5312-695d-6fc82b343f65@tarantool.org \
--to=v.shpilevoy@tarantool.org \
--cc=k.sosnin@tarantool.org \
--cc=kostja.osipov@gmail.com \
--cc=kyukhin@tarantool.org \
--cc=tarantool-patches@dev.tarantool.org \
--subject='Re: [Tarantool-patches] [PATCH] box: remove unicode_ci for functions' \
/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