Files
datastore/programs/server
Alexey Milovidov b224d844fc Run DockerC functions through named pipes
Change the generated `DockerC` runtime command from `docker exec -i` to a
per-function runner script that creates FIFO files inside the UDF work
directory. The script starts `/work/user_func` in the persistent Docker
container with its `stdin` and `stdout` redirected to those FIFOs, and then
relays ClickHouse input and output through host-side `cat` processes.

This keeps the hot data path out of Docker's `exec -i` attach stream while
leaving all temporary files inside the UDF work directory.

Also stop requesting `command_pipe_capacity` by default from generated C-body
driver configs, so this experiment is not mixed with the previous pipe-capacity
tuning.

PR: https://github.com/ClickHouse/ClickHouse/pull/105131

Tests:
- `python3 -m py_compile programs/server/user_defined_executable_function_drivers/c_driver_common.py`
- `CLICKHOUSE_C_DRIVER_COMPILE_LOCAL=1 CLICKHOUSE_C_DRIVER_SKIP_DOCKER_CONTAINER=1 docker_c_create.sh --return UInt64 --args 'x UInt64, y UInt64'`
- `sh -n tmp/pr105131_docker_fifo/create/docker_fifo_runner.sh`
- `CLICKHOUSE_BINARY=./build/programs/clickhouse tests/queries/0_stateless/04241_executable_udf_driver.sh`
- `CLICKHOUSE_BINARY=./build/programs/clickhouse tests/queries/0_stateless/04242_executable_udf_driver_errors.sh`
2026-05-17 01:01:38 +02:00
..
…
…
…