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 ---------------------------(end of broadcast)--------------------------- TIP 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq