Connector/C++ now can be compiled using MinGW on Windows. Thanks to Eric Beuque for the contribution. Note that this enables building on MinGW but does not make MinGW an officially supported platform for Connector/C++. (Bug #31636723, Bug #100248)
-
For connections made using X Plugin, Connector/C++ now enables specifying the compression algorithms to be used for connections that use compression. Connection URIs and
SessionSettingsobjects permit explicitly specifying the preferred algorithms:-
URI strings permit a
compression-algorithmsoption. The value is an algorithm name, or a list of one or more comma-separated algorithms specified as an array. Examples:mysqlx://user:password@host:port/db?compression-algorithms=lz4 mysqlx://user:password@host:port/db?compression-algorithms=[lz4,zstd_stream] -
SessionSettingsobjects permit aSessionOption::COMPRESSION_ALGORITHMSoption. The value is a list of one or more comma-separated algorithms. Examples:mysqlx::Session sess(SessionOption::USER, "user_name", SessionOption::PWD, "password", SessionOption::COMPRESSION_ALGORITHMS, "lz4"); mysqlx::Session sess(SessionOption::USER, "user_name", SessionOption::PWD, "password", SessionOption::COMPRESSION_ALGORITHMS, "lz4,zstd_stream");Alternatively, the algorithms value can be given as a container:
std::list<std::string> algorithms = {"lz4","zstd_stream"}; mysqlx::Session sess(SessionOption::USER, "user_name", SessionOption::PWD, "password", SessionOption::COMPRESSION_ALGORITHMS, algorithms); -
For X DevAPI for C, there is a new
MYSQLX_OPT_COMPRESSION_ALGORITHMSoption and correspondingOPT_COMPRESSION_ALGORITHMShelper macro.URI mode follows X DevAPI URI mode:
mysqlx_session_t *sess = mysqlx_get_session_from_url( "mysqlx://user:password@host:port/db?compression-algorithms=[lz4,zstd_stream]", &error);Option mode follows the string format used for
SessionOption:mysqlx_session_option_set(opt, OPT_HOST("host_name"), OPT_USER("user"), OPT_PWD("password"), OPT_COMPRESSION_ALGORITHMS("lz4,zstd_stream"), PARAM_END));
These rules apply:
Permitted algorithm names are
zstd_stream,lz4_message, anddeflate_stream, and their aliaseszstd,lz4, anddeflate. Names are case-insensitive. Unknown names are ignored.Compression algorithms options permit multiple algorithms, which should be listed in priority order. Options that specify multiple algorithms can mix full algorithm names and aliases.
If no compression algorithms option is specified, the default is
zstd_stream,lz4_message,deflate_stream.-
The actual algorithm used is the first of those listed in the compression algorithms option that is also permitted on the server side. However, the option for compression algorithms is subject to the compression mode:
If the compression mode is
disabled, the compression algorithms option is ignored.If the compression mode is
preferredbut no listed algorithm is permitted on the server side, the connection is uncompressed.If the compression mode is
requiredbut no listed algorithm is permitted on the server side, an error occurs.
See also Connection Compression with X Plugin. (WL #13908, WL #13947)
-
-
For applications that use the legacy JDBC API (that is, not X DevAPI or X DevAPI for C), Connector/C++ binary distributions now include the libraries that provide the client-side LDAP authentication plugins, as well as any dependent libraries required by the plugins. This enables Connector/C++ application programs to connect to MySQL servers using simple LDAP authentication, or SASL LDAP authentication using the
SCRAM-SHA-1authentication method.NoteLDAP authentication requires use of a server from a MySQL Enterprise Edition distribution. For more information about the LDAP authentication plugins, see LDAP Pluggable Authentication.
If Connector/C++ was installed from a compressed tar file or Zip archive, the application program will need to set the
OPT_PLUGIN_DIRconnection option to the appropriate directory so that the bundled plugin library can be found. (Alternatively, copy the required plugin library to the default directory expected by the client library.)Example:
sql::ConnectOptionsMap connection_properties; // To use simple LDAP authentication ... connection_properties["userName"] = "simple_ldap_user_name"; connection_properties["password"] = "simple_ldap_password"; connection_properties[OPT_ENABLE_CLEARTEXT_PLUGIN]=true; // To use SASL LDAP authentication using SCRAM-SHA-1 ... connection_properties["userName"] = "sasl_ldap_user_name"; connection_properties["password"] = "sasl_ldap_scram_password"; // Needed if Connector/C++ was installed from tar file or Zip archive ... connection_properties[OPT_PLUGIN_DIR] = "${INSTALL_DIR}/lib{64}/plugin"; auto *driver = get_driver_instance(); auto *con = driver->connect(connection_properties); // Execute statements ... con->close();(WL #14113)
-
For applications that use the legacy JDBC API (that is, not X DevAPI or X DevAPI for C),
LOCALdata loading capability for theLOAD DATAstatement previously could be controlled on the client side only by enabling it for all files accessible to the client, or by disabling it altogether. The newOPT_LOAD_DATA_LOCAL_DIRoption enables restrictingLOCALdata loading to files located in a designated directory. For example, to set the value at connect time:sql::ConnectOptionsMap opt; opt[OPT_HOSTNAME] = "localhost"; opt[OPT_LOAD_DATA_LOCAL_DIR] = "/tmp"; sql::Connection *conn = driver->connect(opt);OPT_LOAD_DATA_LOCAL_DIRcan also be set after connect time:sql::ConnectOptionsMap opt; opt[OPT_HOSTNAME] = "localhost"; sql::Connection *conn = driver->connect(opt); //.... some queries / inserts / updates std::string path= "/tmp"; conn->setClientOption(OPT_LOAD_DATA_LOCAL_DIR, path); // LOAD LOCAL DATA DIR ... //Disable LOCAL INFILE by setting to null conn->setClientOption(OPT_LOAD_DATA_LOCAL_DIR, nullptr);The
OPT_LOAD_DATA_LOCAL_DIRoption maps onto theMYSQL_OPT_LOAD_DATA_LOCAL_DIRoption for themysql_options()C API function. For more information, see Security Considerations for LOAD DATA LOCAL. (WL #13884)
String decoding failed for utf-8 strings that began with a
\xEFbyte-order mark. (Bug #31656092, Bug #100292)With the
CLIENT_MULTI_FLAGoption enabled, executing multiple statements in a batch caused the next query to fail with a Commands out of sync error. (Bug #31399362)For connections made using X Plugin, connections over Unix socket files did not work. (Bug #31329938)
For connections made using X Plugin, the default compression mode was
DISABLEDrather thanPREFERRED. (Bug #31173447)