> ## Documentation Index
> Fetch the complete documentation index at: https://villagesql.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# バージョンポリシー

> VillageSQLのバージョン管理方式とMySQL互換性マトリックスを理解します。

## 概要

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

## VillageSQLのバージョン管理

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

### バージョン形式

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

```
0.0.1
│ │ │
│ │ └─ PATCH version
│ └─── MINOR version
└───── MAJOR version
```

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

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

<注意>
  VillageSQLは現在、1.0より前の開発段階（バージョン0.x.x）にあります。この段階では、プラットフォームを安定させるために、APIと拡張インターフェイスがより頻繁に変更される可能性があります。
</注意>

### 開発ビルド

プレリリースサフィックスが付いたバージョン（例: `0.0.4-dev`）は、開発ビルドです。デフォルトでは、開発ビルドで初期化されたデータベースからのアップグレードは、サーバーによってブロックされます。開発ビルドは、アップグレードの互換性についてテストされておらず、破壊的なスキーマまたはプロトコルの変更が含まれる可能性があります。

これを許可するには、サーバーを `--villagesql-allow-unsafe-dev-upgrade` フラグ付きで起動します。

```bash theme={null}
mysqld --villagesql-allow-unsafe-dev-upgrade --datadir=/path/to/data
```

フラグがない場合、サーバーは開発バージョンデータベースを検出するとエラーで終了します。

```
Upgrading from a development version (0.0.4-dev) is not allowed. Use --villagesql-allow-unsafe-dev-upgrade to permit this.
```

フラグが指定されている場合、サーバーは警告をログに記録して続行します。

```
Upgrading from a development version (0.0.4-dev); --villagesql-allow-unsafe-dev-upgrade was specified.
```

フラグが指定されているが、現在のバージョンが開発ビルドでない場合、サーバーはエラーで終了します。

```
--villagesql-allow-unsafe-dev-upgrade specified, but current version (0.0.3) is not a development version.
```

または、スキーマのアップグレードが実行されていない場合。

```
--villagesql-allow-unsafe-dev-upgrade specified, but no upgrade is being performed.
```

## 拡張機能の互換性

VillageSQL拡張機能はバージョン固有です。あるバージョンのVillageSQL用に構築された拡張機能は、別のバージョンでは動作しない場合があります。

VillageSQLをアップグレードする際には、次の手順を実行します。

1. 新しいバージョンの拡張機能の互換性を確認します。
2. 必要に応じて、拡張機能を更新または再構築します。
3. 本番環境にデプロイする前に、開発環境で拡張機能をテストします。

詳細なアップグレード手順については、[アップグレードガイド](/docs/guides/upgrade) を参照してください。

## 0.0.3からのSDKの変更

**プロトコル2拡張機能は再構築する必要があります。** VEFプロトコル3は、v0.0.4で安定しており、サーバーはロード時にプロトコル2拡張機能を拒否するようになりました。型付きラッパー（`StringArg`、`IntArg`、`StringResult`など）を使用して、プロトコル3 APIに対して再構築します。

**`vef_version_t::extra` 型が `const char*` に修正されました。** このフィールドは、0.0.3では `unsigned char*` でした。ほとんどの拡張機能は、このフィールドに直接アクセスしません。これは、SDKによって `manifest.json` ファイルのバージョンフィールドから入力されます。アクセスする場合は、0.0.4 SDKでコンパイルする際に、`(unsigned char *)` キャストを削除してください。
