These settings are available in system.merge_tree_settings and are autogenerated from the ClickHouse snapshot.
table_disk
This is table disk: the path/endpoint points to the table data, not the database data. Supported for object-storage disks whose metadata lives on the object storage itself (s3_plain, s3_plain_rewritable, web, web_index) and their cached variants. Encrypted variants are supported only over the writable s3_plain / s3_plain_rewritable disks, not over the read-only web / web_index disks.
table_readonly
If set to true, the table is in read-only mode.
All foreground operations that would modify the table are rejected: inserts, mutations, OPTIMIZE, and the data-mutating partition commands
(ATTACH/MOVE/DROP/DROP DETACHED/FETCH/REPLACE PARTITION, as well as MOVE PARTITION ... TO TABLE targeting this table). Operations
that do not modify the table’s data, such as FREEZE/UNFREEZE and FORGET PARTITION, remain allowed.
Background work that modifies table data is not scheduled: regular merges, TTL merges (DELETE/MOVE/recompression), recompression merges, background mutations,
and background part moves are all suppressed. As a consequence, a table with a TTL no longer reclaims or moves its expired data while this setting
is enabled. Cleanup is stopped, waiting for an active cleanup iteration to finish. The asynchronous loading of outdated (inactive) parts that a
writable table performs after start is suspended if it is still pending: no further part is loaded, including the loads that were already queued
but had not started, and the parts that remain unloaded are loaded once the setting is turned off again. The background workers are disabled
before the ALTER that enables the setting commits it, so no cleanup or part load starts on a table that is already durably read-only. Other
operations already in progress, including the loading of the parts that had already started, may finish.
The in-memory statistics cache still refreshes periodically. Set refresh_statistics_interval = 0 to disable this background task too.
Streaming reads (SELECT ... STREAM) keep working: the background job that serves their subscriptions only reads parts and runs on read-only tables as well.
The setting can always be toggled back with ALTER TABLE ... MODIFY SETTING table_readonly = 0 (or RESET SETTING). The background workers
that a read-only table never started are started at that point, so merges, mutations, moves, TTL, and cleanup resume without a server restart.
Outdated (inactive) parts are loaded before cleanup can remove empty parts that cover them. The table stays read-only for concurrent queries for
the whole duration of that ALTER: it accepts writes again only once the statement returned, not already when its metadata was committed.
This setting is not supported for ReplicatedMergeTree.