> ## 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サーバーのコードベースに対するデバッグ、テスト、および貢献の方法。

このガイドでは、GDBを使用したデバッグ、サーバーテストスイートの実行、およびVillageSQLへの貢献について説明します。このガイドを使用する前に、[ソースからのビルド](/docs/ja/mysql-8.4/0.0.4/source)を行い、動作するビルドを準備してください。

## GDBを使用したデバッグ

開発およびトラブルシューティングのために、VillageSQLをGDBで実行できます。

**Linux:**

```bash theme={null}
gdb --args $HOME/build/villagesql/bin/mysqld --gdb --datadir=$HOME/mysql-data/data --basedir=$HOME/build/villagesql
```

**macOS:**

```bash theme={null}
gdb --args ~/build/villagesql/bin/mysqld --gdb --datadir=~/mysql-data/data --basedir=~/build/villagesql
```

**GDB内:**

```
(gdb) run                    # Start the server
(gdb) break function_name    # Set breakpoints
(gdb) continue              # Resume execution
(gdb) bt                    # Show backtrace on crash
```

**MySQLデバッグの一般的なGDBコマンド:**

```
# Break on specific SQL command execution
(gdb) break mysql_execute_command

# Break on extension loading
(gdb) break Sql_cmd_install_extension::execute

# Print variable values
(gdb) print variable_name

# Step through code
(gdb) step      # Step into functions
(gdb) next      # Step over functions
```

## テストの実行

VillageSQLには、機能を確認するためのユニットテストと回帰テストの両方が含まれています。

### ユニットテスト

VillageSQL固有のユニットテストを（ビルドディレクトリ内から）実行します。

```bash theme={null}
make -j10 villagesql-unit-tests && ctest -L villagesql
```

または、すべてのユニットテストを実行します。

```bash theme={null}
ctest --output-on-failure
```

### 回帰テスト

`mysql-test`ディレクトリに移動します。

```bash theme={null}
cd mysql-test
```

**MySQLの完全なテストスイートを実行します（時間がかかります）。**

```bash theme={null}
./mysql-test-run.pl --parallel=auto
```

**VillageSQL固有のテストのみを実行します。**

```bash theme={null}
./mysql-test-run.pl --suite=villagesql
```

**すべてのサブスイートを含むVillageSQLテストを実行します。**

```bash theme={null}
./mysql-test-run.pl --do-suite=villagesql --parallel=auto
```

<Note>
  **`--suite`と`--do-suite`:**

  * `--suite=villagesql`は、最上位レベルの`villagesql`テストのみを実行します。
  * `--do-suite=villagesql`は、サブスイート（`insert`、`select`、`stored_procedure`など）を含むすべてのテストを実行します。
</Note>

### 個別のテストの実行

テスト名を指定して特定のテストを実行します。

```bash theme={null}
./mysql-test-run.pl villagesql.complex_index
```

サブスイートからテストを実行します。

```bash theme={null}
./mysql-test-run.pl --suite=villagesql/insert
```

### テスト結果の更新

機能が変更され、期待されるテスト出力を更新する必要がある場合：

```bash theme={null}
./mysql-test-run.pl --record villagesql.complex_index
```

<Warning>
  **テスト記録:** `.result`ファイルの変更は、常に確認し、バグではなく意図した動作を反映していることを確認してください。`--record`フラグは、期待される出力を無条件に上書きします。
</Warning>

### テストの移植性

テスト出力にテストランナーの一時ディレクトリからのパスが含まれている場合、`.test`ファイル内に次のディレクティブを追加して、記録された結果に他のマシンで動作しなくなる絶対パスが含まれないようにします。

```sql theme={null}
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
```

### テスト失敗時のデバッグ

VillageSQL固有のログメッセージ（`LogVSQL()`を通じて出力される）は、デフォルトでは抑制されます。テスト実行中にエラーログに表示するには：

```bash theme={null}
./mysql-test-run.pl --mysqld=--log-error-verbosity=3 villagesql.complex_index
```

完全なエラーログは、`mysql-test/var/log/mysqld.1.err`にあります。

拡張回帰テストの作成については、[開発ガイド](/docs/ja/mysql-8.4/0.0.4/development)を参照してください。

## バイナリのインストール

VillageSQLをシステム全体にインストールするには（適切な権限が必要です）。

```bash theme={null}
cmake --build build --target install
```

これにより、バイナリはデフォルトで`/usr/local/mysql/`にインストールされます。インストールプレフィックスをカスタマイズできます。

```bash theme={null}
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/opt/villagesql
cmake --build build --target install
```

## 貢献

VillageSQLに貢献する場合は、[貢献ガイドライン](https://github.com/villagesql/villagesql-server/blob/main/CONTRIBUTING.md)を参照して、コーディング標準と開発ワークフローを確認してください。
