Re: ERROR: could not read block 0 in file when creating an index out of a function

From: Luca Ferrari <fluca1978(at)gmail(dot)com>
To: Artur Zakirov <zaartur(at)gmail(dot)com>
Cc: pgsql-general <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: ERROR: could not read block 0 in file when creating an index out of a function
Date: 2025-03-12 12:31:05
Message-ID: CAKoxK+5ek4R-6kxzJ1TALf_Dxe-dM-xjTLkWp=9_BTP7Gx8Jrg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Wed, Mar 12, 2025 at 12:54 PM Artur Zakirov <zaartur(at)gmail(dot)com> wrote:
>
> I can reproduce this with the table `t` on PG 15.10.

I didn't mention I'm running 16.6, but I'm pretty sure it is
reproducible on other versions too.

>
> 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.

Yeah, even if it is not clear to me why it is trying to read the index
that is under creation (i.e., not usable yet).

>
> 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.

As I stated, this example is controversial, and as the documentation
states, the IMMUTABLE set of functions should not perform database
lookups, as in my example.
However, the error message is quite obscure to me, and reminds me a
disk corruption rather a stability/function/lookup problem.

Luca

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Achilleas Mantzios - cloud 2025-03-12 13:56:39 Re: ERROR: could not read block 0 in file when creating an index out of a function
Previous Message Artur Zakirov 2025-03-12 11:54:25 Re: ERROR: could not read block 0 in file when creating an index out of a function