Docs Menu
Docs Home
/ / /
C++ ドライバー

ドライバーのバージョンをアップグレードする

項目一覧

  • Overview
  • 重大な変更の定義
  • 重大な変更のタイプ
  • 重大な変更
  • バージョン 4.0
  • バージョン3.11
  • バージョン3.10
  • バージョン3.9
  • バージョン3.8以前

このページでは、 C++ドライバーの新しいバージョンにアップグレードするときにアプリケーションに加える必要がある変更について説明します。

アップグレードする前に、次のアクションを実行してください。

  • 新しいC++ドライバーのバージョンが、アプリケーションが接続するMongoDB Serverのバージョンと、アプリケーションがコンパイルされるC++標準バージョンと互換性があることを確認します。 バージョンの互換性情報については、 C++ドライバーの互換性ページを参照してください。

  • アプリケーションが使用しているドライバー バージョンと計画されているアップグレード バージョン間の重大な変更については、 重大な変更セクションを参照してください。

Tip

ドライバーのバージョンをアップグレードするときにMongoDB Serverのバージョン間で互換性を確保するには、 Stable APIを使用します。

注意

C++ドライバーはセマンティック バージョン管理に従います。ドライバーは、どのリリースでもビルド システムまたはパッケージの互換性を中断する可能性があります。 パッチ リリースにより、誤ってAPI重大な変更が元に戻る可能性があります。

詳しくは、「 APIと ABI のバージョン管理 」を参照してください。

重大な変更とは、ドライバーの特定のバージョン以降の規則または動作の変更です。 このタイプの変更では、ドライバーをアップグレードする前に対処しないと、アプリケーションが正常に動作しなくなる可能性があります。

このセクションの重大な変更は、それを導入したドライバーのバージョンによって分類されます。 ドライバーのバージョンをアップグレードするときは、現在のバージョンとアップグレードのバージョン間のすべての重大な変更に対処してください。

バージョン 4.0 へのアップグレード

C++ドライバーをバージョン 3 .x からバージョン 4.0 にアップグレードする場合は、バージョン 3 .x からバージョン 4.0 までのバージョンにリストされているすべての重大な変更に対処します。

C++ドライバーの新しいバージョンでは、次のタイプの重大な変更が導入される可能性があります。

  • APIの変更は、 C++ドライバー ライブラリのAPIを考慮します。 これらの変更にはAPIメジャー バージョンのアップグレードが伴います。 これらの変更に対処するには、プロジェクト内のC++ソースコードを編集する必要がある場合があります。

    • 関数 v1::func()の宣言を削除します。 (ABI 互換性のために定義は引き続き提供されます)。

    • インライン関数v_noabi::func()を削除します。

    • v_noabi::func()を削除します。

    • bsoncxx::fooの再利用をv1::fooからv2::fooに変更します。 古いインターフェースを引き続き使用するには、 bsoncxx::foobsoncxx::v1::fooとして修飾します。

  • ABIの変更は、 C++ドライバー ライブラリの ABI に関する変更です。 これらの変更には ABI バージョンのアップグレードが伴いますが、 APIメジャー バージョンのアップグレードが伴う場合もあります。 これらの変更に対処するには、プロジェクトを再ビルドするか、 C++ソースコードを編集する必要がある場合があります。

    ABI 安定性は、 v_noabi名前空間で宣言されたエンティティに対応するシンボルではサポートされていません。 このようなシンボルの重大な変更には、必ずしも ABI バージョンのアップグレードが必要ではありません。

    • エクスポートされたシンボルv_noabi::func()を削除します。

    • エクスポートされたシンボルv1::func()を削除します。

    • v1::typeのエクスポートされたシンボルを削除します。

  • ビルド システムの変更は、ビルド システムまたはC++ドライバー ライブラリのパッケージ化に関するものです。 これらの変更は必ずしもAPIメジャー バージョン アップグレードや ABI バージョン アップグレードを伴うものではありません。 これらの変更に対処するには、ビルド システム構成を変更するか、プロジェクトのパッケージまたは依存関係管理設定を更新する必要がある場合があります。 また、 C++ソースコードを変更または再構築する必要がある場合もあります。

    • ENABLE_FOO構成変数を削除します。

    • ENABLE_BAR構成変数のデフォルト値をOFFからONに変更します。

    • プラットフォーム A、コンパイラー B、またはアーキテクチャCのサポートを削除します。

次のセクションでは、各ドライバー バージョン リリースによって導入される重大な変更について説明します。

v 4.0ドライバーは、ビルド システムに次の重大な変更を導入します。

  • Boost および MNMLSTC/core 外部 polyfill ライブラリのサポートを削除します。次の構成オプションは設定できなくなりました。

    • ENABLE_BSONCXX_POLY_USE_IMPLS。このオプションは暗黙的に ON に設定されます。

    • BSONCXX_POLY_USE_MNMLSTC.

    • BSONCXX_POLY_USE_SYSTEM_MNMLSTC.

    • BSONCXX_POLY_USE_BOOST.

  • MONGOCXX_OVERRIDE_DEFAULT_INSTALL_PREFIX 構成オプションのサポートを廃止します。 CMAKE_INSTALL_PREFIX のデフォルトの CSpec 動作が尊重されるようになりました。

  • ENABLE_TESTS 構成オプションをデフォルトで OFF に設定します。テスト ターゲットの構築を再度有効にするには、ENABLE_TESTSON に設定する必要があります。 「すべて」ターゲットにテストターゲットを含めるには、BUILD_TESTING オプションも ON に設定する必要があります。

v 4.0 ドライバーは、 APIに次の重大な変更を導入します。

  • Boost または MNMLSTC/コア ライブラリと同等のエイリアスとして と を構成するサポートを廃止します。コンテキストについては、「bsoncxx::stdx::string_viewbsoncxx::stdx::optional<T> ビルド システムの重大な変更 」セクションを参照してください。

  • 次のヘッダー ファイルを削除します。

    • <bsoncxx/stdx/make_unique.hpp>

    • <bsoncxx/types/value.hpp>

    • <bsoncxx/util/functor.hpp>

    • <mongocxx/options/create_collection.hpp>

  • string に相当する次の非推奨の utf8 型と関数を削除します。

    • k_utf8 bsoncxx::v_noabi::typeクラスからの 。代わりに、k_string を使用してください。

    • b_utf8 bsoncxx::v_noabi::typesクラスからの 。代わりに、b_string を使用してください。

    • get_utf8() bsoncxx::v_noabi::document::elementbsoncxx::v_noabi::array::elementbsoncxx::v_noabi::types::bson_value::view クラスからの 。代わりに、get_string() を使用してください。

    • k_cannot_append_utf8 bsoncxx::v_noabi::exception::error_codeクラスからの 。代わりに、k_cannot_append_string を使用してください。

    • k_need_element_type_k_utf8 bsoncxx::v_noabi::exception::error_codeクラスからの 。代わりに、k_need_element_type_k_string を使用してください。

  • mongocxx::stdx名前空間を削除します。コード内の次の型を置き換えます。

    • mongocxx::stdx::optional<T>。代わりに、bsoncxx::stdx::optional<T> を使用してください。

    • mongocxx::stdx::string_view。代わりに、bsoncxx::stdx::string_view を使用してください。

  • 次のドキュメント化されていない using のディレクティブと宣言を削除します。

    • bsoncxx::builder::types <bsoncxx/builder/list.hpp> ヘッダーファイルからの。代わりに、<bsoncxx/types.hpp> から bsoncxx::types を使用してください。

    • bsoncxx::builder::stream::concatenate <bsoncxx/builder/stream/helpers.hpp> ヘッダーファイルからの。代わりに、<bsoncxx/builder/concatenate.hpp> から bsoncxx::builder::concatenate を使用してください。

    • mongocxx::events::read_preference <mongocxx/events/topology_description.hpp> ヘッダーファイルからの。代わりに、<mongocxx/read_preference.hpp> から mongocxx::read_preference を使用してください。

v 4.0 ドライバーは、ABI に次の重大な変更を導入します。

  • Boost または MNMLSTC/コア ライブラリと同等のエイリアスとして と を構成するサポートを廃止します。コンテキストについては、「bsoncxx::stdx::string_viewbsoncxx::stdx::optional<T> ビルド システムの重大な変更 」セクションを参照してください。

  • に相当する非推奨のutf8 string関数を排除します。これらの変更の完全なリストについては、「 API重大な変更 」セクションを参照してください。

v 3.11ドライバーは、ビルド システムに次の重大な変更を導入します。

  • MongoDB Server v 3.6のサポートを廃止します。

  • MongoDB Cドライバー v 1.28.0以降が必要です。

  • ENABLE_TESTS 構成オプションが ON に設定されている場合は、 C++ 14 以降が必要です。 CMax の構成中に ENABLE_TESTS=OFF を使用したテストを無効にすることで、 C++ 14 要件をオプトアウトできます。

v 3.11 ドライバーは、ABI に次の重大な変更を導入します。

  • bsoncx ABI 内の次のプライベート ノード関数のエクスポートを削除します。

    bsoncxx::v_noabi::types::bson_value::value::value(const uint8_t*, uint32_t, uint32_t, uint32_t)
    bsoncxx::v_noabi::types::bson_value::view::_init(void*)
    bsoncxx::v_noabi::types::bson_value::view::view(const uint8_t*, uint32_t, uint32_t, uint32_t)
    bsoncxx::v_noabi::types::bson_value::view::view(void*)
  • mongocx ABI 内の次のプライベート ノード関数のエクスポートを削除します。

    mongocxx::v_noabi::options::change_stream::as_bson()
    mongocxx::v_noabi::options::aggregate::append(bsoncxx::v_noabi::builder::basic::document&)
    mongocxx::v_noabi::options::index::storage_options()
  • MSVC でコンパイルされた場合は、エクスポートされたすべての関数シンボルを__cdeclで宣言します。 プロジェクトを構築するときに、代替のデフォルトの呼び出し規則を使用する場合、これは ABI の重大重大な変更です。

v 3.10ドライバーは、ビルド システムに次の重大な変更を導入します。

  • find_package(libbsoncxx)find_package(libmongocxx)の呼び出しのサポートを廃止します。 代わりにfind_package(bsoncxx)find_package(mongocxx)を使用してください。

  • レガシーCSpecパッケージ構成ファイルによって提供されるLIBBSONCXX_*およびLIBMONGOCXX_* CSpec 変数のサポートを廃止します。 代わりに、 mongo::bsoncxx_*mongo::mongocxx_* CSpec ターゲットを使用してください。

  • BSONCXX_POLY_USE_STD_EXPERIMENTAL Cake オプションを削除し、実験的なC++標準ライブラリを polyfill オプションとして選択するためのサポートを廃止します。

v 3.9ドライバーは、次の重大な変更を導入します。

  • CSpecプロジェクト構築ツリーからエクスポートされたターゲットのサポートを削除します

  • macOS 10.14 、 macOS 10.15 、 Ubuntu 14.04のサポートを廃止します。

  • MongoDB Cドライバー v 1.25.0以降が必要

  • FetchContentモジュールをサポートするには CMax v 3.15以降が必要

ドライバー バージョン 以前の場合は、 で各リリースのリリースノートと関連する3.8Github JIRA チケットを参照してください。

戻る

新機能