5.0 KiB
slug | sidebar_position | sidebar_label | description |
---|---|---|---|
/ja/development/contrib | 73 | サードパーティライブラリ | 使用されているサードパーティライブラリの一覧 |
使用されているサードパーティライブラリ
ClickHouseは、他のデータベースへの接続や、ディスクからデータをロード/保存する際のデコード/エンコード、特定の専門的なSQL関数の実装など、さまざまな目的でサードパーティライブラリを利用しています。ターゲットシステムに存在するライブラリに依存せずに済むように、各サードパーティライブラリはClickHouseのソースツリーにGitサブモジュールとしてインポートされ、ClickHouseと共にコンパイルおよびリンクされます。サードパーティライブラリとそのライセンスの一覧は、以下のクエリで取得できます。
SELECT library_name, license_type, license_path FROM system.licenses ORDER BY library_name COLLATE 'en';
この一覧にあるライブラリは、ClickHouseリポジトリのcontrib/
ディレクトリに位置するものです。ビルドオプションによっては、いくつかのライブラリはコンパイルされておらず、その結果、実行時に機能が利用できない場合があります。
サードパーティライブラリの追加と管理
各サードパーティライブラリは、ClickHouseリポジトリのcontrib/
ディレクトリ下の専用ディレクトリに配置される必要があります。外部コードのコピーをライブラリディレクトリに直接投入するのは避けてください。代わりに、Gitサブモジュールを作成して、外部の上流リポジトリからサードパーティコードを取得します。
ClickHouseが使用するすべてのサブモジュールは、.gitmodule
ファイルに一覧されています。
- ライブラリがそのまま使用できる場合(デフォルトの場合)、直接上流リポジトリを参照できます。
- ライブラリにパッチを当てる必要がある場合、上流リポジトリをGitHubの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チームのメンテナンス負担を軽減できます。