Skip to content
Opensource internals
  • Posts

Posts

All posts published on this site.

Everything published here, newest first.

ClickHouse Buffers the Query Log and Flushes It Into a Real MergeTree Table

Oct 19, 2026 17 min read Jay Hubbert

The query log is an in-memory queue drained every 7.5 seconds by a background thread that INSERTs into a lazily created MergeTree table.

ClickhouseInternalsSystem tablesObservabilityPerformance

Read more →

How Ctrl-C Reaches a Running Query: The Client's Cancel Packet

Oct 19, 2026 15 min read Jay Hubbert

Ctrl-C only flips an atomic counter in the client; the receive loop notices, writes a Cancel packet, and keeps draining packets so the connection stays in sync.

ClickhouseNetworkingProtocolInternalsCLI

Read more →

ClickHouse's JSON Type: A Column That Is a Tree of Subcolumns

Oct 19, 2026 17 min read Jay Hubbert

ClickHouse’s JSON type splits a document into per-path subcolumns, with typed paths, bounded dynamic paths, and a shared-data spill.

ClickhouseInternalsJSONTypesStorage

Read more →

ClickHouse Fuzzes Itself with Oracles: Two Runs, One MD5

Oct 19, 2026 14 min read Jay Hubbert

BuzzHouse pairs every random query with an oracle query and compares the two result files by MD5 to catch wrong answers, not just crashes.

ClickhouseTestingFuzzingInternals

Read more →

ClickHouse Chooses What Goes into PREWHERE by Cost per Rejected Row

Oct 19, 2026 17 min read Jay Hubbert

ClickHouse moves WHERE conditions into PREWHERE by cost per rejected row, and reads PREWHERE columns in separate read steps.

ClickhouseMergetreePrewhereQuery planningPerformance

Read more →

← Newer Page 15 of 41 Older →

© 2026 Jay Hubbert · Built with Hugo 0.168.0

RSS ·