On Tue, Feb 14, 2023 at 9:45 AM Andres Freund <andres(at)anarazel(dot)de> wrote:
> On 2023-01-24 10:46:28 -0500, Robert Haas wrote:
> > On Mon, Jan 23, 2023 at 9:40 AM Maxim Orlov <orlovmg(at)gmail(dot)com> wrote:
> > > One of our customers stumble onto a significant performance degradation while running multiple OLAP-like queries on a replica.
> > > After some investigation, it became clear that the problem is in accessing old_snapshot_threshold parameter.
> >
> > It has been suggested that we remove that feature entirely.
>
> Indeed. There's a lot of things wrong with it. We have reproducers for
> creating wrong query results. Nobody has shown interest in fixing the
> problems, for several years by now. It costs users that *do not* use the
> feature performance (*).
>
> I think we're doing our users a disservice by claiming to have this feature.
>
> I don't think a lot of the existing code would survive if we were to create a
> newer version, more maintainable / reliable, version of the feature.
I raised this at the recent developer meeting and the assembled
hackers agreed. Does anyone think we *shouldn't* drop the feature? I
volunteered to write a removal patch for v17, so here's a first run
through to find all the traces of this feature. In this first go I
removed everything I could think of, but we might want to keep some
vestiges. I guess we might want to keep the registered error
class/code? Should we invent a place where we keep stuff like #define
TestForOldSnapshot(...) expanding to nothing for some amount of time,
for extensions? I dunno, I bet extensions doing stuff that
sophisticated already have a bunch of version tests anyway. I suppose
keeping the GUC wouldn't really be helpful (if you're using it, you
probably want to know that it isn't available anymore and think about
the implications for your application).