ClickHouse / clickhouse-docs

Official documentation for ClickHouse
https://clickhouse.com/docs
Other
114 stars 265 forks source link

Auto generate Global Server Settings markdown from source #2732

Open Blargian opened 6 days ago

Blargian commented 6 days ago

Child of #2730. Auto generate Global Server Settings markdown from source.

Blargian commented 5 days ago

Using this SQL query to generate a list of server settings documented in the markdown but which are not found in ServerSettings.cpp

WITH
    'docs/en/operations/server-configuration-parameters/settings.md' AS doc_file,
    'src/Core/ServerSettings.cpp' AS cpp_file,
    settings_from_docs AS
    (
        WITH
            arrayJoin(extractAllGroups(raw_blob, '## (\\w+)(?:\\s[^\n]+)?\n\\s+((?:[^#]|#[^#]|##[^ ])+)')) AS g,
            g[1] AS name,
            replaceRegexpAll(replaceRegexpAll(g[2], '\n(Type|Default( value)?): [^\n]+\n', ''), '^\n+|\n+$', '') AS doc
        SELECT
            name,
            doc
        FROM file(doc_file, RawBLOB)
    ),
    settings_from_cpp AS
    (
        WITH
            extractGroups(line, 'DECLARE\\((\\w+), (\\w+), ([^,]+|\',\'), "(.+?)"') AS g,
            g[1] AS type,
            g[2] AS name,
            g[3] AS default,
            g[4] AS doc,
            g[5] AS important,
            g[6] AS suffix
        SELECT
            name,
            type,
            default,
            doc,
            important,
            suffix
        FROM file(cpp_file, LineAsString)
        WHERE match(line, '^\\s*DECLARE\\(')
    )
SELECT name
FROM settings_from_docs
WHERE name NOT IN (
    SELECT name
    FROM settings_from_cpp
) AS settings_not_from_server_settings_cpp

We get the following list:

    ┌─name──────────────────────────────────────┐
 1. │ auth_use_forwarded_address                │
 2. │ builtin_dictionaries_reload_interval      │
 3. │ compression                               │
 4. │ encryption                                │
 5. │ error_log                                 │
 6. │ custom_settings_prefixes                  │
 7. │ core_dump                                 │
 8. │ default_profile                           │
 9. │ dictionaries_config                       │
10. │ user_defined_executable_functions_config  │
11. │ dictionaries_lazy_load                    │
12. │ format_schema_path                        │
13. │ graphite                                  │
14. │ graphite_rollup                           │
15. │ http_server_default_response              │
16. │ hsts_max_age                              │
17. │ mlock_executable                          │
18. │ include_from                              │
19. │ interserver_listen_host                   │
20. │ interserver_http_port                     │
21. │ interserver_http_host                     │
22. │ interserver_https_port                    │
23. │ interserver_https_host                    │
24. │ interserver_http_credentials              │
25. │ listen_host                               │
26. │ listen_try                                │
27. │ listen_reuse_port                         │
28. │ listen_backlog                            │
29. │ logger                                    │
30. │ send_crash_reports                        │
31. │ macros                                    │
32. │ replica_group_name                        │
33. │ max_open_files                            │
34. │ merge_tree                                │
35. │ metric_log                                │
36. │ replicated_merge_tree                     │
37. │ openSSL                                   │
38. │ part_log                                  │
39. │ path                                      │
40. │ query_log                                 │
41. │ query_cache                               │
42. │ query_thread_log                          │
43. │ query_views_log                           │
44. │ text_log                                  │
45. │ trace_log                                 │
46. │ asynchronous_insert_log                   │
47. │ crash_log                                 │
48. │ backup_log                                │
49. │ query_masking_rules                       │
50. │ remote_servers                            │
51. │ timezone                                  │
52. │ tcp_port                                  │
53. │ tcp_port_secure                           │
54. │ mysql_port                                │
55. │ postgresql_port                           │
56. │ tmp_path                                  │
57. │ user_files_path                           │
58. │ user_scripts_path                         │
59. │ user_defined_path                         │
60. │ users_config                              │
61. │ wait_dictionaries_load_at_startup         │
62. │ zookeeper                                 │
63. │ use_minimalistic_part_header_in_zookeeper │
64. │ distributed_ddl                           │
65. │ access_control_path                       │
66. │ user_directories                          │
67. │ proxy                                     │
    └─name──────────────────────────────────────┘