Re: includedir_internal headers are not self-contained

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема Re: includedir_internal headers are not self-contained
Дата
Msg-id 535E09B7.3090706@vmware.com
обсуждение исходный текст
Ответ на Re: includedir_internal headers are not self-contained  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: includedir_internal headers are not self-contained  (Christoph Berg <cb@df7cb.de>)
Список pgsql-hackers
On 04/27/2014 11:33 PM, Tom Lane wrote:
> I wrote:
>> On closer inspection, the issue here is really that putting relpath.h/.c
>> in common/ was completely misguided from the get-go.  It's unnecessary:
>> there's nothing outside the backend that uses it, except for
>> contrib/pg_xlogdump which could very easily do without it.  And relpath.h
>> is a serious failure from a modularity standpoint anyway, because there is
>> code all over the backend that has intimate familiarity with the pathname
>> construction rules.  We could possibly clean that up to the extent of
>> being able to hide TABLESPACE_VERSION_DIRECTORY inside relpath.c, but what
>> then?  We'd still be talking about having CATALOG_VERSION_NO compiled into
>> frontend code for any frontend code that actually made use of relpath.c,
>> which is surely not such a great idea.
>
>> So it seems to me the right fix for the relpath end of it is to push most
>> of relpath.c back where it came from, which I think was backend/catalog/.
>
> In short, what I'm proposing here is to revert commit
> a73018392636ce832b09b5c31f6ad1f18a4643ea, lock stock n barrel.
> According to the commit message, the point of that was to allow
> pg_xlogdump to use relpath(), but I do not see it doing so; and
> if it tried, I don't know where it would get an accurate value of
> CATALOG_VERSION_NO from.  So I think that was just poorly thought out.
>
> What contrib/pg_xlogdump *is* using is the forkNames[] array, which
> it uses to print the fork-number field of a BkpBlock symbolically.
> I'm inclined to think that printing numerically is good enough there,
> and a lot more robust.
>
> Comments?  If there's anyone who has a really good use-case for using
> relpath() from outside the backend, better speak up.

I'm using it in the pg_rewind tool. It needs to know how to map 
relfilenodes to physical files.

It has quite intimate knowledge of the on-disk layout anyway, so it 
wouldn't be the end of the world to just copy-paste that code. But would 
rather not, of course.

- Heikki



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Heikki Linnakangas
Дата:
Сообщение: Re: Decrease MAX_BACKENDS to 2^16
Следующее
От: Andres Freund
Дата:
Сообщение: Re: Composite Datums containing toasted fields are a bad idea(?)