Numeric patch to add special-case representations for < 8 bytes

Поиск
Список
Период
Сортировка
От Gregory Stark
Тема Numeric patch to add special-case representations for < 8 bytes
Дата
Msg-id 87k5y4hl8r.fsf@stark.xeocode.com
обсуждение исходный текст
Ответы Re: Numeric patch to add special-case representations for < 8 bytes  (Patric Bechtel <bechtel@ipcon.de>)
Re: Numeric patch to add special-case representations for < 8 bytes  (Bruce Momjian <bruce@momjian.us>)
Список pgsql-patches
I've uploaded a quick hack to store numerics in < 8 bytes when possible.

 http://community.enterprisedb.com/numeric-hack-1.patch

This is a bit of a kludge since it doesn't actually provide any interface for
external clients of the numeric module to parse the resulting data. Ie, the
macros in numeric.h will return garbage.

But I'm not entirely convinced that matters. It's not like those macros were
really useful to any other modules anyways since there was no way to extract
the actual digits.

The patch is also slightly unsatisfactory because as I discovered numbers like
1.1 are stored as two digits currently. But it does work and it does save a
substantial amount of space for integers.

postgres=# select n,pg_column_size(n) from n;
    n     | pg_column_size
----------+----------------
        1 |              2
       11 |              2
      101 |              2
     1001 |              3
    10001 |              9
   100001 |              9
      1.1 |              9
     10.1 |              9
    100.1 |              9
   1000.1 |              9
  10000.1 |             11
 100000.1 |             11

I had hoped to get the second batch to be 3-4 bytes. But even now note how
much space is saved for integers <10000.

--
  Gregory Stark
  EnterpriseDB          http://www.enterprisedb.com

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

Предыдущее
От: Gregory Stark
Дата:
Сообщение: 1-byte packed varlena headers
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: Allow \pset to parse "on or off" for boolean values