Documentation Home
MySQL Connector/C++ Release Notes
Related Documentation Download these Release Notes
PDF (US Ltr) - 256.0Kb
PDF (A4) - 255.5Kb
HTML Download (TGZ) - 56.5Kb
HTML Download (Zip) - 103.8Kb


MySQL Connector/C++ Release Notes  /  Changes in MySQL Connector/C++ 8.0  /  Changes in MySQL Connector/C++ 8.0.7 (2018-02-26, Release Candidate)

Changes in MySQL Connector/C++ 8.0.7 (2018-02-26, Release Candidate)

In addition to the new APIs introduced in MySQL Connector/C++ 8.0 (X DevAPI and X DevAPI for C), Connector/C++ now also supports the legacy API based on JDBC4. Applications written against the JDBC4-based API of Connector/C++ 1.1 can be also compiled with Connector/C++ 8.0, which is backward compatible with the earlier version. Such code does not require the X Plugin and can communicate with older versions of the MySQL Server using the legacy protocol. This contrasts with X DevAPI and X DevAPI for C applications, which expect MySQL Server 8.0.

The legacy API is implemented as a separate library with base name `mysqlcppconn` as opposed to `mysqlcppconn8` library implementing the new APIs. To build the legacy library, you must configure Connector/C++ using the -DWITH_JDBC=ON CMake option. For information about using the legacy API, refer to the documentation at https://dev.mysql.com/doc/connector-cpp/en/connector-cpp-getting-started-examples.html.

Deprecation and Removal Notes

  • View and table DDL methods have been removed. It is preferable that SQL statements be used for such operations.

    Removed X DevAPI methods:

    Schema.createView()
    Schema.alterView()
    Schema.dropView()
    Schema.dropTable()

    Removed X DevAPI data types:

    Algorithm
    CheckOption
    SQLSecurity

    Removed X DevAPI for C functions:

    mysqlx_view_create
    mysqlx_view_create_new
    mysqlx_view_modify
    mysqlx_view_modify_new
    mysqlx_view_replace
    mysqlx_view_replace_new
    mysqlx_view_drop
    mysqlx_table_drop
    mysqlx_set_view_algorithm
    mysqlx_set_view_security
    mysqlx_set_view_definer
    mysqlx_set_view_check_option
    mysqlx_set_view_columns

    Removed X DevAPI for C enumerations:

    mysqlx_view_algorithm_t
    mysqlx_view_security_t
    mysqlx_view_check_option_t

    Removed X DevAPI for C macros:

    VIEW_ALGORITHM()
    VIEW_SECURITY()
    VIEW_DEFINER()
    VIEW_CHECK_OPTION()
    VIEW_COLUMNS()
    VIEW_OPTION_XXX

Security Notes

  • Connector/C++ now supports the caching_sha2_password authentication plugin introduced in MySQL 8.0 (see Caching SHA-2 Pluggable Authentication), with these limitations:

    • For X DevAPI or X DevAPI for C applications, only encrypted (SSL) connections can be used to connect to cached_sha2_password accounts. For non-SSL connections, it is not possible to use cached_sha2_password accounts.

    • For applications that use the legacy JDBC API (that is, not X DevAPI or X DevAPI for C), it is possible to make connections to cached_sha2_password accounts in the following scenario:

      • The connection is unencrypted (OPT_SSL_MODE is set to SSL_MODE_DISABLED).

      • The server public key is given using the "rsaKey" option and no RSA key exchange is used (OPT_GET_SERVER_PUBLIC_KEY is set to false).

      If RSA key exchange is enabled, the connection works.

X DevAPI Notes

  • It is now possible to use the Collection interface to create and drop indexes on document collections.

    X DevAPI example:

    coll.createIndex("idx",
      R"({
        "fields": [
          { "field": "$.zip", "type": "TEXT(10)" },
          { "field": "$.count", "type": "INT UNSIGNED" }
        ]
      })"
    );
    
    coll.createIndex("loc",
      R"({
        "type": "SPATIAL",
        "fields": [ { "field": "$.coords", "type": "GEOJSON", "srid": 31287 } ]
      })"
    );
    
    coll.dropIndex("idx");

    X DevAPI for C example:

    ret = mysqlx_collection_create_index(coll, "idx",
      R"({
        "fields": [
          { "field": "$.zip", "type": "TEXT(10)" },
          { "field": "$.count", "type": "INT UNSIGNED" }
        ]
      })"
    )
    
    ret = mysqlx_collecton_create_index(coll, "loc",
      R"({
        "type": "SPATIAL",
        "fields": [ { "field": "$.coords", "type": "GEOJSON", "srid": 31287 } ]
      })"
    );
    
    mysqlx_collection_drop_index(coll, "idx");
  • It is now possible to use the Session interface to create savepoints inside transactions and roll back a transaction to a given savepoint. This interface supports the operations provided by the SAVEPOINT, ROLLBACK TO SAVEPOINT, and RELEASE SAVEPOINT statements. For more information about these statements, see SAVEPOINT, ROLLBACK TO SAVEPOINT, and RELEASE SAVEPOINT Statements.

    X DevAPI example:

    sess.startTransaction();
    string point1 = sess.setSavepoint();
    sess.setSavepoint("point2");
    sess.rollbackTo(point1);         // this also removes savepoint "point2"
    string point3 = sess.setSavepoint();
    sess.releaseSavepoint(point3);  // explicitly remove savepoint
    sess.commitTransaction();

    X DevAPI for C example:

    mysqlx_trasaction_begin(sess);
    const char *point1 = mysqlx_savepoint_set(sess,NULL);
    mysqlx_savepoint_set(sess,"point2");
    mysqlx_rollback_to(sess,point1);
    const char *point3 = mysqlx_savepoint_set(sess,NULL);
    mysqlx_sevepoint_release(sess,point3);
    mysqlx_transaction_commit(sess);

    For more information, see Working with Savepoints.

Functionality Added or Changed

  • Connector/C++ now implements TLS connections using the OpenSSL library. It is possible to build Connector/C++ with OpenSSL or the bundled yaSSL implementation of TLS. This is controlled by the WITH_SSL CMake option, which takes these values: bundled (build using bundled yaSSL code); system (build using system OpenSSL library, with the location as detected by CMake); path_name (build using OpenSSL library installed at the named location). For more information, see https://dev.mysql.com/doc/dev/connector-cpp/8.0/building.html

Bugs Fixed

  • replaceOne() and similar methods did not correctly detect document ID mismatches. (Bug #27246854)

  • Calling bind() twice on the same parameter for complex types resulted in empty values. (Bug #26962725)