Skip to main content

概要

VillageSQLは、明確なバージョン管理と互換性ポリシーに従い、デプロイメントとアップグレードに関する情報に基づいた意思決定を支援します。

VillageSQLのバージョン管理

VillageSQLは、セマンティックバージョニング (SemVer) を使用して、各リリースの変更内容とその影響を伝えます。

バージョン形式

バージョンは、MAJOR.MINOR.PATCH の形式に従います。

バージョンインクリメントルール

  • MAJORバージョン (例: 1.0.0 → 2.0.0): コードの変更やデータベースの移行が必要となる可能性のある破壊的な変更
  • MINORバージョン (例: 0.1.0 → 0.2.0): 後方互換性を維持したまま追加された新機能と機能
  • PATCHバージョン (例: 0.0.1 → 0.0.2): 後方互換性のあるバグ修正とマイナーな改善

開発ビルド

プレリリースサフィックスが付いたバージョン(例: 0.0.4-dev)は、開発ビルドです。デフォルトでは、開発ビルドで初期化されたデータベースからのアップグレードは、サーバーによってブロックされます。開発ビルドは、アップグレードの互換性についてテストされておらず、破壊的なスキーマまたはプロトコルの変更が含まれる可能性があります。 これを許可するには、サーバーを --villagesql-allow-unsafe-dev-upgrade フラグ付きで起動します。
フラグがない場合、サーバーは開発バージョンデータベースを検出するとエラーで終了します。
フラグが指定されている場合、サーバーは警告をログに記録して続行します。
フラグが指定されているが、現在のバージョンが開発ビルドでない場合、サーバーはエラーで終了します。
または、スキーマのアップグレードが実行されていない場合。

拡張機能の互換性

VillageSQL拡張機能はバージョン固有です。あるバージョンのVillageSQL用に構築された拡張機能は、別のバージョンでは動作しない場合があります。 VillageSQLをアップグレードする際には、次の手順を実行します。
  1. 新しいバージョンの拡張機能の互換性を確認します。
  2. 必要に応じて、拡張機能を更新または再構築します。
  3. 本番環境にデプロイする前に、開発環境で拡張機能をテストします。
詳細なアップグレード手順については、アップグレードガイド を参照してください。

0.0.3からのSDKの変更

プロトコル2拡張機能は再構築する必要があります。 VEFプロトコル3は、v0.0.4で安定しており、サーバーはロード時にプロトコル2拡張機能を拒否するようになりました。型付きラッパー(StringArgIntArgStringResultなど)を使用して、プロトコル3 APIに対して再構築します。 vef_version_t::extra 型が const char* に修正されました。 このフィールドは、0.0.3では unsigned char* でした。ほとんどの拡張機能は、このフィールドに直接アクセスしません。これは、SDKによって manifest.json ファイルのバージョンフィールドから入力されます。アクセスする場合は、0.0.4 SDKでコンパイルする際に、(unsigned char *) キャストを削除してください。