Re: Indexes on expressions that include user-defined functions are not reindexed when the function definition is changed

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Dmytry Strikha <dm(dot)strikha(at)gmail(dot)com>
Cc: pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: Indexes on expressions that include user-defined functions are not reindexed when the function definition is changed
Date: 2019-05-29 17:25:15
Message-ID: 2991.1559150715@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Dmytry Strikha <dm(dot)strikha(at)gmail(dot)com> writes:
> If the index on expression is defined so, that the indexed value
> depends on a user-defined function, it doesn't get reindexed when the
> function's definition changes, therefore completely wrong values can
> be displayed when the query is executed using that index.

If you declare the function immutable, as you must to use it in an
index, then redefining the function in a way that changes its results
means *you* broke the contract. I don't think it's unreasonable of
us to insist that it's on your head to issue any necessary reindexing.
Certainly, neither of the plausible alternatives are acceptable:

* Reindex any time the function is changed at all. This is putting
an undue burden on people who did follow the contract.

* Detecting whether the redefinition changed the results.
See halting problem.

regards, tom lane

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Dmytry Strikha 2019-05-29 17:36:54 Re: Indexes on expressions that include user-defined functions are not reindexed when the function definition is changed
Previous Message Dmytry Strikha 2019-05-29 17:00:36 Indexes on expressions that include user-defined functions are not reindexed when the function definition is changed