Re: reducing NUMERIC size for 9.1
От | Robert Haas |
---|---|
Тема | Re: reducing NUMERIC size for 9.1 |
Дата | |
Msg-id | AANLkTikjqXc2rX6GuG1tKhkM+=zGXZ7MaCOEzWX2sJ9w@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: reducing NUMERIC size for 9.1 (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: reducing NUMERIC size for 9.1
|
Список | pgsql-hackers |
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. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise Postgres Company
В списке pgsql-hackers по дате отправления: