From: | "Rajesh Kumar Mallah" <mallah(dot)rajesh(at)gmail(dot)com> |
---|---|
To: | "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | "Lista Postgres" <pgsql-admin(at)postgresql(dot)org> |
Subject: | Re: Adding a column with default value possibly corrupting a functional index. |
Date: | 2006-12-17 02:40:50 |
Message-ID: | a97c77030612161840w5d127102q1e1b818a06334d9e@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-admin |
On 12/16/06, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>
> "Rajesh Kumar Mallah" <mallah(dot)rajesh(at)gmail(dot)com> writes:
> > On 12/16/06, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> >> What is that nonstandard function you're using in the index?
>
> > Its declared immutable , it queries the same table ,
>
> You just lost. If it's querying the table it's not immutable, almost
> by definition --- certainly not if the table is not static, as yours
> seemingly is not. This one is cheating even more by trying to read
> another table too :-(
>
> I think the proximate cause of the problem is that the function's
> SELECT is trying to use an index on the category_id column,
> and the REINDEX done by ALTER TABLE happens to rebuild the two indexes
> in the other order, such that the one on category_id isn't valid yet
> when the functional index is rebuilt.
why does ALTER TABLE ADD new_col int default 0 rebuilds
existing indexes ?
I wonder whether we need to do something to actively prevent functions
> used in an index from querying the database? It's not too hard to
> imagine crashing the backend by playing this sort of game.
the game was seemingly fulfilling a requirement. dunno what
i should be doing now.
regds
mallah.
This
> particular case is probably not doing anything worse than following
> index entries pointing at no-longer-existent tuple IDs, which I think we
> have adequate defenses against now. But in general an index function
> has got to be capable of operating even when the underlying table is not
> in a logically consistent state, because the function itself is used in
> creating/maintaining that consistency. What you've got here definitely
> fails that test.
>
> regards, tom lane
>
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2006-12-17 03:36:44 | Re: Adding a column with default value possibly corrupting a functional index. |
Previous Message | Tom Lane | 2006-12-16 17:53:05 | Re: Adding a column with default value possibly corrupting a functional index. |