Skip to content

Commit 266c066

Browse files
authored
Merge pull request #3957 from Blargian/autogenerate_conditional
autogenerate conditional functions
2 parents e2ef316 + 1a07e63 commit 266c066

File tree

3 files changed

+49
-3
lines changed

3 files changed

+49
-3
lines changed

contribute/autogenerated-documentation-from-source.md

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
# Generating documentation from source code
22

33
A [script in our docs repo](https://github.com/ClickHouse/clickhouse-docs/blob/main/scripts/settings/autogenerate-settings.sh)
4-
extracts setting names, descriptions, default values, etc. from ClickHouse's source code.
4+
is used to run SQL queries which generate markdown documentation from the system tables in ClickHouse and insert it
5+
into the appropriate pages before build time of the docs.
56

67
## Session settings
78

89
Documentation for session settings is autogenerated from source file [`src/Core/Settings.cpp`](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).
10+
[SQL](../scripts/settings/session-settings.sql)
911

1012
## Format settings
1113

1214
Documentation for session settings is autogenerated from source file [`src/Core/FormatFactorySettings.h`](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/FormatFactorySettings.h).
15+
[SQL](../scripts/settings/format-settings.sql)
1316

1417
## Server settings
1518

@@ -43,14 +46,33 @@ If it is, then please edit the setting description in the source code documentat
4346
in [`ServerSettings.cpp`](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/ServerSettings.cpp)
4447
or else edit `_server_settings_outside_source.md`.**
4548

49+
[SQL](../scripts/settings/global-server-settings.sql)
50+
4651
## MergeTree settings
4752

4853
Documentation for MergeTree settings is autogenerated from [MergeTreeSettings.cpp](https://github.com/ClickHouse/ClickHouse/blob/master/src/Storages/MergeTree/MergeTreeSettings.cpp)
4954

55+
[SQL](../scripts/settings/mergetree-settings.sql)
56+
5057
## System tables
5158

52-
TO DO. ETA April.
59+
TO DO
5360

5461
## Functions
5562

56-
TO DO. ETA April/May.
63+
Documentation for functions is autogenerated from the documentation in system tables (`system.functions`) which is
64+
registered along with the function registration in the C++ code.
65+
66+
To add a new page:
67+
- add SQL to generate the markdown from system tables
68+
- update `autogenerate-settings.sh` in the section which specifies which markdown file contents to
69+
copy to which file in between the `<!--AUTOGENERATED_START-->` and `<!--AUTOGENERATED_END-->`
70+
71+
The following pages are autogenerated from the source code for functions:
72+
- [Arithmetic](/sql-reference/functions/arithmetic-functions) ([SQL](../scripts/settings/arithmetic-functions.sql))
73+
- [Arrays](/sql-reference/functions/array-functions) ([SQL](../scripts/settings/array-functions.sql))
74+
- [Bit](/sql-reference/functions/bit-functions) ([SQL](../scripts/settings/bit-functions.sql))
75+
- [Bitmap](/sql-reference/functions/bitmap-functions) ([SQL](../scripts/settings/bitmap-functions.sql))
76+
- [Comparison](/sql-reference/functions/comparison-functions) ([SQL](../scripts/settings/comparison-functions.sql))
77+
- [Conditional](/sql-reference/functions/conditional-functions) ([SQL](../scripts/settings/conditional-functions.sql))
78+

scripts/settings/autogenerate-settings.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,7 @@ insert_src_files=(
318318
"bit-functions.md"
319319
"bitmap-functions.md"
320320
"comparison-functions.md"
321+
"conditional-functions.md"
321322
)
322323
insert_dest_files=(
323324
"docs/about-us/beta-and-experimental-features.md"
@@ -326,6 +327,7 @@ insert_dest_files=(
326327
"docs/sql-reference/functions/bit-functions.md"
327328
"docs/sql-reference/functions/bitmap-functions.md"
328329
"docs/sql-reference/functions/comparison-functions.md"
330+
"docs/sql-reference/functions/conditional-functions.md"
329331
)
330332
echo "[$SCRIPT_NAME] Inserting generated markdown content between <!-- AUTOGENERATED_START --> <!-- AUTOGENERATED_END --> tags"
331333
for i in "${!insert_src_files[@]}"; do
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
WITH conditional_functions AS (
2+
SELECT
3+
name,
4+
introduced_in,
5+
syntax,
6+
arguments,
7+
returned_value,
8+
examples
9+
FROM system.functions WHERE categories='Conditional' ORDER BY name ASC
10+
)
11+
SELECT
12+
format(
13+
'{}{}{}{}{}{}',
14+
'## ' || name || ' ' || printf('{#%s}', name) || '\n\n',
15+
'Introduced in: v'||introduced_in||'\n\n',
16+
'**Syntax**\n\n'||printf('```sql\n%s\n```', syntax)||'\n\n',
17+
if(empty(arguments), '**Arguments**\n\n- None.\n', '**Arguments**\n\n'||arguments||'\n'),
18+
'**Returned value**\n\n'||trim(returned_value)||'\n\n',
19+
'**Examples**\n\n'||examples||'\n'
20+
)
21+
FROM conditional_functions
22+
INTO OUTFILE 'conditional-functions.md' TRUNCATE FORMAT LineAsString

0 commit comments

Comments
 (0)