diff --git a/docs/en/sql-reference/functions/index.md b/docs/en/sql-reference/functions/index.md
index ddcb7990aec..7cceec889bd 100644
--- a/docs/en/sql-reference/functions/index.md
+++ b/docs/en/sql-reference/functions/index.md
@@ -74,9 +74,10 @@ A function configuration contains the following settings:
- `name` - a function name.
- `command` - script name to execute or command if `execute_direct` is false.
-- `argument` - argument description with the `type`, and optional `name` of an argument. Each argument is described in a separate setting. Specifying name is necessary if argument names are part of serialization for user defined function format like [Native](../../interfaces/formats.md#native) or [JSONEachRow](../../interfaces/formats.md#jsoneachrow).
+- `argument` - argument description with the `type`, and optional `name` of an argument. Each argument is described in a separate setting. Specifying name is necessary if argument names are part of serialization for user defined function format like [Native](../../interfaces/formats.md#native) or [JSONEachRow](../../interfaces/formats.md#jsoneachrow). Default argument name value is `c` + argument_number.
- `format` - a [format](../../interfaces/formats.md) in which arguments are passed to the command.
- `return_type` - the type of a returned value.
+- `return_name` - name of retuned value. Specifying return name is necessary if return name is part of serialization for user defined function format like [Native](../../interfaces/formats.md#native) or [JSONEachRow](../../interfaces/formats.md#jsoneachrow). Optional. Default value is `result`.
- `type` - an executable type. If `type` is set to `executable` then single command is started. If it is set to `executable_pool` then a pool of commands is created.
- `max_command_execution_time` - maximum execution time in seconds for processing block of data. This setting is valid for `executable_pool` commands only. Optional. Default value is `10`.
- `command_termination_timeout` - time in seconds during which a command should finish after its pipe is closed. After that time `SIGTERM` is sent to the process executing the command. Optional. Default value is `10`.
@@ -172,6 +173,58 @@ Result:
└─────────────────────────┘
```
+Creating `test_function_sum_json` with named arguments and format [JSONEachRow](../../interfaces/formats.md#jsoneachrow) using XML configuration.
+File test_function.xml.
+```xml
+
+ executable
+ test_function_sum_json
+ UInt64
+ result_name
+
+ UInt64
+ argument_1
+
+
+ UInt64
+ argument_2
+
+ JSONEachRow
+ test_function_sum_json.py
+
+```
+
+Script file inside `user_scripts` folder `test_function_sum_json.py`.
+
+```python
+#!/usr/bin/python3
+
+import sys
+import json
+
+if __name__ == '__main__':
+ for line in sys.stdin:
+ value = json.loads(line)
+ first_arg = int(value['argument_1'])
+ second_arg = int(value['argument_2'])
+ result = {'result_name': first_arg + second_arg}
+ print(json.dumps(result), end='\n')
+ sys.stdout.flush()
+```
+
+Query:
+
+``` sql
+SELECT test_function_sum_json(2, 2);
+```
+
+Result:
+
+``` text
+┌─test_function_sum_json(2, 2)─┐
+│ 4 │
+└──────────────────────────────┘
+```
## Error Handling {#error-handling}
diff --git a/docs/ru/sql-reference/functions/index.md b/docs/ru/sql-reference/functions/index.md
index 510823c3af5..5f5adf7811f 100644
--- a/docs/ru/sql-reference/functions/index.md
+++ b/docs/ru/sql-reference/functions/index.md
@@ -73,9 +73,10 @@ ClickHouse может вызывать внешнюю программу или
- `name` - имя функции.
- `command` - имя скрипта для выполнения или команды, если `execute_direct` равно false.
-- `argument` - описание аргумента, содержащее его тип во вложенной настройке `type`, и опционально его имя во вложенной настройке `name`. Каждый аргумент описывается отдельно. Указание имени для аргумента необходимо, если имена аргументов являются частью сериализации для пользовательского формата функции, например [Native](../../interfaces/formats.md#native) или [JSONEachRow](../../interfaces/formats.md#jsoneachrow).
+- `argument` - описание аргумента, содержащее его тип во вложенной настройке `type`, и опционально его имя во вложенной настройке `name`. Каждый аргумент описывается отдельно. Указание имени для аргумента необходимо, если имена аргументов являются частью сериализации для пользовательского формата функции, например [Native](../../interfaces/formats.md#native) или [JSONEachRow](../../interfaces/formats.md#jsoneachrow). Значение имени аргумента по умолчанию `c` + номер аргумента.
- `format` - [формат](../../interfaces/formats.md) передачи аргументов.
- `return_type` - тип возвращаемого значения.
+- `return_name` - имя возвращаемого значения. Указание имени возвращаемого значения необходимо, если имя возвращаемого значения является частью сериализации для пользовательского формата функции, например [Native](../../interfaces/formats.md#native) или [JSONEachRow](../../interfaces/formats .md#jsoneachrow). Необязательный. Значение по умолчанию — `result`.
- `type` - вариант запуска команды. Если задан вариант `executable`, то запускается одна команда. При указании `executable_pool` создается пул команд.
- `max_command_execution_time` - максимальное время в секундах, которое отводится на обработку блока данных. Эта настройка применима только для команд с вариантом запуска `executable_pool`. Необязательная настройка. Значение по умолчанию `10`.
- `command_termination_timeout` - максимальное время завершения команды в секундах после закрытия конвейера. Если команда не завершается, то процессу отправляется сигнал `SIGTERM`. Эта настройка применима только для команд с вариантом запуска `executable_pool`. Необязательная настройка. Значение по умолчанию `10`.
@@ -172,6 +173,59 @@ SELECT test_function_sum(2, 2);
└─────────────────────────┘
```
+Создание `test_function_sum_json` с именноваными аргументами и форматом [JSONEachRow](../../interfaces/formats .md#jsoneachrow) с использованием конфигурации XML.
+Файл test_function.xml.
+```xml
+
+ executable
+ test_function_sum_json
+ UInt64
+ result_name
+
+ UInt64
+ argument_1
+
+
+ UInt64
+ argument_2
+
+ JSONEachRow
+ test_function_sum_json.py
+
+```
+
+Файл скрипта внутри папки `user_scripts` `test_function_sum_json.py`.
+
+```python
+#!/usr/bin/python3
+
+import sys
+import json
+
+if __name__ == '__main__':
+ for line in sys.stdin:
+ value = json.loads(line)
+ first_arg = int(value['argument_1'])
+ second_arg = int(value['argument_2'])
+ result = {'result_name': first_arg + second_arg}
+ print(json.dumps(result), end='\n')
+ sys.stdout.flush()
+```
+
+Запрос:
+
+``` sql
+SELECT test_function_sum_json(2, 2);
+```
+
+Результат:
+
+``` text
+┌─test_function_sum_json(2, 2)─┐
+│ 4 │
+└──────────────────────────────┘
+```
+
## Обработка ошибок {#obrabotka-oshibok}
Некоторые функции могут кидать исключения в случае ошибочных данных. В этом случае, выполнение запроса прерывается, и текст ошибки выводится клиенту. При распределённой обработке запроса, при возникновении исключения на одном из серверов, на другие серверы пытается отправиться просьба тоже прервать выполнение запроса.