Re: Define jsonpath functions as stable - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Define jsonpath functions as stable
Date
Msg-id 9219.1564410991@sss.pgh.pa.us
Whole thread Raw
In response to Define jsonpath functions as stable  (Alexander Korotkov <a.korotkov@postgrespro.ru>)
Responses Re: Define jsonpath functions as stable
List pgsql-hackers
Alexander Korotkov <a.korotkov@postgrespro.ru> writes:
> During my work on bringing jsonpath patchset to commit, I was always
> keeping in mind that we need to make jsonb_path_*() functions
> immutable.  Having these functions immutable, users can build
> expression indexes over them.

Right.

> However, we've spotted some deviations between standard and our implementation.
>  * like_regex predicate uses our regular expression engine, which
> deviates from standard.
>  * We always do numeric computations using numeric datatype.  Even if
> user explicitly calls .double() method.  Probably, our current
> implementation still fits standard.  But in future we may like to use
> floating point computation in some cases for performance optimization.
> ...
> Therefore, I'm going to mark jsonb_path_*() functions stable, not
> immutable.

I dunno, I think you are applying a far more rigorous definition of
"immutable" than we ever have in the past.  The possibility that we
might change the implementation in the future should not be enough
to disqualify a function from being immutable --- if that were the
criterion, nothing more complex than int4pl could be immutable.

Wouldn't it be better that, in the hypothetical major version where
we change the implementation, we tell users that they must reindex
any affected indexes?

As a comparison point, we allow people to build indexes on tsvector
results, which are *easy* to change just by adjusting configuration
files.  The fact that this might force the need for reindexing hasn't
made it unworkable.

            regards, tom lane



pgsql-hackers by date:

Previous
From: Alexander Korotkov
Date:
Subject: Define jsonpath functions as stable
Next
From: Tom Lane
Date:
Subject: Re: how to run encoding-dependent tests by default