ClickHouse/clickhouse-c عميل C minimalist ينفذ Format Native wire over TCP. تتكون المكتبة من رأس رئيسي واحد بالإضافة إلى رؤوس تالية اختيارية لـ TCP، compression، codecs، و backends I/O. تم تصميمها للدمج داخل تمديدات PostgreSQL ولكنها لا تحتوي على كود PostgreSQL محدد. يتضمن inclusion clickhouse.h وحدهDecoder كتلة نقي على chc_io المقدم من قبل المستدعي، قابل للقراءة إخراج FORMAT Native من clickhouse-local من خلال أنبوب دون TCP، compression، أو تبعيات وقت الربط باستثناء libc.
يُظهر quickstart decoding查询 clickhouse local بدون TCP أو compression. تتوفر نسخة end-to-end قابلة للتشغيل في examples/minimal_decode.c. إعداد الخادم المطلوب هو output_format_native_encode_types_in_binary_format = 0؛ بدونها، يصدر الخادم علامات نوع ثنائية ويعيد chc_block_read CHC_ERR_TYPE.
يتبع التكامل نموذج وحدة ترجمة واحدة: وحدة ترجمة واحدة بالضبط لكل مستهلك تحدد macro CHC_IMPLEMENTATION وتدرج الرؤوس، بينما تشمل TU الأخرى فقط الإعلانات العامة. helper malloc/realloc/free من stdlib متاح خلف CHC_PROVIDE_STDLIB_ALLOC. للـ wiring palloc/repalloc/pfree داخل تمديدات PostgreSQL، راجع pg_clickhouse أو pg_stat_ch.
تتضمن الرؤوس clickhouse.h (النواة)، clickhouse-client.h (حلقة حزم TCP), clickhouse-async.h (عميل بدون i/o), clickhouse-compression.h (إطارات مضغوطة، مُوَسِّعات LZ4 & ZSTD), clickhouse-posix-io.h (قراءة/كتابة كتلية), و clickhouse-openssl.h (دعم SSL). كل رأس لاحق مستقل. الاختبارات تستخدم test.sh مع CFLAGS و LDFLAGS للتكوين.
المصدر: Hacker News · لخّصه HeadlinesBriefing