Re: reducing NUMERIC size for 9.1
| От | Robert Haas |
|---|---|
| Тема | Re: reducing NUMERIC size for 9.1 |
| Дата | |
| Msg-id | AANLkTim5iZanHc6AKc7MUg52Cz92wSdX5LW+by4KVNXJ@mail.gmail.com обсуждение исходный текст |
| Ответ на | Re: reducing NUMERIC size for 9.1 (Robert Haas <robertmhaas@gmail.com>) |
| Ответы |
Re: reducing NUMERIC size for 9.1
|
| Список | pgsql-hackers |
On Fri, Jul 30, 2010 at 9:55 PM, Robert Haas <robertmhaas@gmail.com> wrote: > On Fri, Jul 30, 2010 at 2:08 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: >> Robert Haas <robertmhaas@gmail.com> writes: >>> .... Maybe something like this, >>> obviously with a suitable comment which I haven't written yet: >> >>> numeric_digits = (precision + 6) / 4; >>> return (numeric_digits * sizeof(int16)) + NUMERIC_HDRSZ; >> >> This is OK for the base-10K case, but there's still code in there >> for the base-10 and base-100 cases. Can you express this logic in >> terms of DEC_DIGITS and sizeof(NumericDigit) ? I think you might >> find it was actually clearer that way, cf Polya. > > It appears to work out to: > > numeric_digits = (precision + 2 * (DEC_DIGITS - 1)) / DEC_DIGITS > return (numeric_digits * sizeof(NumericDigits)) + NUMERIC_HDRSZ; > > The smallest value for precision which requires 2 numeric_digits is > always 2; and the required number of numeric_digits increases by 1 > each time the number of base-10 digits increases by DEC_DIGITS. And here is a patch implementing that. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise Postgres Company
Вложения
В списке pgsql-hackers по дате отправления: