ClickHouse/clickhouse-c एक minimalist C क्लाइंट है जो TCP over Native wire format लागू करता है। पुस्तकालय एक कोर हेडर प्लस वैकल्पिक अनुवर्ती हेडर के लिए बनाया गया है TCP, compression, codecs, और I/O backends। इसे PostgreSQL extensions के भीतर एम्बेड करने के लिए डिज़ाइन किया गया है लेकिन इसमें कोई PostgreSQL-विशिष्ट कोड नहीं है। clickhouse.h शामिल करने से एक शुद्ध block decoder मिलता है जिसे caller-supplied chc_io के साथ उपयोग किया जा सकता है, TCP के बिना, compression के बिना, libc के अलावा कोई link-time निर्भरता के साथ clickhouse-local के FORMAT Native output पढ़ने के लिए।
क्विकस्टार्ट एक clickhouse local query बिना TCP या compression के डिकोडिंग का प्रदर्शन करता है। examples/minimal_decode.c में एंड-टू-एंड संस्करण उपलब्ध है। आवश्यक सर्वर सेटिंग output_format_native_encode_types_in_binary_format = 0 है; बिना इसे, सर्वर बाइनरी प्रकार के टैग उत्सर्जित करता है और chc_block_read CHC_ERR_TYPE लौटाता है।
एकीकरण एकल-ट्रांसलेशन-यूनिट मॉडल का अनुसरण करता है: प्रति उपभोक्ता ठीक एक translation unit CHC_IMPLEMENTATION मैक्रो परिभाषित करता है और हेडर शामिल करता है, जबकि अन्य TU केवल सार्वजनिक घोषणाओं को शामिल करते हैं। CHC_PROVIDE_STDLIB_ALLOC के पीछे एक stdlib malloc/realloc/free helper उपलब्ध है। PostgreSQL extensions के भीतर palloc/repalloc/pfree wiring के लिए, pg_clickhouse या pg_stat_ch देखें।
हेडर में clickhouse.h (कोर), clickhouse-client.h (TCP पैकेट लूप), clickhouse-async.h (ioless client), clickhouse-compression.h (compressed frames, LZ4 & ZSTD एडाप्टर), clickhouse-posix-io.h (ब्लॉकिंग read/write), और clickhouse-openssl.h (SSL समर्थन) शामिल हैं। प्रत्येक अनुवर्ती हेडर स्वतंत्र है। test.sh के साथ CFLAGS और LDFLAGS के लिए configuration के साथ परीक्षण किया गया है।
स्रोत: Hacker News · HeadlinesBriefing द्वारा सारांशित