typestar

IMMUTABLE y STABLE en SQL

La volatilidad es una promesa al planificador sobre las llamadas repetidas.

-- Volatility is a promise to the planner about repeat calls.
CREATE FUNCTION card_fee(amount NUMERIC)
RETURNS NUMERIC
LANGUAGE SQL
IMMUTABLE            -- same input, same answer, forever
RETURN round(amount * 0.029 + 0.30, 2);

CREATE FUNCTION todays_orders()
RETURNS BIGINT
LANGUAGE SQL
STABLE               -- steady within one statement, not across time
BEGIN ATOMIC
    SELECT COUNT(*)
    FROM orders
    WHERE placed_at > now() - INTERVAL '1 day';
END;

SELECT card_fee(413.45) AS fee, todays_orders() AS today;

Cómo funciona

  1. IMMUTABLE jura que la comisión de un monto no cambia jamás: el resultado se puede reusar.
  2. STABLE promete estabilidad dentro de una sentencia — lo justo para lecturas de tablas.
  3. Etiquetar mal es un bug real: el planificador cachea lo que le dijiste que podía.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
18
Caracteres a escribir
507
Tokens
78
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 72 segundos.

Escribe este fragmento

Paso 4 de 4 en Funciones; paso 4 de 23 en Procedimientos almacenados de PostgreSQL.

← Anterior Siguiente →