HeadlinesBriefing HeadlinesBriefing.com

GitHub ClickHouse/clickhouse-c: ヘッダーのみCクライアント

Hacker News •
×

ClickHouse/clickhouse-cはTCP over Native wire formatを実装する最小限のCクライアントです。ライブラリはコアヘッダー1つと、TCP、圧縮、codec、I/Oバックエンド用のオプションのフォローヘッダーで構成されています。PostgreSQL拡張内への埋め込みを目的として設計されていますが、PostgreSQL固有のコードは含まれていません。clickhouse.hだけを含めると、呼び出し元が供給するchc_ioを使用した純粋なブロックデコーダが提供され、TCP、圧縮、libc以外のリンク時依存関係なしにclickhouse-localのFORMAT Native出力をパイプから読み取ることができます。

クイックスタートはTCPや圧縮なしでclickhouse localクエリのデコーディングをデモンストレーションします。examples/minimal_decode.cにエンドツーエンドで動作するバージョンが用意されています。必要なサーバー設定はoutput_format_native_encode_types_in_binary_format = 0です。これを設定しないと、サーバーはバイナリタイプのタグを発し、chc_block_readはCHC_ERR_TYPEを返します。

統合はシングル翻訳単位モデルに従います:消費者1つにつきちょうど1つの翻訳単元でCHC_IMPLEMENTATIONマクロを定義しヘッダーをインクルードし、他のTUはパブリック宣言のみをインクルードします。stdlib malloc/realloc/freeヘルパーはCHC_PROVIDE_STDLIB_ALLOCの背後にあります。PostgreSQL拡張内でのpalloc/repalloc/pfreeのワイヤリングについては、pg_clickhouseまたはpg_stat_chを参照してください。

ヘッダーにはclickhouse.h(コア)、clickhouse-client.h(TCPパケットループ)、clickhouse-async.h(ioless client)、clickhouse-compression.h(圧縮フレーム、LZ4 & ZSTDアダプター)、clickhouse-posix-io.h(ブロッキング読み書き)、およびclickhouse-openssl.h(SSLサポート)が含まれます。各フォローヘッダーは独立しています。test.shでCFLAGSとLDFLAGSの設定でテストされています。

出典: Hacker News · 要約:HeadlinesBriefing