fixchar ======= User data types char3, char4 and char10 as space saving replacements for char(3), char(4), and char(10) respectively. This is an experimental implementation for Shridhar's high volume performance tests. It is not expected to be usable in any real world application. Known problems are at least: . There are no casting functions . This does not work with multibyte character sets Use at your own risk! I N S T A L L ============= . Put these files into contrib/fixchar . cd to contrib/fixchar . make . make install . cd to the directory where PG is installed . bin/psql yourdb yourdb=# \i share/postgresql/contrib/fixchar.sql T E S T ======= CREATE TABLE short ( i INT, c3 char3, c4 char4, c10 char10, primary key (i, c3) ); CREATE TABLE long ( i INT, c3 char(3), c4 char(4), c10 char(10), primary key (i, c3) ); INSERT INTO short VALUES (1, 'aaa', 'aaaa', 'a'); INSERT INTO long VALUES (1, 'aaa', 'aaaa', 'a'); INSERT INTO short SELECT i+1, c3, c4, c10 FROM short; INSERT INTO long SELECT i+1, c3, c4, c10 FROM long; INSERT INTO short SELECT i+2, c3, c4, c10 FROM short; INSERT INTO long SELECT i+2, c3, c4, c10 FROM long; INSERT INTO short SELECT i+4, c3, c4, c10 FROM short; INSERT INTO long SELECT i+4, c3, c4, c10 FROM long; INSERT INTO short SELECT i+8, c3, c4, c10 FROM short; INSERT INTO long SELECT i+8, c3, c4, c10 FROM long; INSERT INTO short SELECT i+16, c3, c4, c10 FROM short; INSERT INTO long SELECT i+16, c3, c4, c10 FROM long; INSERT INTO short SELECT i+32, c3, c4, c10 FROM short; INSERT INTO long SELECT i+32, c3, c4, c10 FROM long; INSERT INTO short SELECT i+64, c3, c4, c10 FROM short; INSERT INTO long SELECT i+64, c3, c4, c10 FROM long; INSERT INTO short SELECT i+128, c3, c4, c10 FROM short; INSERT INTO long SELECT i+128, c3, c4, c10 FROM long; INSERT INTO short SELECT i+256, c3, c4, c10 FROM short; INSERT INTO long SELECT i+256, c3, c4, c10 FROM long; INSERT INTO short SELECT i+512, c3, c4, c10 FROM short; INSERT INTO long SELECT i+512, c3, c4, c10 FROM long; INSERT INTO short SELECT i+1024, c3, c4, c10 FROM short; INSERT INTO long SELECT i+1024, c3, c4, c10 FROM long; INSERT INTO short SELECT i+2048, c3, c4, c10 FROM short; INSERT INTO long SELECT i+2048, c3, c4, c10 FROM long; INSERT INTO short SELECT i+4096, c3, c4, c10 FROM short; INSERT INTO long SELECT i+4096, c3, c4, c10 FROM long; VACUUM VERBOSE ANALYZE short; VACUUM VERBOSE ANALYZE long; SELECT relname,reltuples,relpages FROM pg_class WHERE relname NOT LIKE 'pg%'; relname | reltuples | relpages ------------+-----------+---------- short_pkey | 8192 | 33 short | 8192 | 57 long_pkey | 8192 | 39 long | 8192 | 69 (4 rows) (2002-10-08 mk)