Re: [Maria-developers] d221068ae8b: Change CHARSET_INFO character set and collaction names to LEX_CSTRING
Hi, Michael! On Apr 01, Michael Widenius wrote:
revision-id: d221068ae8b (mariadb-10.5.2-540-gd221068ae8b) parent(s): 896c3b0a00a author: Michael Widenius <michael.widenius@gmail.com> committer: Michael Widenius <michael.widenius@gmail.com> timestamp: 2021-03-24 19:13:42 +0200 message:
Change CHARSET_INFO character set and collaction names to LEX_CSTRING
This change removed 68 strlen() calls from the code.
The following renames was to ensure we don't use the old names when merging code from earlier releases, as using the new variables for print function could result in crashes: - charset->csname renamed to charset->cs_name - charset->name renamed to charset->col_name
Two comments: 1. please, use coll_name. in our codebase "cs" conventionally means "charset", "col" is usually used for "column", "coll" - for "collation" 2. You changed the client api, as can be seen from
diff --git a/client/mysql.cc b/client/mysql.cc index e6c7d0f091c..8c64d01539d 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -4719,9 +4719,8 @@ sql_real_connect(char *host,char *database,char *user,char *password, return -1; // Retryable }
- charset_info= get_charset_by_name(mysql.charset->name, MYF(0)); - - + charset_info= get_charset_by_name(IF_EMBEDDED(mysql.charset->col_name.str, + mysql.charset->name), MYF(0)); connected=1; #ifndef EMBEDDED_LIBRARY mysql_options(&mysql, MYSQL_OPT_RECONNECT, &debug_info_flag);
Luckily, C/C is a separate project now, so most clients won't be affected. But anything linking with embedded might be. Regards, Sergei VP of MariaDB Server Engineering and security@mariadb.org
Hi! On Thu, Apr 1, 2021 at 4:19 PM Sergei Golubchik <serg@mariadb.org> wrote:
Hi, Michael!
On Apr 01, Michael Widenius wrote:
revision-id: d221068ae8b (mariadb-10.5.2-540-gd221068ae8b) parent(s): 896c3b0a00a author: Michael Widenius <michael.widenius@gmail.com> committer: Michael Widenius <michael.widenius@gmail.com> timestamp: 2021-03-24 19:13:42 +0200 message:
Change CHARSET_INFO character set and collaction names to LEX_CSTRING
This change removed 68 strlen() calls from the code.
The following renames was to ensure we don't use the old names when merging code from earlier releases, as using the new variables for print function could result in crashes: - charset->csname renamed to charset->cs_name - charset->name renamed to charset->col_name
Two comments:
1. please, use coll_name.
in our codebase "cs" conventionally means "charset", "col" is usually used for "column", "coll" - for "collation"
I can do that, but that will cause changes also in columnstore. Will try to fix...
2. You changed the client api, as can be seen from
diff --git a/client/mysql.cc b/client/mysql.cc index e6c7d0f091c..8c64d01539d 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -4719,9 +4719,8 @@ sql_real_connect(char *host,char *database,char *user,char *password, return -1; // Retryable }
- charset_info= get_charset_by_name(mysql.charset->name, MYF(0)); - - + charset_info= get_charset_by_name(IF_EMBEDDED(mysql.charset->col_name.str, + mysql.charset->name), MYF(0)); connected=1; #ifndef EMBEDDED_LIBRARY mysql_options(&mysql, MYSQL_OPT_RECONNECT, &debug_info_flag);
Luckily, C/C is a separate project now, so most clients won't be affected. But anything linking with embedded might be.
Yes, I know the effect of this. However I did check with you that this is ok to do for 10.6. This only affects clients that access the collation name directly, which one should not really do. Regards, Monty
participants (2)
-
Michael Widenius
-
Sergei Golubchik