Blog· Tested on ClickHouse 26.4

A system table that documents table engines

system.functions grew syntax, arguments and examples; system.table_engines is still just a list of capability flags. I asked for the syntax and parameters of each engine to live there too.

Source: github.com

system.functions now carries a description, syntax, arguments and examples per function, but system.table_engines is only capability flags. I wanted the syntax and parameters of each engine available from the server you are connected to, so that a client can complete an ENGINE = clause or offer console help without scraping the website. I opened the issue with “why not introduce table engines?”, not realising the table already existed, and sketched name, family, syntax and a parameters map.

The first reply, the same day, corrected me and gave the answer: keep the existing table and add a field with short documentation. That was the whole discussion. There is no PR; the issue has the labels feature, comp-system-table and external, and is open.

On 26.4 nothing has changed. The table has 74 engines and only these columns:

DESCRIBE system.table_engines;
-- name, supports_settings, supports_skipping_indices, supports_projections, supports_sort_order,
-- supports_ttl, supports_replication, supports_deduplication, supports_parallel_insert

The flags are still useful for questions like which engines accept a skipping index:

SELECT name FROM system.table_engines WHERE supports_skipping_indices ORDER BY name;

The request is small and waiting for someone to write the docstrings. The related gap in system.functions is the other side of the same completeness question.

feature-requestsystem-tablesdocumentation

Discussion

Comments live in GitHub Discussions. Sign in with GitHub to join in.