ClickHouse/docs/ja/development/contrib.md
2024-11-18 11:58:58 +09:00

39 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
slug: /ja/development/contrib
sidebar_position: 73
sidebar_label: サードパーティライブラリ
description: 使用されているサードパーティライブラリの一覧
---
# 使用されているサードパーティライブラリ
ClickHouseは、他のデータベースへの接続や、ディスクからデータをロード/保存する際のデコード/エンコード、特定の専門的なSQL関数の実装など、さまざまな目的でサードパーティライブラリを利用しています。ターゲットシステムに存在するライブラリに依存せずに済むように、各サードパーティライブラリはClickHouseのソースツリーにGitサブモジュールとしてインポートされ、ClickHouseと共にコンパイルおよびリンクされます。サードパーティライブラリとそのライセンスの一覧は、以下のクエリで取得できます。
``` sql
SELECT library_name, license_type, license_path FROM system.licenses ORDER BY library_name COLLATE 'en';
```
この一覧にあるライブラリは、ClickHouseリポジトリの`contrib/`ディレクトリに位置するものです。ビルドオプションによっては、いくつかのライブラリはコンパイルされておらず、その結果、実行時に機能が利用できない場合があります。
[](https://sql.clickhouse.com?query_id=478GCPU7LRTSZJBNY3EJT3)
## サードパーティライブラリの追加と管理
各サードパーティライブラリは、ClickHouseリポジトリの`contrib/`ディレクトリ下の専用ディレクトリに配置される必要があります。外部コードのコピーをライブラリディレクトリに直接投入するのは避けてください。代わりに、Gitサブモジュールを作成して、外部の上流リポジトリからサードパーティコードを取得します。
ClickHouseが使用するすべてのサブモジュールは、`.gitmodule`ファイルに一覧されています。
- ライブラリがそのまま使用できる場合(デフォルトの場合)、直接上流リポジトリを参照できます。
- ライブラリにパッチを当てる必要がある場合、上流リポジトリを[GitHubのClickHouse組織](https://github.com/ClickHouse)にフォークしてください。
後者の場合、カスタムパッチをできるだけ上流のコミットから分離することを目指します。そのため、目的のブランチやタグから`ClickHouse/`というプレフィックス付きのブランチを作成します。例えば、`ClickHouse/2024_2`(ブランチ`2024_2`の場合)または`ClickHouse/release/vX.Y.Z`(タグ`release/vX.Y.Z`の場合)です。上流の開発ブランチ`master`、`main`、`dev`(すなわちフォークリポジトリ内で`ClickHouse/master`、`ClickHouse/main`、`ClickHouse/dev`というプレフィックスが付いたブランチ)を追跡しないでください。これらのブランチは動的であり、適切なバージョン管理が困難です。プレフィックスブランチにより、フォークへの上流リポジトリからのプルはカスタム`ClickHouse/`ブランチに影響を与えません。`contrib/`内のサブモジュールは、フォークされたサードパーティリポジトリの`ClickHouse/`ブランチのみを追跡する必要があります。
パッチは外部ライブラリの`ClickHouse/`ブランチに対してのみ適用されます。
以下の2つの方法があります
- サニタイザ修正のような新しい修正をフォークリポジトリの`ClickHouse/`プレフィックスブランチに対して行いたい場合。その場合、修正を`ClickHouse/`プレフィックス付きのブランチとしてプッシュし、カスタム追跡ブランチに対してPRを作成し、マージします。例えば、`ClickHouse/2024_2 <-- ClickHouse/fix-sanitizer-disaster`。
- サブモジュールを更新して以前のパッチを再適用する必要がある場合この場合古いPRを再作成するのは過剰です代わりに以前のコミットを新しい`ClickHouse/`ブランチ新しいバージョンに対応に単にチェリーピックしてください複数のコミットがあったPRのコミットをスクワッシュしても構いません理想的にはカスタムパッチを上流に再貢献し新しいバージョンでパッチを省略できるようにします
サブモジュールが更新されたらフォーク内の新しいハッシュを指すようにClickHouse内でサブモジュールを更新します
公式リポジトリを念頭に置いてサードパーティライブラリのパッチを作成し上流リポジトリへのパッチの再貢献を検討してくださいこれにより他のユーザーもパッチの恩恵を受けClickHouseチームのメンテナンス負担を軽減できます