MySQL Connector/C++ Release Notes
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 the
        base name mysqlcppconn (as opposed to
        mysqlcppconn8) 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.
      
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
(WL #11375)
        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.
(WL #11415)
        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");
(WL #11231)
        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. (WL #11229)
        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 “How to build code that uses Connector/C++” in
        the Connector/C++ X DevAPI Reference, available at
        https://dev.mysql.com/doc/index-connectors.html.
       (WL #11376)