ドライバーのバージョンをアップグレードする
Overview
このページでは、 C++ドライバーの新しいバージョンにアップグレードするときにアプリケーションに加える必要がある変更について説明します。
アップグレードする前に、次のアクションを実行してください。
新しいC++ドライバーのバージョンが、アプリケーションが接続するMongoDB Serverのバージョンと、アプリケーションがコンパイルされるC++標準バージョンと互換性があることを確認します。 バージョンの互換性情報については、 C++ドライバーの互換性ページを参照してください。
アプリケーションが使用しているドライバー バージョンと計画されているアップグレード バージョン間の重大な変更については、 重大な変更セクションを参照してください。
Tip
ドライバーのバージョンをアップグレードするときにMongoDB Serverのバージョン間で互換性を確保するには、 Stable APIを使用します。
重大な変更の定義
注意
C++ドライバーはセマンティック バージョン管理に従います。ドライバーは、どのリリースでもビルド システムまたはパッケージの互換性を中断する可能性があります。 パッチ リリースにより、誤ってAPI重大な変更が元に戻る可能性があります。
重大な変更とは、ドライバーの特定のバージョン以降の規則または動作の変更です。 このタイプの変更では、ドライバーをアップグレードする前に対処しないと、アプリケーションが正常に動作しなくなる可能性があります。
このセクションの重大な変更は、それを導入したドライバーのバージョンによって分類されます。 ドライバーのバージョンをアップグレードするときは、現在のバージョンとアップグレードのバージョン間のすべての重大な変更に対処してください。
例
バージョン 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::foo
をbsoncxx::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のサポートを削除します。
重大な変更
次のセクションでは、各ドライバー バージョン リリースによって導入される重大な変更について説明します。
バージョン 4.0
v 4.0 でシステムの重大な変更をビルド
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_TESTS
をON
に設定する必要があります。 「すべて」ターゲットにテストターゲットを含めるには、BUILD_TESTING
オプションもON
に設定する必要があります。
v 4.0 のAPI重大な変更
v 4.0 ドライバーは、 APIに次の重大な変更を導入します。
Boost または MNMLSTC/コア ライブラリと同等のエイリアスとして と を構成するサポートを廃止します。コンテキストについては、「
bsoncxx::stdx::string_view
bsoncxx::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::element
、bsoncxx::v_noabi::array::element
、bsoncxx::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 重大な変更
v 4.0 ドライバーは、ABI に次の重大な変更を導入します。
Boost または MNMLSTC/コア ライブラリと同等のエイリアスとして と を構成するサポートを廃止します。コンテキストについては、「
bsoncxx::stdx::string_view
bsoncxx::stdx::optional<T>
ビルド システムの重大な変更 」セクションを参照してください。に相当する非推奨の
utf8
string
関数を排除します。これらの変更の完全なリストについては、「 API重大な変更 」セクションを参照してください。
バージョン3.11
v 3.11 でシステムの重大な変更をビルド
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 重大な変更
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 の重大重大な変更です。
バージョン3.10
v 3.10 でシステムの重大な変更をビルド
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 オプションとして選択するためのサポートを廃止します。
バージョン3.9
v 3.9 でシステムの重大な変更をビルド
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.8以前
ドライバー バージョン 以前の場合は、 で各リリースのリリースノートと関連する3.8Github JIRA チケットを参照してください。