Skip to content

Tags: donge/clickfs

Tags

v0.4.2

Toggle v0.4.2's commit message
fix(stream): enable tail-mode for partition files

v0.4.1

Toggle v0.4.1's commit message
release: v0.4.1 (revert v0.4.0 ladder)

The elastic tail-buffer ladder shipped in v0.4.0 was a net
regression. GNU tail's first read is 8 KiB; the ladder's first
rung materialized only ~125 bytes, so the read fell outside the
buffer and returned EIO -- 'tail file' produced zero output on
Linux. macOS BSD tail never reverse-preads a 2^63-sized file at
all, making the ladder dead code there.

Restoring v0.3.2 behavior: a single ORDER BY <pk> DESC LIMIT N
materialization. With the default N=10000 the buffer comfortably
covers GNU tail's 8 KiB read and 'tail file' works as expected
on Linux. macOS BSD tail limitation is platform-inherent.

-185 LOC vs v0.4.0; no behavior change vs v0.3.2.

v0.4.0

Toggle v0.4.0's commit message
v0.4.0 — elastic tail buffer (10 → 100 → 1000 → 10000)

v0.3.2

Toggle v0.3.2's commit message
v0.3.2 — drop head.ndjson, slim binary, internal refactors

v0.3.1

Toggle v0.3.1's commit message
release: v0.3.1

v0.3.0

Toggle v0.3.0's commit message
v0.3.0 — tail-mode

v0.2.0

Toggle v0.2.0's commit message
fix(build): re-gate mod fs behind the fuse feature

Commit 5470e52 (mount-time metadata prefetch) accidentally dropped
the #[cfg(feature = "fuse")] attribute on mod fs; while adding
the new mod readme;. The macOS CI job runs
`cargo check --no-default-features` to verify the crate compiles
on platforms without macFUSE installed; that broke as soon as the
fs module — which uses fuser:: types throughout — became
unconditional.

Local cargo build/test were green because the default feature set
includes fuse and pulls fuser in. The fix is the original gate;
the readme module stays unconditional since it only depends on
serde_json + the driver.

v0.1.1

Toggle v0.1.1's commit message
release: drop macos-x86_64 target

The macos-13 (Intel) GitHub runner pool is congested and adds 10+
minutes to every release. Intel macs can run the arm64 binary via
Rosetta 2; install.sh now detects this and uses macos-arm64.

- workflow: remove macos-x86_64 matrix entry
- install.sh: on Intel mac, warn and fall back to arm64 binary
- Cargo.toml: drop x86_64-apple-darwin binstall override

v0.1.0

Toggle v0.1.0's commit message
clickfs v0.1.0 — initial release

Mount a ClickHouse server as a read-only POSIX filesystem over FUSE.
Tested on Linux (libfuse) and macOS (macFUSE) against ClickHouse 25.3.

Highlights
- Browse databases as directories: /db/<database>/<table>/
- Per-table files: .schema, all.tsv, <partition_id>.tsv
- Streaming reads via async->sync mpsc bridge; strict-sequential per fd
- FOPEN_DIRECT_IO on data files to avoid kernel readahead surprises
- Read-only by design: every mutation returns EROFS
- HTTP-only ClickHouse driver with rustls
- Clean unmount on SIGTERM/SIGINT
- Cancel via dropped HTTP connection + server max_execution_time

Quality bar
- 11 unit tests, 26 end-to-end cases (tests/e2e.sh)
- CI: rustfmt + clippy -D warnings + tests on Linux and macOS
- 0 compiler warnings, 0 clippy warnings on stable Rust