From 5721370fdf1bfb64140a2f9b1131405413cca6d9 Mon Sep 17 00:00:00 2001
From: Shaun Struwig <41984034+Blargian@users.noreply.github.com>
Date: Wed, 1 Oct 2025 15:51:05 +0200
Subject: [PATCH] Update session and format settings scripts to use system
 tables and not source code files
---
 .gitignore                                    |  2 +-
 ...autogenerated-documentation-from-source.md | 20 +++++++++----------
 package.json                                  |  4 ++--
 .../autogenerate-settings.sh                  |  0
 .../beta-settings.sql                         |  0
 .../experimental-settings.sql                 |  0
 .../format-settings.sql                       | 12 +++--------
 .../generate-functions.sql                    |  0
 .../global-server-settings.sql                |  0
 .../mergetree-settings.sql                    |  0
 .../session-settings.sql                      | 11 ++--------
 11 files changed, 18 insertions(+), 31 deletions(-)
 rename scripts/{settings => autogenerated-docs}/autogenerate-settings.sh (100%)
 rename scripts/{settings => autogenerated-docs}/beta-settings.sql (100%)
 rename scripts/{settings => autogenerated-docs}/experimental-settings.sql (100%)
 rename scripts/{settings => autogenerated-docs}/format-settings.sql (71%)
 rename scripts/{settings => autogenerated-docs}/generate-functions.sql (100%)
 rename scripts/{settings => autogenerated-docs}/global-server-settings.sql (100%)
 rename scripts/{settings => autogenerated-docs}/mergetree-settings.sql (100%)
 rename scripts/{settings => autogenerated-docs}/session-settings.sql (88%)
diff --git a/.gitignore b/.gitignore
index 04109a1ac5f..9c757652cec 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,7 +37,7 @@ active_links.txt
 active_links.json
 
 # Files used by scripts to autogenerate settings and do spellcheck
-scripts/settings/tmp
+scripts/autogenerated-docs/tmp
 
 # Files whose content gets autogenerated
 docs/cloud/manage/api/invitations-api-reference.md
diff --git a/contribute/autogenerated-documentation-from-source.md b/contribute/autogenerated-documentation-from-source.md
index 846f10734b2..a92e8532376 100644
--- a/contribute/autogenerated-documentation-from-source.md
+++ b/contribute/autogenerated-documentation-from-source.md
@@ -7,12 +7,12 @@ into the appropriate pages before build time of the docs.
 ## Session settings
 
 Documentation for session settings is autogenerated from source file [`src/Core/Settings.cpp`](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).
-[SQL](../scripts/settings/session-settings.sql)
+[SQL](../scripts/autogenerated-docs/session-settings.sql)
 
 ## Format settings
 
 Documentation for session settings is autogenerated from source file [`src/Core/FormatFactorySettings.h`](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/FormatFactorySettings.h).
-[SQL](../scripts/settings/format-settings.sql)
+[SQL](../scripts/autogenerated-docs/format-settings.sql)
 
 ## Server settings
 
@@ -46,13 +46,13 @@ If it is, then please edit the setting description in the source code documentat
 in [`ServerSettings.cpp`](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/ServerSettings.cpp) 
 or else edit `_server_settings_outside_source.md`.**
 
-[SQL](../scripts/settings/global-server-settings.sql)
+[SQL](../scripts/autogenerated-docs/global-server-settings.sql)
 
 ## MergeTree settings
 
 Documentation for MergeTree settings is autogenerated from [MergeTreeSettings.cpp](https://github.com/ClickHouse/ClickHouse/blob/master/src/Storages/MergeTree/MergeTreeSettings.cpp)
 
-[SQL](../scripts/settings/mergetree-settings.sql)
+[SQL](../scripts/autogenerated-docs/mergetree-settings.sql)
 
 ## System tables
 
@@ -69,10 +69,10 @@ To add a new page:
   copy to which file in between the `` and ``
 
 The following pages are autogenerated from the source code for functions:
-- [Arithmetic](/sql-reference/functions/arithmetic-functions) ([SQL](../scripts/settings/arithmetic-functions.sql))
-- [Arrays](/sql-reference/functions/array-functions) ([SQL](../scripts/settings/array-functions.sql))
-- [Bit](/sql-reference/functions/bit-functions) ([SQL](../scripts/settings/bit-functions.sql))
-- [Bitmap](/sql-reference/functions/bitmap-functions) ([SQL](../scripts/settings/bitmap-functions.sql))
-- [Comparison](/sql-reference/functions/comparison-functions) ([SQL](../scripts/settings/comparison-functions.sql))
-- [Conditional](/sql-reference/functions/conditional-functions) ([SQL](../scripts/settings/conditional-functions.sql))
+- [Arithmetic](/sql-reference/functions/arithmetic-functions) ([SQL](../scripts/autogenerated-docs/arithmetic-functions.sql))
+- [Arrays](/sql-reference/functions/array-functions) ([SQL](../scripts/autogenerated-docs/array-functions.sql))
+- [Bit](/sql-reference/functions/bit-functions) ([SQL](../scripts/autogenerated-docs/bit-functions.sql))
+- [Bitmap](/sql-reference/functions/bitmap-functions) ([SQL](../scripts/autogenerated-docs/bitmap-functions.sql))
+- [Comparison](/sql-reference/functions/comparison-functions) ([SQL](../scripts/autogenerated-docs/comparison-functions.sql))
+- [Conditional](/sql-reference/functions/conditional-functions) ([SQL](../scripts/autogenerated-docs/conditional-functions.sql))
 
diff --git a/package.json b/package.json
index f2cee1d5b44..303f08d6add 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
   "private": true,
   "config": {
     "clickhouse_repo_folders": "docs/en/development docs/en/engines docs/en/interfaces docs/en/operations docs/en/sql-reference",
-    "autogen_needed_files": "src/Core/FormatFactorySettings.h src/Core/Settings.cpp CHANGELOG.md docs/en/operations/server-configuration-parameters/_server_settings_outside_source.md"
+    "autogen_needed_files": "CHANGELOG.md docs/en/operations/server-configuration-parameters/_server_settings_outside_source.md"
   },
   "scripts": {
     "build": "yarn copy-clickhouse-repo-docs && yarn check-markdown && yarn generate-changelog && yarn autogenerate-settings && yarn autogenerate-table-of-contents && yarn build-swagger && scripts/sed_links.sh && yarn build-docs",
@@ -15,7 +15,7 @@
     "serve": "docusaurus serve",
     "build-swagger": "yarn redocly build-docs https://api.clickhouse.cloud/v1 --output build/cloud/manage/api/swagger.html",
     "prep-from-local": "bash ./scripts/copy-clickhouse-repo-docs.sh -l $1",
-    "autogenerate-settings": "bash ./scripts/settings/autogenerate-settings.sh",
+    "autogenerate-settings": "bash scripts/autogenerated-docs/autogenerate-settings.sh",
     "autogenerate-table-of-contents": "bash ./scripts/autogenerate-table-of-contents.sh",
     "generate-changelog": "bash ./scripts/generate-changelog.sh",
     "build-docs": "bash ./scripts/build.sh",
diff --git a/scripts/settings/autogenerate-settings.sh b/scripts/autogenerated-docs/autogenerate-settings.sh
similarity index 100%
rename from scripts/settings/autogenerate-settings.sh
rename to scripts/autogenerated-docs/autogenerate-settings.sh
diff --git a/scripts/settings/beta-settings.sql b/scripts/autogenerated-docs/beta-settings.sql
similarity index 100%
rename from scripts/settings/beta-settings.sql
rename to scripts/autogenerated-docs/beta-settings.sql
diff --git a/scripts/settings/experimental-settings.sql b/scripts/autogenerated-docs/experimental-settings.sql
similarity index 100%
rename from scripts/settings/experimental-settings.sql
rename to scripts/autogenerated-docs/experimental-settings.sql
diff --git a/scripts/settings/format-settings.sql b/scripts/autogenerated-docs/format-settings.sql
similarity index 71%
rename from scripts/settings/format-settings.sql
rename to scripts/autogenerated-docs/format-settings.sql
index fbe197a1d5d..3785643c017 100644
--- a/scripts/settings/format-settings.sql
+++ b/scripts/autogenerated-docs/format-settings.sql
@@ -1,11 +1,4 @@
 WITH
-    'FormatFactorySettings.h' AS cpp_file,
-    settings_from_cpp AS
-    (
-    SELECT extract(line, 'DECLARE\\(\\w+, (\\w+),') AS name
-    FROM file(cpp_file, LineAsString)
-    WHERE match(line, '^\\s*DECLARE\\(')
-    ),
     main_content AS
     (
     SELECT format('## {} {} {}  \n\n{}\n\n{}\n\n',
@@ -14,7 +7,8 @@ WITH
     multiIf(tier == 'Experimental', '', tier == 'Beta', '', ''),
     if(type != '' AND default != '', format('', type, default), ''),
     trim(BOTH '\\n' FROM description))
-    FROM system.settings WHERE name IN settings_from_cpp
+    FROM system.settings
+    WHERE type = 'format_setting' AND is_obsolete = 0
     ORDER BY name
     ),
     '' ||
@@ -33,7 +27,7 @@ import SettingsInfoBlock from ''@theme/SettingsInfoBlock/SettingsInfoBlock'';
 import VersionHistory from ''@theme/VersionHistory/VersionHistory'';
 
 
-These settings are autogenerated from [source](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/FormatFactorySettings.h).
+These settings are autogenerated from system tables.
 
 ' AS prefix
 SELECT prefix || (SELECT groupConcat(*) FROM main_content)
diff --git a/scripts/settings/generate-functions.sql b/scripts/autogenerated-docs/generate-functions.sql
similarity index 100%
rename from scripts/settings/generate-functions.sql
rename to scripts/autogenerated-docs/generate-functions.sql
diff --git a/scripts/settings/global-server-settings.sql b/scripts/autogenerated-docs/global-server-settings.sql
similarity index 100%
rename from scripts/settings/global-server-settings.sql
rename to scripts/autogenerated-docs/global-server-settings.sql
diff --git a/scripts/settings/mergetree-settings.sql b/scripts/autogenerated-docs/mergetree-settings.sql
similarity index 100%
rename from scripts/settings/mergetree-settings.sql
rename to scripts/autogenerated-docs/mergetree-settings.sql
diff --git a/scripts/settings/session-settings.sql b/scripts/autogenerated-docs/session-settings.sql
similarity index 88%
rename from scripts/settings/session-settings.sql
rename to scripts/autogenerated-docs/session-settings.sql
index 79d81ae569f..ea50d0f556d 100644
--- a/scripts/settings/session-settings.sql
+++ b/scripts/autogenerated-docs/session-settings.sql
@@ -1,5 +1,4 @@
 WITH
-    'Settings.cpp' AS cpp_file,
     settings_changes AS
     (
         SELECT
@@ -34,12 +33,6 @@ WITH
         )
         GROUP BY setting_name
     ),
-    settings_from_cpp AS
-    (
-        SELECT extract(line, 'DECLARE(?:_WITH_ALIAS)?\\(\\w+, (\\w+),') AS name
-        FROM file(cpp_file, LineAsString)
-        WHERE match(line, '^\\s*DECLARE(?:_WITH_ALIAS)?\\(')
-    ),
     settings_with_change_history AS
     (
         SELECT
@@ -49,7 +42,7 @@ WITH
             system.settings AS a
         LEFT OUTER JOIN settings_changes as b
         ON a.name = b.name
-        WHERE name IN settings_from_cpp
+        WHERE a.is_obsolete = 0
     ),
     main_content AS
     (
@@ -89,7 +82,7 @@ import SettingsInfoBlock from \'@theme/SettingsInfoBlock/SettingsInfoBlock\';
 import VersionHistory from \'@theme/VersionHistory/VersionHistory\';
 
 
-All below settings are also available in table [system.settings](/docs/operations/system-tables/settings). These settings are autogenerated from [source](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).
+All below settings are also available in table [system.settings](/docs/operations/system-tables/settings). These settings are autogenerated from system tables.
 
 ' AS prefix
 SELECT prefix || (SELECT groupConcat(*) FROM main_content)