MySQL Connector/C++ Release Notes

2.18 Changes in MySQL Connector/C++ 8.0.20 (2020-04-27, General Availability)

Connection Management Notes

  • For connections made using X Plugin, Connector/C++ now provides control over the use of compression to minimize the number of bytes sent over connections to the server. Connection URIs and SessionSettings objects permit explicitly specifying a compression option:

    • URI strings permit a compression option with permitted values of DISABLED, PREFERRED, and REQUIRED (not case-sensitive). Examples:

      mysqlx://user:password@host:port/db?compression=DISABLED
      mysqlx://user:password@host:port/db?compression=PREFERRED
      mysqlx://user:password@host:port/db?compression=REQUIRED
      
    • SessionSettings objects permit a SessionOption::COMPRESSION option with permitted values of CompressionMode::DISABLED, CompressionMode::PREFERRED, and CompressionMode::REQUIRED. Example:

      mysqlx::Session sess(SessionOption::USER, "user_name",
                           SessionOption::PWD, "password",
                           SessionOption::COMPRESSION, CompressionMode::PREFERRED);
      

    These rules apply:

    • If compression is disabled, the connection is uncompressed.

    • If compression is preferred, Connector/C++ and the server negotiate to find a compression algorithm they both permit. If no common algorithm is available, the connection is uncompressed. This is the default mode if not specified explicitly.

    • If compression is required, compression algorithm negotiation occurs as for preferred mode, but if no common algorithm is available, the connection request terminates with an error.

    To avoid CPU inefficiency, data packets are not compressed even when compression is enabled unless they exceed a threshold size (currently 1000 bytes; this is subject to change).

    See also Connection Compression with X Plugin. (WL #12150)

Packaging Notes

  • Previously, Connector/C++ binary distributions were compatible with projects built using MSVC 2019 (using either dynamic or static connector libraries) or MSVC 2017 (using dynamic connector libraries only). Binary distributions now are also compatible with MSVC 2017 using the static X DevAPI connector library. This means that binary distributions are fully compatible with MSVC 2019, and fully compatible with MSVC 2017 with the exception of the static legacy (JDBC) connector library. (WL #13729)

Bugs Fixed

  • For connections made using X Plugin, the last byte was removed from DATETIME values fetched as raw bytes. (Bug #30838230)

  • In X DevAPI expressions, Connector/C++ treated the JSON ->> operator the same as ->, rather than applying an additional JSON_UNQUOTE() operation. (Bug #29870832)

  • Comparison of JSON values from query results failed due to an extra \0 character erroneously being added to the end of such values. (Bug #29847865)

  • For connections made using X Plugin, warnings sent following result sets were not captured, and were thus unavailable to getWarnings(). (Bug #28047970)