ClickHouse/clickhouse-c es un cliente C minimalista que implementa el formato nativo por wire sobre TCP. La biblioteca consta de un encabezado principal más encabezados opcionales posteriores para TCP, compresión, codecs y backends de E/S. Está diseñado para incrustarse dentro de extensiones de PostgreSQL, pero no contiene código específico de PostgreSQL. Incluir clickhouse.h solo proporciona un decodificador de bloques puro sobre chc_io suministrado por el llamador, usable para leer la salida FORMAT Native de clickhouse-local de un pipe sin TCP, compresión o dependencias de enlace más allá de libc.
La demostración rápida muestra decodificando una consulta clickhouse local sin TCP ni compresión. Una versión ejecutable de extremo a extremo está disponible en ejemplos/minimal_decode.c. La configuración del servidor requerida es output_format_native_encode_types_in_binary_format = 0; sin ella, el servidor emite etiquetas de tipo binario y chc_block_read devuelve CHC_ERR_TYPE.
El seguimiento sigue un modelo de unidad de traducción única: exactamente un unidad de traducción por consumidor define el macro CHC_IMPLEMENTATION e incluye encabezados, mientras que otras TU solo incluyen declaraciones públicas. Un helper malloc/realloc/free de stdlib está disponible detrás de CHC_PROVIDE_STDLIB_ALLOC. Para wiring palloc/repalloc/pfree dentro de extensiones de PostgreSQL, ver pg_clickhouse o pg_stat_ch.
Los encabezados incluyen clickhouse.h (núcleo), clickhouse-client.h (bucle de paquetes TCP), clickhouse-async.h (cliente sin i/o), clickhouse-compression.h (marcos comprimidos, adaptadores LZ4 & ZSTD), clickhouse-posix-io.h (lectura/escritura bloqueante), y clickhouse-openssl.h (soporte SSL). Cada encabezado posterior es independiente. Las pruebas usan test.sh con CFLAGS y LDFLAGS para configuración.
Fuente: Hacker News · Resumido por HeadlinesBriefing