Bug #90268 log_error_services components should be comma-separated
Submitted: 31 Mar 2018 4:48 Modified: 1 May 2018 16:34
Reporter: Giuseppe Maxia (OCA) Email Updates:
Status: Closed Impact on me:
Category:MySQL Server: Options Severity:S3 (Non-critical)
Version:8.0 OS:Any
Assigned to: CPU Architecture:Any
Tags: usability

[31 Mar 2018 4:48] Giuseppe Maxia
"log_error_services" is the only system variable that requires semicolons instead of commas or colons. 

This makes its usage by external tools unnecessarily more complicated. Usually, semicolon is used to delimit various SQL components. 

The other system variable that require semicolons are "init-connect", because it can list more SQL statements, and "tmpdir" on Windows.

For uniformity and consistency with other system variables, log_error_services components should be comma-separated.

How to repeat:
try setting several components of log_error_services using commas:

mysql [localhost] {msandbox} ((none)) > SET GLOBAL log_error_services = 'log_filter_internal, log_sink_internal, log_sink_json';
ERROR 1231 (42000): Variable 'log_error_services' can't be set to the value of 'log_filter_internal, log_sink_internal, log_sink_json'
mysql [localhost] {msandbox} ((none)) > SET GLOBAL log_error_services = 'log_filter_internal; log_sink_internal; log_sink_json';
Query OK, 0 rows affected (0.00 sec)
[31 Mar 2018 5:15] MySQL Verification Team
Hello Giuseppe,

Thank you for the feedback!
This is documented "A list of semicolon-separated components to enable for error logging." - https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_log_error_serv...
But I fully agree, for uniformity and consistency with other system variables, log_error_services options should be comma-separated.

[5 Apr 2018 3:14] Tatjana Nuernberg
Posted by developer:
';' was used as we're separating a list of (usually loadable) components; this aligns its syntax with that of --plugin-load, which also uses semicoli to delimit loadable components. ',' was also specifically reserved in case a syntax extension of the form

SET @@global.log_error_servies="componentA{setting1=123, setting2='test'}; componentB";

would later become necessary. As the component framework has prospered, that scenario seems mostly covered by per-component variables now, however.
[24 Apr 2018 1:51] Tatjana Nuernberg
Posted by developer:
As per the commit message, we now support both ';' and ',', with ',' being the preferred variant.
[1 May 2018 16:34] Paul DuBois
Posted by developer:
Fixed in 8.0.12.

Previously, log components listed in the log_error_services system
variable had to be separated by semicolons. Components now can be
separated by commas. A given setting cannot use both semicolon and
comma separators.