1

We are running Postgres 8.3.3 and the documentation (http://www.postgresql.org/docs/8.3/static/datatype-character.html) leaves me with a few questions about how storage is allocated.

For the purposes of this discussion I'd like to stick to assuming a character = 1 byte.

I understand that character(n) blank pads so you always have n bytes stored.

If your char(n) > 126 characters long, you have an overhead of 4 bytes (presumably for storing the length), otherwise an overhead of 1 byte.

I'm interested in what happens with varchar(n).

If I use varchar(255) and store a 4 character string in it, do I have 4 bytes for the string & 4 bytes overhead, or do I have just one byte overhead until I hit the 126 character limit?

I've googled and can't find this documented anywhere.

Any thoughts?

1 Answer 1

2

It's the length of the data you store that controls the overhead, not the maximum length of the column. So you have the one byte overhead until you hit 126.

Sign up to request clarification or add additional context in comments.

3 Comments

Thanks Magnus. That answers my question ... icing on the cake would be whether or not this is documented anywhere ...
@nos - the question was about varchar, not char.
@apz74 - that page actually has it. Not all that easy to derive from it, of course...

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.