Skip to main content
Skip to main content
Edit this page

system.user_defined_functions

Description

Contains loading status, error information, and configuration metadata for User-Defined Functions (UDFs).

Columns

  • name (String) — UDF name.
  • load_status (Enum8('Success' = 0, 'Failed' = 1)) — Loading status.Possible values:
    • Success — UDF loaded and ready to use
    • Failed — UDF failed to load (see field 'loading_error_message' for details).
  • loading_error_message (String) — Detailed error message when loading failed. Empty if loaded successfully.
  • last_successful_update_time (Nullable(DateTime)) — Timestamp of the last successful update. NULL if never succeeded.
  • loading_duration_ms (UInt64) — Time spent loading the UDF, in milliseconds.
  • type (Enum8('executable' = 0, 'executable_pool' = 1)) — UDF type: 'executable' (single process) or 'executable_pool' (process pool).
  • command (String) — Script or command to execute for this UDF.
  • format (String) — Data format for I/O (e.g., 'TabSeparated', 'JSONEachRow').
  • return_type (String) — Function return type (e.g., 'String', 'UInt64').
  • return_name (String) — Optional return value identifier. Empty if not configured.
  • argument_types (Array(String)) — Array of argument types (e.g., ['String', 'UInt64']).
  • argument_names (Array(String)) — Array of argument names. Empty strings for unnamed arguments.
  • max_command_execution_time (UInt64) — Maximum seconds to process a data block. Only for 'executable_pool' type.
  • command_termination_timeout (UInt64) — Seconds before sending SIGTERM to command process.
  • command_read_timeout (UInt64) — Milliseconds for reading from command stdout.
  • command_write_timeout (UInt64) — Milliseconds for writing to command stdin.
  • pool_size (UInt64) — Number of command process instances. Only for 'executable_pool' type.
  • send_chunk_header (UInt8) — Whether to send row count before each data chunk (boolean).
  • execute_direct (UInt8) — Whether to execute command directly (1) or via /bin/bash (0).
  • lifetime (UInt64) — Reload interval in seconds. 0 means reload is disabled.
  • deterministic (UInt8) — Whether function returns the same result for the same arguments (boolean).

Example

View all UDFs and their loading status:

SELECT
    name,
    load_status,
    type,
    command,
    return_type,
    argument_types
FROM system.user_defined_functions
FORMAT Vertical;
Row 1:
──────
name:           my_sum_udf
load_status:    Success
type:           executable
command:        /var/lib/clickhouse/user_scripts/sum.py
return_type:    UInt64
argument_types: ['UInt64','UInt64']

Find failed UDFs:

SELECT
    name,
    loading_error_message
FROM system.user_defined_functions
WHERE load_status = 'Failed';

See Also