Re: [HACKERS] varchar(), text,char() overhead

From: darrenk(at)insightdist(dot)com (Darren King)
To: pgsql-hackers(at)postgresql(dot)org
Subject: Re: [HACKERS] varchar(), text,char() overhead
Date: 1998-01-21 22:14:52
Message-ID: 9801212214.AA88724@ceodev
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> Do people want the overhead of char(), varchar(), and text to be reduced
> from 4-bytes to 2-bytes. We store the length in this overhead, but
> since we have a size limit on tuple size, we can't have a field over 8k
> in size anyway. Even if we up that to 32k for 6.3, we still only use 2
> bytes.
>
> I have added it to the TODO list. Most of the code already supports it
> by using VARSIZE and VARDATA macros. Once the structure size changes,
> the macros change too. The only issue is places where they take the
> first four bytes of the variable-length type and cast it to an int32,
> which will not work in this case. We have to change this so it uses the
> macros too.

Would be a nice space-saver if you have tables with many small text fields.

Dig out that old message of mine concerning block size and check out item #4.

Excerpted below if you've finally deleted it... :) :)

> Date: Wed, 29 Jan 1997 13:38:10 -0500
> From: aixssd!darrenk (Darren King)
> Subject: [HACKERS] Max size of data types and tuples.
> ...
> 4. Since only 13 bits are needed for storing the size of these
> textual fields in a tuple, could PostgreSql use a 16-bit int to
> store it? Currently, the size is padded to four bytes in the
> tuple and this eats space if you have many textual fields.
> Without further digging, I'm assuming that the size is double-word
> aligned so that the actual text starts on a double-word boundary.
> ...

darrenk

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 1998-01-21 23:38:07 Re: [HACKERS] varchar(), text,char() overhead
Previous Message Bruce Momjian 1998-01-21 21:29:03 varchar(), text,char() overhead