> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# configuración de la sesión short_circuit_function_evaluation_*

> Configuración de la sesión de ClickHouse en el grupo generado short_circuit_function_evaluation_*.

export const VersionHistory = ({rows = []}) => {
  if (rows.length === 0) {
    return null;
  }
  const headers = ["Versión", "Valor predeterminado", "Comentario"];
  const border = "1px solid rgba(128, 128, 128, 0.3)";
  const cell = {
    border,
    padding: "0.25rem 0.5rem",
    textAlign: "start",
    verticalAlign: "top"
  };
  return <details className="not-prose" style={{
    border,
    borderRadius: "0.5rem",
    margin: "0.5rem 0",
    padding: "0.5rem 0.75rem",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <summary style={{
    cursor: "pointer",
    fontWeight: 600,
    opacity: 0.72
  }}>
        Historial de versiones
      </summary>
      <table style={{
    borderCollapse: "collapse",
    width: "100%",
    margin: "0.5rem 0 0"
  }}>
        <thead>
          <tr>
            {headers.map(header => <th key={header} style={{
    ...cell,
    fontWeight: 600,
    opacity: 0.72
  }}>
                {header}
              </th>)}
          </tr>
        </thead>
        <tbody>
          {rows.map((row, row_index) => <tr key={row.id ?? row_index}>
              {(row.items ?? []).map((item, item_index) => <td key={item_index} style={{
    ...cell,
    overflowWrap: "anywhere"
  }}>
                  {item?.label}
                </td>)}
            </tr>)}
        </tbody>
      </table>
    </details>;
};

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>Tipo</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>Predeterminado</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Modificable sin reiniciar
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

Estos ajustes están disponibles en [system.settings](/es/reference/system-tables/settings) y se generan automáticamente a partir del [código fuente](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

## short\_circuit\_function\_evaluation

<SettingsInfoBlock type="ShortCircuitFunctionEvaluation" default_value="enable" />

Permite calcular las funciones [if](/es/reference/functions/regular-functions/conditional-functions#if), [multiIf](/es/reference/functions/regular-functions/conditional-functions#multiIf), [and](/es/reference/functions/regular-functions/logical-functions#and) y [or](/es/reference/functions/regular-functions/logical-functions#or) mediante [evaluación de cortocircuito](https://en.wikipedia.org/wiki/Short-circuit_evaluation). Esto ayuda a optimizar la ejecución de expressions complejas en estas funciones y a evitar posibles excepciones (como una división por cero cuando no se espera).

Valores posibles:

* `enable` — Habilita la evaluación de funciones con cortocircuito para las funciones a las que resulta aplicable (pueden lanzar una excepción o ser computacionalmente costosas).
* `force_enable` — Habilita la evaluación de funciones con cortocircuito para todas las funciones.
* `disable` — Deshabilita la evaluación de funciones con cortocircuito.

## short\_circuit\_function\_evaluation\_for\_nulls

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "Permite ejecutar funciones con argumentos Nullable solo en las filas en las que todos los argumentos tienen valores no NULL"}]}]} />

Optimiza la evaluación de funciones que devuelven NULL cuando algún argumento es NULL. Cuando el porcentaje de valores NULL en los argumentos de la función supera short\_circuit\_function\_evaluation\_for\_nulls\_threshold, el sistema omite evaluar la función fila por fila. En su lugar, devuelve NULL de inmediato para todas las filas, evitando cálculos innecesarios.

Esta configuración controla únicamente una optimización. Las funciones que no pueden ejecutarse sobre el valor predeterminado de sus argumentos —como `parseDateTime`, `IPv4StringToNum` o `intDiv`— siempre omiten las filas que contienen un NULL, independientemente de esta configuración, porque el valor almacenado detrás de un NULL es el valor predeterminado del tipo del argumento y ejecutarlas sobre él lanzaría una excepción con datos que por lo demás son válidos.

## short\_circuit\_function\_evaluation\_for\_nulls\_threshold

<SettingsInfoBlock type="Double" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "Umbral de proporción de valores NULL a partir del cual las funciones con argumentos Nullable se ejecutan solo en las filas con valores no NULL en todos los argumentos. Se aplica cuando la configuración short_circuit_function_evaluation_for_nulls está habilitada."}]}]} />

Umbral de proporción de valores NULL a partir del cual las funciones con argumentos Nullable se ejecutan solo en las filas con valores no NULL en todos los argumentos. Se aplica cuando la configuración short\_circuit\_function\_evaluation\_for\_nulls está habilitada.
Cuando la proporción de filas que contienen valores NULL respecto al número total de filas supera este umbral, esas filas con valores NULL no se evaluarán.
