Re: Reducing the overhead of NUMERIC data - Mailing list pgsql-hackers

From Marcus Engene
Subject Re: Reducing the overhead of NUMERIC data
Date
Msg-id 436A27BD.3060807@engene.se
Whole thread Raw
In response to Re: Reducing the overhead of NUMERIC data  (Simon Riggs <simon@2ndquadrant.com>)
Responses Re: Reducing the overhead of NUMERIC data  ("Jim C. Nasby" <jnasby@pervasive.com>)
List pgsql-hackers
Simon Riggs wrote:
> On Thu, 2005-11-03 at 11:13 -0300, Alvaro Herrera wrote:
> 
>>Simon Riggs wrote:
>>
>>>On PostgreSQL, CHAR(12) is a bpchar datatype with all instantiations of
>>>that datatype having a 4 byte varlena header. In this example, all of
>>>those instantiations having the varlena header set to 12, so essentially
>>>wasting the 4 byte header.
>>
>>We need the length word because the actual size in bytes is variable,
>>due to multibyte encoding considerations.
> 
> 
> Succinctly put, thanks.
> 
> Incidentally, you remind me that other databases do *not* vary the
> character length, even if they do have varying length UTF-8 within them.
> So if you define CHAR(255) then it could blow up at a random length if
> you store UTF-8 within it.
> 
> That's behaviour that I could never sanction, so I'll leave this now.
> 
> Best Regards, Simon Riggs
> 

Just as a side note, in Oracle you can use the syntax (f.ex on on a db 
with utf-8 charset):

column VARCHAR2(10 CHAR)

...to indicate that Oracle should fit 10 characters there. It might use 
up to 40 bytes in the db, but that's up to Oracle. If I s/10 CHAR/10, at 
most 10 characters will fit.

This works very well. The only catch is that it's not good to use more 
than 1000 chars since oracle's varchars dont want to go past 4000 bytes.

Best regards,
Marcus



pgsql-hackers by date:

Previous
From: Stephan Szabo
Date:
Subject: Re: Reducing the overhead of NUMERIC data
Next
From: Bruce Momjian
Date:
Subject: Re: Reducing the overhead of NUMERIC data