Re: parametric block size?

Поиск
Список
Период
Сортировка
От Fabien COELHO
Тема Re: parametric block size?
Дата
Msg-id alpine.DEB.2.10.1407221936280.5360@sto
обсуждение исходный текст
Ответ на Re: parametric block size?  (Alvaro Herrera <alvherre@2ndquadrant.com>)
Ответы Re: parametric block size?  (Alvaro Herrera <alvherre@2ndquadrant.com>)
Список pgsql-hackers
Hello Alvaro,

>> ISTM that a desirable and reasonably simple to implement feature
>> would be to be able to set the blocksize at "initdb" time, and
>> "postgres" could use the value found in the database instead of a
>> compile-time one.
>
> I think you will find it more difficult to implement than it seems at
> first.  For one thing, there are several macros that depend on the block
> size and the algorithms involved cannot work with dynamic sizes;
> consider MaxIndexTuplesPerPage which is used inPageIndexMultiDelete()
> for instance.  That value is used to allocate an array in the stack,
> but that doesn't work if the array size is dynamic.  (Actually it works
> almost everywhere, but that feature is not in C89 and thus it fails on
> Windows).  That shouldn't be a problem, you say, just palloc() the array
> -- except that that function is called within critical sections in some
> places (e.g. _bt_delitems_vacuum) and you cannot use palloc there.

Hmmm. Thanks for your point... indeed there may be implementation 
details... not a surprise:-)


Note that I was more asking about the desirability of the feature, the 
implementation is another, although also relevant, issue. To me it is 
really desirable given the potential performance impact, but maybe we 
should not care about 10%?


About your point: if we really have to do without dynamic stack allocation 
(C99 is only 15, not ripe for adult use yet, maybe when it turns 18 or 21, 
depending on the state:-), a possible way around would be to allocate a 
larger area with some MAX_BLCKSZ with a ifdef for compilers that really 
would not support dynamic stack allocation. Moreover, it might be possible 
to hide it more or less cleanly in a macro. I had to put "-pedantic 
-Werror" to manage to get an error on dynamic stack allocation with "gcc 
-std=c89".

-- 
Fabien.



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

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: Behavior of "OFFSET -1"
Следующее
От: Rohit Goyal
Дата:
Сообщение: Shared Data Structure b/w clients