by servers participating in source/replica replication or Group Replication. For more information, see Section 4.2.8, “Connection Compression Control” . 

• Configuration.  The maximum permitted length of host names throughout MySQL has been raised to 255 ASCII characters, up from the previous limit of 60 characters. This applies to, for example, host name-related columns in the data dictionary, mysql  system schema, Performance Schema, INFORMATION_SCHEMA , and sys  schema; the MASTER_HOST  value for the CHANGE MASTER TO statement; the Host  column in SHOW PROCESSLIST  statement output; host names in account names (such as used in account-management statements and in DEFINER  attributes); and host name-related command options and system variables. 

Caveats: 

•The increase in permitted host name length can affect tables with indexes on host name columns. For example, tables in the mysql  system schema that index host names now have an explicit ROW_FORMAT  attribute of DYNAMIC  to accommodate longer index values. 

•Some file name-valued configuration settings might be constructed based on the server host name. The permitted values are constrained by the underlying operating system, which may not permit file names long enough to include 255-character host names. This affects the general_log_file , log_error , pid_file , relay_log , and slow_query_log_file  system variables and corresponding options. If host name-based values are too long for the OS, explicit shorter values must be provided. 

•Although the server now supports 255-character host names, connections to the server established using the --ssl-mode=VERIFY_IDENTITY  option are constrained by maximum host name length supported by OpenSSL. Host name matches pertain to two fields of SSL certificates, which have maximum lengths as follows: Common Name: maximum length 64; Subject Alternative Name: maximum length as per RFC#1034. 

• Plugins.  Previously, MySQL plugins could be written in C or C++. MySQL header files used by plugins now contain C++ code, which means that plugins must be written in C++, not C. 

• C API.  The MySQL C API now supports asynchronous functions for nonblocking communication with the MySQL server. Each function is the asynchronous counterpart to an existing synchronous function. The synchronous functions block if reads from or writes to the server connection must wait. The asynchronous functions enable an application to check whether work on the server connection is ready to proceed. If not, the application can perform other work before checking again later. See C API Asynchronous Interface. 

• Additional target types for casts.  The functions CAST()  and CONVERT()  now support conversions to types DOUBLE , FLOAT , and REAL . Added in MySQL 8.0.17. See Section 12.11, “Cast Functions and Operators” . 

• JSON schema validation.  MySQL 8.0.17 adds two functions JSON_SCHEMA_VALID()  and JSON_SCHEMA_VALIDATION_REPORT()  for validating JSON documents again JSON schemas. JSON_SCHEMA_VALID()  returns TRUE (1) if the document validates against the schema and FALSE (0) if it does not. JSON_SCHEMA_VALIDATION_REPORT()  returns a JSON document containing detailed information about the results of the validation. The following statements apply to both of these functions: 

•The schema must conform to Draft 4 of the JSON Schema specification. 

• required  attributes are supported. 

•External resources and the $ref  keyword are not supported. 

