You signed in with another tab or window.Reload to refresh your session.You signed out in another tab or window.Reload to refresh your session.You switched accounts on another tab or window.Reload to refresh your session.Dismiss alert
For AIO, and also some other recent patches, we need the ability to callrelpath() in a critical section. Until now that was not feasible, as itallocated memory.The fact that relpath() allocated memory also made it awkward to use in logmessages because we had to take care to free the memory afterwards. Which wee.g. didn't do for when zeroing out an invalid buffer.We discussed other solutions, e.g. filling a pre-allocated buffer that'spassed to relpath(), but they all came with plenty downsides or were largerprojects. The easiest fix seems to be to make relpath() return the path byvalue.To be able to return the path by value we need to determine the maximum lengthof a relation path. This patch adds a long #define that computes the exactmaximum, which is verified to be correct in a regression test.As this change the signature of relpath(), extensions using it will need toadapt their code. We discussed leaving a backward-compat shim in place, butdecided it's not worth it given the use of relpath() doesn't seem widespread.Discussion:https://postgr.es/m/xeri5mla4b5syjd5a25nok5iez2kr3bm26j2qn4u7okzof2bmf@kwdh2vf7npra