HeadlinesBriefing HeadlinesBriefing.com

GitHub ClickHouse/clickhouse-c: Cliente C Header-Only

Hacker News •
×

ClickHouse/clickhouse-c é um cliente C minimalista que implementa o formato nativo wire over TCP. A biblioteca consiste em um cabeçalho principal mais cabeçalhos opcionais posteriores para TCP, compression, codecs e backends I/O. Foi projetado para incorporação dentro de extensões PostgreSQL, mas não contém código específico de PostgreSQL. Incluindo clickhouse.h sozinho fornece um decodificador de bloco puro sobre chc_io fornecido pelo chamador, utilizável para ler a saída FORMAT Native de clickhouse-local de um pipe sem TCP, compression, ou dependências de link além de libc.

A demonstração rápida demonstra decodificando uma consulta clickhouse local sem TCP ou compressão. Uma versão end-to-end executável está disponível em examples/minimal_decode.c. A configuração do servidor necessária é output_format_native_encode_types_in_binary_format = 0; sem ela, o servidor emite tags de tipo binário e chc_block_read retorna CHC_ERR_TYPE.

A integração segue um modelo de unidade de tradução única: exatamente um unidade de tradução por consumidor define o macro CHC_IMPLEMENTATION e inclui cabeçalhos, enquanto outras TU incluí apenas declarações públicas. Um helper malloc/realloc/free de stdlib está disponível atrás de CHC_PROVIDE_STDLIB_ALLOC. Para wiring palloc/repalloc/pfree dentro de extensões PostgreSQL, veja pg_clickhouse ou pg_stat_ch.

Os cabeçalhos incluem clickhouse.h (núcleo), clickhouse-client.h (loop de pacotes TCP), clickhouse-async.h (client sem i/o), clickhouse-compression.h (quadros comprimidos, adaptadores LZ4 & ZSTD), clickhouse-posix-io.h (leitura/escrita bloqueante), e clickhouse-openssl.h (suporte SSL). Cada cabeçalho seguinte é independente. Os testes usam test.sh com CFLAGS e LDFLAGS para configuração.

Fonte: Hacker News · Resumido por HeadlinesBriefing