Hola Lautaro,

Lautaro Palamidessi escribió:

> --y para mi sorpresa veo que devuelve:
> " SELECT prueba.campo_fecha
>    FROM prueba
>   WHERE ((prueba.campo_fecha >= '2019-09-01 00:00:00'::timestamp without
> time zone) AND (prueba.campo_fecha <= '2019-09-02 00:00:00'::timestamp
> without time zone));"
> 
> o sea: Al compilar y grabar la vista, mis "variables" se convirtieron en
> "constantes"!

Sí, la expansión se efectúa al momento de crear la vista.

> Las preguntas que hago a la lista son:
> Si 'today' y 'yesterday' fueran funciones, ¿hay un bug al grabarse en la
> vista como constantes?
> Si 'today' y 'yesterday' fueran constantes: ¿por qué hoy valen una cosa y
> mañana valen otra cosa?
> Si 'today' y 'yesterday' no son ni funciones ni constantes, ¿qué son?

No son funciones ni constantes: son valores que la función de entrada
del tipo timestamp interpreta al momento de ejecutarse, que es el
momento de crear la vista.  El valor que retorna la función de entrada
es una constante, que es lo que se pone en la definición de la vista.

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


Reply via email to