Skip to content

feat: answer simple commands in sqb, upgrade fensu and accept SharedMergeTree - #1170

Merged
kvlonge merged 26 commits into
mainfrom
feat/combined-batch
Oct 20, 2026
Merged

kvlonge merged 26 commits into
mainfrom
feat/combined-batch

Conversation

@kvlonge

@kvlonge kvlonge commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Why

Three ready changes, combined so they share one CI run: Python-free sqb commands, the fensu 0.27 upgrade with dead-code enforcement, and ClickHouse Cloud SharedMergeTree engines being rejected.

Changes

  • sqb answers help, version, usage errors, init, skills, clean and rules list|show without Python (decided before any side effect; anything unusual still runs Python). Output, exit codes and compute logs match the Python CLI; Ctrl+C ends by SIGINT.
  • fensu 0.27: tuples over three elements become named structs (Python still sees the same tuples), crate layout fixes, and Python dead-code enforcement with ~350 lines removed.
  • ClickHouse: Shared* MergeTree engines are accepted like their MergeTree counterparts (best effort, untested on ClickHouse Cloud).
  • SQLite: opening several connections to a new database file at once could fail with A702 straight away, because SQLite reports the WAL switch as busy without waiting. The switch now takes the per-file writer gate (found as a CI flake; also on main).
  • CI: native-building verify jobs get 45 minutes and wheel builds 75, since the uncached native build alone now takes 14–21 minutes per job (caching: CHI-697).

Verification

  • Python-free commands: byte-identical parity over 27 argument lines; --help 97 → 11 ms, rules list 177 → 43 ms.
  • fensu: 0 faults; compiler differential unchanged; make test passed.
  • SharedMergeTree: validation and DDL tests.
  • Combined tree: native build, fensu check, compiler differential, the PRs' focused tests and make check-ci.

…hed capture

A write that reached a capture already marked complete built its rejection while still holding
the storage lock. Building it imports Python, which can release the GIL; the main thread then
pruning the logs waited for that lock while holding the GIL, so neither could continue and the
command never exited. The lock is now released before the rejection is raised.
…alling the job

run_sqb now gives each command ten minutes. A command still running then has its process group
aborted with Python's fault handler enabled, so the failing test reports every thread's stack,
and the group is killed. Standard input ends at once when a test passes none.
Shared* MergeTree engines now pass model validation like their
MergeTree counterparts. Replicated* engines stay rejected. Support is
best effort and untested on ClickHouse Cloud.
@kvlonge
kvlonge enabled auto-merge (squash) October 19, 2026 23:34
Opening several connections to a new file at once could fail with A702 at once: SQLite reports
the WAL switch as busy without waiting while another connection switches the same file. The
switch now goes through the per-file writer gate. Also give wheel builds 75 minutes, since the
Intel macOS build reached the 45-minute limit.
@kvlonge
kvlonge merged commit bb1c502 into main Oct 20, 2026
46 checks passed
@kvlonge
kvlonge deleted the feat/combined-batch branch October 20, 2026 04:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant