mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-14 02:12:21 +00:00
39 lines
5.0 KiB
Markdown
39 lines
5.0 KiB
Markdown
---
|
||
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チームのメンテナンス負担を軽減できます。
|