Re: How are null's stored?

Ryan <pgsql-performance@seahat.com>

From: "Ryan" <pgsql-performance@seahat.com>
To: <josh@agliodbs.com>
Cc: <pgsql-performance@postgresql.org>
Date: 2003-05-12T18:58:03Z
Lists: pgsql-hackers, pgsql-performance
> Jim,
>
>> I have a 40M row table I need to import data into, then use to create
>> a bunch of more normalized tables. Right now all fields are varchar,
>> but I'm going to change this so that fields that are less than a
>> certain size are just char. Question is, how much impact is there from
>> char being nullable vs. not nullable? src/include/access/htup.h
>> indicates that nulls are stored in a bitmap, so I'd suspect that I
>> should see a decent space savings from not having to include length
>> information all the time... (most of these small fields are always the
>> same size no matter what...)
>
> This is moot.   PostgreSQL stores CHAR(x), VARCHAR, and TEXT in the same
>  internal format, which includes length information in the page header.
>  So  you save no storage space by converting to CHAR(x) ... you might
> even make  your tables *larger* because of the space padding.

So if the internal format is identical, why does the INFERNAL database
ignore indexes when you have a text compared to a varchar?

Ryan