Files
2026-07-03 09:48:05 +02:00

105 lines
3.6 KiB
SQL

WITH
'FormatFactorySettings.h' AS cpp_file,
settings_changes AS
(
SELECT
setting_name AS name,
'[' ||
arrayStringConcat(
arrayMap(
(i, x) -> '{' ||
'"id": "row-' || toString(i) || '",' ||
'"items": [' ||
'{"label": ' || toJSONString(toString(x.1)) || '},' ||
'{"label": ' || toJSONString(toString(x.2)) || '},' ||
'{"label": ' || toJSONString(toString(x.3)) || '}' ||
']' ||
'}',
arrayEnumerate(groupArray((version, default_value, comment))),
groupArray((version, default_value, comment))
),
', '
) ||
']' AS rows
FROM
(
SELECT
(arrayJoin(changes) AS change).1 AS setting_name,
version,
change.3 AS default_value,
change.4 AS comment
FROM system.settings_changes
WHERE setting_name LIKE 'output_format_%'
OR setting_name LIKE 'input_format_%'
OR setting_name LIKE 'format_%'
OR setting_name LIKE '%_input_format'
OR setting_name LIKE '%_output_format'
ORDER BY setting_name, version DESC
)
GROUP BY setting_name
),
settings_from_cpp AS
(
SELECT extract(line, 'DECLARE\\(\\w+, (\\w+),') AS name
FROM file(cpp_file, LineAsString)
WHERE match(line, '^\\s*DECLARE\\(')
),
setting_aliases AS
(
SELECT
alias_for,
groupArray(name) AS aliases
FROM system.settings
WHERE alias_for != ''
AND alias_for IN settings_from_cpp
GROUP BY alias_for
),
settings_with_change_history AS
(
SELECT
a.*,
b.*
FROM
system.settings AS a
LEFT OUTER JOIN settings_changes as b
ON a.name = b.name
WHERE a.name IN settings_from_cpp
),
main_content AS
(
SELECT format('## {} {} {} \n\n{}{}{}\n\n{}\n\n',
name,
'{#'||name||'}',
multiIf(tier == 'Experimental', '<ExperimentalBadge/>', tier == 'Beta', '<BetaBadge/>', ''),
if(sa.aliases IS NOT NULL AND length(sa.aliases) > 0,
'**Aliases**: ' || arrayStringConcat(arrayMap(x -> '`' || x || '`', sa.aliases), ', ') || '\n\n',
''),
if(type != '' AND default != '', format('<SettingsInfoBlock type="{}" default_value="{}" />', type, default), ''),
if(rows != '', printf('\n\n<VersionHistory rows={%s}/>\n\n', rows), ''),
trim(BOTH '\\n' FROM description))
FROM settings_with_change_history
LEFT JOIN setting_aliases sa ON settings_with_change_history.name = sa.alias_for
ORDER BY name
),
'' ||
'---
title: ''Format Settings''
sidebar_label: ''Format Settings''
slug: /operations/settings/formats
toc_max_heading_level: 2
description: ''Settings which control input and output formats.''
doc_type: ''reference''
---
import ExperimentalBadge from ''@theme/badges/ExperimentalBadge'';
import BetaBadge from ''@theme/badges/BetaBadge'';
import SettingsInfoBlock from ''@theme/SettingsInfoBlock/SettingsInfoBlock'';
import VersionHistory from ''@theme/VersionHistory/VersionHistory'';
<!-- Autogenerated -->
These settings are autogenerated from [source](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/FormatFactorySettings.h).
' AS prefix
SELECT prefix || (SELECT groupConcat(*) FROM main_content)
INTO OUTFILE 'settings-formats.md' TRUNCATE FORMAT LineAsString