# データベースのアップグレード

データベースをアップグレードして、現在のツールで使用できるようにします。

> \[!NOTE]
> このコンテンツでは、CodeQL CLI の最新リリースについて説明します。 このリリースについて詳しくは、 <https://github.com/github/codeql-cli-binaries/releases> をご覧ください。
>
> 以前のリリースの、このコマンドで使えるオプションを詳しく確認するには、ターミナルで <span style="white-space: nowrap;">`--help`</span> オプションを指定してコマンドを実行してください。

## 概要

```shell copy
codeql database upgrade [--threads=<num>] [--ram=<MB>] <options>... -- <database>
```

## Description

データベースをアップグレードして、現在のツールで使用できるようにします。

これにより、必要に応じて、QL パックの検索パスにある QL ライブラリと互換性を持つように CodeQL データベースが書き換えられます。

アップグレードが必要な場合、元に戻すことはできません。 その後、データベースは作成時に最新であったライブラリで使用できなくなります。

## オプション

### 主なオプション

#### `<database>`

```
          \[[必須] アップグレードする CodeQL データベースのパス。
```

#### `--search-path=<dir>[:<dir>...]`

アップグレード レシピを含む QL パックが見つかる可能性があるディレクトリの一覧。 各ディレクトリは、QL パック (またはルートに `.codeqlmanifest.json` ファイルを含むパックのバンドル)、または 1 つ以上のこのようなディレクトリの直接の親ディレクトリのいずれかです。

パスにディレクトリ ツリーを含める場合は、それらの順序で、それらの間の優先順位を定義します。解決する必要があるパック名が複数のディレクトリ ツリーで一致する場合は、最初に指定したものが優先されます。

オープンソースの CodeQL リポジトリのチェックアウトでこれを指定すると、そこにある言語の 1 つを照会するときに機能するはずです。

(注: Windows では、パスの区切り記号は `;` です)。

#### `--additional-packs=<dir>[:<dir>...]`

```
          \[詳細設定] このディレクトリ リストを指定した場合、ディレクトリは、`--search-path` で指定したものより前に、アップグレードについて検索されます。 これらの間の順序は重要ではありません。このリストの 2 か所でパック名が見つかった場合は、エラーです。
```

これは、デフォルトのパスにも表示される新しいバージョンのパックを一時的に開発している場合に役立ちます。 一方、構成ファイルでこのオプションをオーバーライドすることは "お勧めしません"。内部アクションによっては、このオプションがオンザフライで追加され、構成済みの値がオーバーライドされます。\_\_

(注: Windows では、パスの区切り記号は `;` です)。

#### `--target-dbscheme=<file>`

アップグレード先である *ターゲット* の dbscheme。 これを指定しない場合、最大アップグレード パスが構築されます

#### `--target-sha=<sha>`

```
          \[上級者向け] `--target-dbscheme` の代替手段で、dbscheme ファイルの代わりにターゲットの dbscheme の内部ハッシュを提供します。
```

#### `--[no-]allow-downgrades`

アップグレードがない場合に重要なダウングレードを含めます

### アップグレード クエリの評価を制御するためのオプション

#### `--[no-]tuple-counting`

```
          \[詳細設定] クエリ エバリュエーター ログの各評価ステップのタプル数を表示します。 
          `--evaluator-log` オプションを指定すると、コマンドで生成されるテキストベースのログと構造化された JSON ログの両方にタプル数が含まれます (これは、複雑な QL コードのパフォーマンス最適化に役立ちます)。
```

#### `--timeout=<seconds>`

```
          \[詳細設定] クエリ評価のタイムアウトの長さを秒単位で設定します。
```

タイムアウト機能は、複雑なクエリの評価に "かなり長い時間" がかかるケースを検出することを目的としています。 クエリの評価にかかる合計時間を制限するのは効果的な方法ではありません。 評価は、計算の個別に時間指定された各部分がタイムアウト内に完了する限り続行できます。 現在、これらの個別に時間指定された部分は、最適化されたクエリの "RA レイヤー" ですが、将来変更される可能性があります。

タイムアウトが指定されていない場合、またはタイムアウトに 0 が指定されている場合、タイムアウトは設定されません (デフォルトのタイムアウトが 5 分である [codeql test run](/ja/code-security/reference/code-scanning/codeql/codeql-cli-manual/test-run) を除きます)。

#### `-j, --threads=<num>`

この数のスレッドをクエリの評価に使用します。

既定値は 1 です。 0 を渡して、コンピューター上のコアごとに 1 つのスレッドを使用したり、*N* を渡して、*N* 個のコアを未使用のままにしたりすることができます (ただし、その場合でも、少なくとも 1 つのスレッドが使用されます)。

#### `--[no-]save-cache`

```
          \[[非推奨] \[Advanced] このフラグは何も行いません。
```

#### `--[no-]expect-discarded-cache`

```
          \[詳細設定] クエリの実行後にキャッシュが破棄されるという前提に基づいて、評価する述語とディスク キャッシュに書き込む内容を決定します。
```

#### `--[no-]keep-full-cache`

```
          \[詳細設定] 評価が完了した後、ディスク キャッシュをクリーンアップしません。
```

これにより、後で [codeql dataset cleanup](/ja/code-security/reference/code-scanning/codeql/codeql-cli-manual/dataset-cleanup) または [codeql database cleanup](/ja/code-security/reference/code-scanning/codeql/codeql-cli-manual/database-cleanup) を実行する場合に時間を節約できます。

#### `--max-disk-cache=<MB>`

中間クエリ結果のディスク キャッシュで使用できる最大容量を設定します。

このサイズが明示的に構成されていない場合、エバリュエーターによって、データセットのサイズとクエリの複雑さに基づき、"妥当な" 量のキャッシュ スペースを使うことが試みられます。 このデフォルトの使用量よりも高い制限を明示的に設定すると、追加のキャッシュが有効になり、後のクエリが高速化されます。

#### `--min-disk-free=<MB>`

```
          \[詳細設定] ファイル システムの空き領域の目標量を設定します。

          `--max-disk-cache` が指定されていない場合、ファイル システムの空き容量がこの値を下回ると、エバリュエーターによってディスク キャッシュの使用量を抑えることが試みられます。
```

#### `--min-disk-free-pct=<pct>`

```
          \[詳細設定] ファイル システムの空き領域の目標割合を設定します。

          `--max-disk-cache` が指定されていない場合、ファイル システムの空き容量がこの割合を下回ると、エバリュエーターはディスク キャッシュの使用量を抑えようとします。
```

#### `--external=<pred>=<file.csv>`

外部述語 *\<pred>* の行を含む CSV ファイル。
複数の `--external` オプションを指定できます。

#### `--xterm-progress=<mode>`

```
          \[詳細設定] xterm 制御シーケンスを使用して、QL 評価中に進行状況の追跡を表示するかどうかを制御します。 使用可能な値は次のとおりです。

          `no`: 高度な進捗を表示せず、シンプルな端末と仮定する。

          `auto` (デフォルト値): コマンドが適切なターミナルで実行されているかどうかを自動検出します。__

          `yes`: ターミナルで xterm 制御シーケンスを認識できると見なします。 この機能は、ターミナルの "サイズ" を自動検出できることに依存しており (Windows では実装されていません)、__ が指定された場合は無効になります。`-q`

          `25x80` (またはこれに類する値): `yes` と同様。ターミナルのサイズも明示的に指定します。 (`yes` とは異なり、これは Windows でも機能します)

          `25x80:/dev/pts/17` (またはこれに類する値): stderr とは "異なる" ターミナルにファンシーな進行状況を表示します。__ 主に内部テストに役立ちます。
```

### エバリュエーターに関する構造化ログの出力を制御するためのオプション

#### `--evaluator-log=<file>`

```
          \[詳細設定] 指定されたファイルにエバリュエーターのパフォーマンスに関する構造化ログを出力します。 このログ ファイルの形式は、予告なく変更される場合がありますが、2 つの改行文字 (デフォルト) または `--evaluator-log-minify` オプションが渡された場合は 1 つの改行文字で区切られた JSON オブジェクトのストリームになります。 このファイルのより安定した概要を生成するために `codeql generate log-summary <file>` を使用し、ファイルを直接解析しないようにしてください。 ファイルが既に存在している場合は上書きされます。
```

#### `--evaluator-log-minify`

```
          \[詳細設定] `--evaluator-log` オプションが渡された場合、このオプションも渡されると、生成される JSON ログのサイズは最小限に抑えられますが、人間が判読しにくいものになります。
```

### アップグレード プロセスの RAM 使用量を制御するためのオプション

#### `-M, --ram=<MB>`

クエリ エバリュエーターは、合計メモリ使用量をこの値未満に維持しようと努めます。 ただし、大規模なデータベースでは、メモリ不足の場合にディスクにスワップできるファイル バックド メモリマップにより、しきい値が超えられる可能性があります。

値は少なくとも 2,048 MB (メガバイト) にする必要があります。より小さい値を指定した場合も、透過的に切り上げられます。

### 共通オプション

#### `-h, --help`

このヘルプ テキストを表示します。

#### `-J=<opt>`

```
          \[詳細設定] コマンドを実行している JVM にオプションを指定します
```

(スペースを含むオプションは正しく処理されないことに注意してください)。

#### `-v, --verbose`

出力される進行状況メッセージの数を段階的に増やします。

#### `-q, --quiet`

出力される進行状況メッセージの数を段階的に減らします。

#### `--verbosity=<level>`

```
          \[詳細設定] 詳細レベルを、errors、warnings、progress、progress+、progress++、progress+++ のいずれかに明示的に設定します。 
          `-v` と `-q` がオーバーライドされます。
```

#### `--logdir=<dir>`

```
          \[詳細設定] タイムスタンプと実行中のサブコマンドの名前を含む生成された名前を使用して、指定されたディレクトリ内の 1 つまたは複数のファイルに詳細なログを書き込みます
```

(完全に制御できる名前でログ ファイルを書き込むには、代わりに `--log-to-stderr` を指定し、必要に応じて stderr をリダイレクトします)。

#### `--common-caches=<dir>`

```
          \[[詳細設定] ダウンロードした QL パックやコンパイル済みクエリ プランなど、CLI の複数の実行間に保持される、ディスク上でキャッシュされたデータの場所を制御します。 明示的に設定されない場合、デフォルトではユーザーのホーム ディレクトリに名前が付けられた `.codeql` ディレクトリになります。まだ存在しない場合は作成されます。

          `v2.15.2` 以降で使用できます。
```