clickhouse-c: librería minimalista de C para el protocolo nativo de ClickHouse

Fuentes: clickhouse-c: minimalist header-only C library for ClickHouse native protocol

clickhouse-c es una librería de código abierto de tipo header-only diseñada para el desarrollo de clientes en C que interactúan con el protocolo nativo de ClickHouse. Su objetivo principal es facilitar la integración de la librería dentro de extensiones de PostgreSQL, permitiendo el uso de arenas de memoria (palloc) y saltos de control (longjmp) sin depender de código específico de PostgreSQL. La librería se distribuye como un conjunto plano de cabeceras, donde cada archivo contiene tanto las declaraciones como la implementación, protegidas por macros de sentinela para evitar duplicaciones en múltiples unidades de traducción.

El núcleo de la librería, clickhouse.h, proporciona un decodificador de bloques puro que funciona sobre cualquier flujo de bytes proporcionado por el llamador, sin necesidad de TCP, compresión o dependencias de compilación más allá de libc. Esto permite leer consultas locales de ClickHouse directamente desde un pipe. Además, incluye cabeceras opcionales para protocolos TCP, compresión (LZ4 y ZSTD), I/O POSIX y OpenSSL, así como un cliente asíncrono que no realiza I/O interno, sino que es impulsado por el bucle de eventos del llamador. La librería soporta ClickHouse 23.3 y versiones posteriores, y ofrece ejemplos de uso completos, incluyendo la decodificación de bloques y la gestión de errores. Está diseñada para ser ligera y modular, permitiendo a los desarrolladores seleccionar solo las funcionalidades necesarias para su caso de uso específico.