> ## 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システムビューと変数

以下の標準SQLインターフェースを使用して、拡張メタデータとサーバーの状態を照会します。

***

## システムビュー

### INFORMATION\_SCHEMA.EXTENSIONS

現在インストールされているVillageSQL拡張の一覧を表示します。

<Note>
  `INSTALL EXTENSION` と `UNINSTALL EXTENSION` はVillageSQLのSQL拡張機能です。
  これらは標準的なMySQL 8.4の構文には含まれていません。
</Note>

**既知の列：**

| Column              | Type    | Description         |
| ------------------- | ------- | ------------------- |
| `EXTENSION_NAME`    | varchar | インストールされた拡張機能の名前    |
| `EXTENSION_VERSION` | varchar | 拡張機能から報告されたバージョン文字列 |

**例：**

```sql theme={null}
-- Install an extension (VillageSQL-specific syntax)
INSTALL EXTENSION vsql_complex;

-- List all installed extensions
SELECT * FROM INFORMATION_SCHEMA.EXTENSIONS;

-- Check a specific extension's version
SELECT EXTENSION_VERSION
FROM INFORMATION_SCHEMA.EXTENSIONS
WHERE EXTENSION_NAME = 'vsql_complex';
```

**出力例**（実際のバージョン文字列はインストールされた拡張機能に依存します）：

```
+------------------+-------------------+
| EXTENSION_NAME   | EXTENSION_VERSION |
+------------------+-------------------+
| vsql_complex     | 0.0.1             |
| vsql_uuid        | 0.2.1             |
+------------------+-------------------+
```

`EXTENSION_NAME` の値は小文字で、`make_extension()` に渡された名前と一致します。

このビューは現在のインストール状態を反映します。

***

### INFORMATION\_SCHEMA.COLUMNS (Custom Types)

カスタム拡張型を使用する列は、標準的な
`INFORMATION_SCHEMA.COLUMNS` ビューで確認できます。カスタム型は
`DATA_TYPE` および `COLUMN_TYPE` 列に
`extension_name.type_name` 形式で表示されます
（例：`vsql_complex.COMPLEX`）。

**例：**

```sql theme={null}
-- Find all columns using custom extension types
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE LIKE '%.%'
ORDER BY TABLE_SCHEMA, TABLE_NAME;

-- Find columns using a specific extension's types
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE LIKE 'vsql_complex.%';
```

**出力例：**

```
+--------------+------------+-------------+---------------------+
| TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | DATA_TYPE           |
+--------------+------------+-------------+---------------------+
| mydb         | signals    | impedance   | vsql_complex.COMPLEX|
| mydb         | signals    | frequency   | vsql_complex.COMPLEX|
+--------------+------------+-------------+---------------------+
```

***

### INFORMATION\_SCHEMA.EXTENSION\_REGISTRATION

読み込まれた各拡張機能のメモリ内VEF登録構造体をJSONドキュメントとして公開します。`INSTALL EXTENSION` 実行後に、サーバーが拡張機能の関数、型、システム変数を正しくパースしたことを確認するために使用します。

```sql theme={null}
SELECT EXTENSION_NAME, NEGOTIATED_PROTOCOL, REGISTRATION_JSON
FROM INFORMATION_SCHEMA.EXTENSION_REGISTRATION
WHERE EXTENSION_NAME = 'vsql_complex';
```

| Column                | Type              | Description                                                    |
| --------------------- | ----------------- | -------------------------------------------------------------- |
| `EXTENSION_NAME`      | `VARCHAR(64)`     | インストールされた拡張機能の名前。                                              |
| `NEGOTIATED_PROTOCOL` | `BIGINT UNSIGNED` | 拡張機能とサーバー間でネゴシエートされたVEFプロトコルバージョン。                             |
| `REGISTRATION_JSON`   | `longtext`        | `funcs` および `types` 配列を含む `vef_registration_t` 構造体のJSONシリアライズ。 |

***

## 一般的なクエリ

### 拡張機能の依存関係の検索

アンインストールする前に、特定の拡張機能の型を使用している列を特定します：

```sql theme={null}
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE LIKE 'vsql_complex.%';
```

### すべての拡張機能とそのカスタム型列の一覧表示

```sql theme={null}
-- All installed extensions
SELECT EXTENSION_NAME, EXTENSION_VERSION
FROM INFORMATION_SCHEMA.EXTENSIONS
ORDER BY EXTENSION_NAME;

-- All columns using custom types across all extensions
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE LIKE '%.%'
ORDER BY DATA_TYPE, TABLE_SCHEMA, TABLE_NAME;
```

### 拡張機能の型を使用しているテーブルの検索

```sql theme={null}
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE LIKE 'vsql_complex.%'
ORDER BY TABLE_SCHEMA, TABLE_NAME;
```

***

## システム変数

### veb\_dir

実行時に読み取り専用です。サーバーが `.veb` 拡張バンドルファイルを検索するディレクトリのパスを指定します。`[mysqld]` セクションの `my.cnf` で設定します。サーバーの再起動なしでは変更できません。

```sql theme={null}
SHOW VARIABLES LIKE 'veb_dir';
```

**スコープ：** グローバル、実行時に読み取り専用。`my.cnf` で設定：

```ini theme={null}
[mysqld]
veb_dir=/path/to/extensions/
```

サポートされるのは単一のディレクトリのみです。配置とトラブルシューティングについては、[拡張機能の管理](/docs/ja/mysql-8.4/0.0.4/managing) を参照してください。

***

### villagesql\_server\_version

実行時読み取り専用のグローバル変数。サーバーバイナリにコンパイルされたVillageSQLバージョン文字列を返します。これは内部メタデータカタログバージョンを追跡する`villagesql_schema_version`とは別物です。

```sql theme={null}
SELECT @@villagesql_server_version;
-- Example output: 0.0.4 (release builds)
-- Development builds include a commit suffix: 0.0.4-dev-03d249dd

-- Show all VillageSQL system variables at once
SHOW VARIABLES LIKE 'villagesql_%';
```

**スコープ：** グローバル、読み取り専用。実行時に設定できません。

***

### villagesql\_vef\_server\_protocol

読み取り専用のグローバル変数です。このサーバービルドでサポートされている最高のVEFプロトコルバージョンを返します。拡張機能の作成者は、登録時に利用可能なABI機能を確認するために、この値を `types.h` のプロトコル定数と比較できます。

```sql theme={null}
SELECT @@villagesql_vef_server_protocol;
```

| Property | Value                  |
| -------- | ---------------------- |
| **スコープ** | グローバル                  |
| **アクセス** | 読み取り専用                 |
| **型**    | 符号なし整数 (`0`–`255`)     |
| **現在の値** | `4` (`VEF_PROTOCOL_4`) |

この値はコンパイル時の定数 `vef_server_protocol_version`
を反映しており、実行時に変更することはできません。

***

## 次のステップ

<CardGroup cols={2}>
  <Card title="拡張機能の管理" icon="sliders" href="/docs/ja/mysql-8.4/0.0.4/managing">
    拡張機能の監視とトラブルシューティング
  </Card>

  <Card title="拡張機能のインストール" icon="download" href="/docs/ja/mysql-8.4/0.0.4/install">
    新しい拡張機能の追加
  </Card>

  <Card title="拡張機能のアーキテクチャ" icon="sitemap" href="/docs/ja/mysql-8.4/0.0.4/architecture">
    内部構造の理解
  </Card>

  <Card title="利用可能な拡張機能" icon="list" href="/docs/ja/extensions">
    拡張機能カタログの閲覧
  </Card>
</CardGroup>
