Hey, On Wed, 12 Mar 2025 at 10:11, Luca Ferrari <fluca1978@xxxxxxxxx> wrote: > Now, according to the documentation, the function f_t is immutable > since it is not modifying the database, so what is going on? And why > is the same function working if the table has not the constraint on > the column? I can reproduce this with the table `t` on PG 15.10. In your case `base/357283/365810` file is a new index file. For some reason Postgres tries to read the new index. I suppose this is because during reading the table `t` within the function `f_t` it tries to access the new index. According to the documentation, IMMUTABLE functions should not only modify the database, but also return the same results given the same arguments forever, which might not be true when you query a table within such a function. Such a function should be defined as STABLE or VOLATILE. -- Kind regards, Artur