Re: Calling PrepareTempTablespaces in BufFileCreateTemp - Mailing list pgsql-hackers

From Ashwin Agrawal
Subject Re: Calling PrepareTempTablespaces in BufFileCreateTemp
Date
Msg-id CALfoeitwQ5kOhZC2EHK1tP6mNAon17cCO7nPRk07BRzcfrpX8Q@mail.gmail.com
Whole thread Raw
In response to Re: Calling PrepareTempTablespaces in BufFileCreateTemp  (Michael Paquier <michael@paquier.xyz>)
Responses Re: Calling PrepareTempTablespaces in BufFileCreateTemp
List pgsql-hackers
On Thu, Apr 25, 2019 at 11:53 PM Michael Paquier <michael@paquier.xyz> wrote:
>
> On Thu, Apr 25, 2019 at 12:45:03PM -0400, Tom Lane wrote:
> > I still remain concerned that invoking catalog lookups from fd.c is a darn
> > bad idea, even if we have a fallback for it to work (for some value of
> > "work") in non-transactional states.  It's not really hard to envision
> > that kind of thing leading to infinite recursion.  I think it's safe
> > right now, because catalog fetches shouldn't lead to any temp-file
> > access, but that's sort of a rickety assumption isn't it?
>
> Introducing catalog lookups into fd.c which is not a layer designed
> for that is a choice that I find strange, and I fear that it may bite
> in the future.  I think that the choice proposed upthread to add
> an assertion on TempTablespacesAreSet() when calling a function
> working on temporary data is just but fine, and that we should just
> make sure that the gist code calls PrepareTempTablespaces()
> correctly.  So [1] is a proposal I find much more acceptable than the
> other one.

Well the one thing I wish to point out explicitly is just taking fd.c
changes from [1], and running make check hits no assertions and
doesn't flag issue exist for gistbuildbuffers.c. Means its missing
coverage and in future same can happen as well.

[1]: https://postgr.es/m/11777.1556133426@sss.pgh.pa.us



pgsql-hackers by date:

Previous
From: Chapman Flack
Date:
Subject: Re: generate documentation keywords table automatically
Next
From: Peter Geoghegan
Date:
Subject: Re: Calling PrepareTempTablespaces in BufFileCreateTemp