Documentation Home
MySQL 连接器/ODBC 发行说明  / MySQL 连接器/ODBC 版本 8.0 中的更改  /  MySQL Connector/C++ 8.0.7 的变化(2018-02-26,发布候选)

MySQL Connector/C++ 8.0.7 的变化(2018-02-26,发布候选)

除了 MySQL Connector/C++ 8.0 中引入的新 API(X DevAPI 和 X DevAPI for C)之外,Connector/C++ 现在还支持基于 JDBC4 的遗留 API。针对 Connector/C++ 1.1 基于 JDBC4 的 API 编写的应用程序也可以使用 Connector/C++ 8.0 进行编译,它向后兼容早期版本。此类代码不需要 X 插件,并且可以使用旧协议与旧版本的 MySQL 服务器通信。这与 X DevAPI 和用于 C 应用程序的 X DevAPI 形成对比,后者期望 MySQL Server 8.0。

遗留 API 作为一个单独的库实现,其基本名称为“mysqlcppconn”,而不是实现新 API 的“mysqlcppconn8”库。要构建遗留库,您必须使用 CMake选项配置连接器/C++。有关使用旧版 API 的信息,请参阅 https://mysql.net.cn/doc/connector-cpp/en/connector-cpp-getting-started-examples.html上的文档。 -DWITH_JDBC=ON

弃用和移除说明

  • 视图和表 DDL 方法已被删除。最好将 SQL 语句用于此类操作。

    删除了 X DevAPI 方法:

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

    删除了 X DevAPI 数据类型:

    Algorithm
    CheckOption
    SQLSecurity

    删除了 C 函数的 X DevAPI:

    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

    删除了用于 C 枚举的 X DevAPI:

    mysqlx_view_algorithm_t
    mysqlx_view_security_t
    mysqlx_view_check_option_t

    删除了 C 宏的 X DevAPI:

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

安全说明

  • Connector/C++ 现在支持caching_sha2_password MySQL 8.0 中引入的身份验证插件(请参阅 缓存 SHA-2 可插入身份验证),但具有以下限制:

    • 对于 X DevAPI 或 X DevAPI for C 应用程序,只能使用加密 (SSL) 连接来连接 cached_sha2_password帐户。对于非 SSL 连接,无法使用 cached_sha2_password帐户。

    • 对于使用遗留 JDBC API(即不是 X DevAPI 或 X DevAPI for C)的应用程序,可以cached_sha2_password在以下情况下连接到帐户:

      • 连接未加密(OPT_SSL_MODE设置为 SSL_MODE_DISABLED)。

      • 服务器公钥使用“rsaKey”选项给出,不使用 RSA 密钥交换(OPT_GET_SERVER_PUBLIC_KEY设置为 false)。

      如果启用 RSA 密钥交换,则连接有效。

X DevAPI 注释

  • 现在可以使用该Collection 界面在文档集合上创建和删除索引。

    X DevAPI 示例:

    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");

    C 示例的 X DevAPI:

    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");
  • 现在可以使用该Session 接口在事务中创建保存点并将事务回滚到给定的保存点。该接口支持 SAVEPOINT, ROLLBACK TO SAVEPOINT, 和 RELEASE SAVEPOINT语句提供的操作。有关这些语句的更多信息,请参阅SAVEPOINT、ROLLBACK TO SAVEPOINT 和 RELEASE SAVEPOINT 语句

    X DevAPI 示例:

    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();

    C 示例的 X DevAPI:

    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);

    有关详细信息,请参阅 使用保存点

添加或更改的功能

  • Connector/C++ 现在使用 OpenSSL 库实现 TLS 连接。可以使用 OpenSSL 或 TLS 的捆绑 yaSSL 实现构建连接器/C++。这是由 CMake 选项控制的,它采用以下值:( 使用捆绑的 yaSSL 代码构建); (使用系统 OpenSSL 库构建,位置由CMake检测); (使用安装在指定位置的 OpenSSL 库构建)。有关详细信息,请参阅Connector/C++ X DevAPI 参考中的 如何构建使用 Connector/C++的代码” ,网址为https://mysql.net.cn/doc/index-connectors.htmlWITH_SSL bundledsystempath_name.

修正错误

  • replaceOne()和类似的方法没有正确检测到文档 ID 不匹配。(缺陷号 27246854)

  • 对复杂类型的同一参数调用bind()两次会导致空值。(漏洞#26962725)