On 10/03/2014 03:59 PM, Tom Lane wrote:
Adrian Klaver <adrian.klaver@xxxxxxxxxxx> writes:
page 28:
Unlike many
databases, char(n) is NOT stored as afixed-sizedfield
in Postgres. It is treated exactly the sameas
varchar(n)except for being padded
Which directly contradicts the information on page 27:
This info is probably not as well worded as it could be, but it's not
really wrong. The key point is that char(N) is blank-padded (thereby
wasting space) to be N *characters*, but that is not necessarily N
*bytes*, because of possible multi-byte characters. Therefore the engine
has to treat it as a variable-length datatype.
Well that is a distinction I had missed, thanks for the heads up. So the
bottom line is char(N) is variable length, but for values that do not
reach length N will require more storage space then varchar(n).
I believe in some some other DBMSes, char(N) means N *bytes* and is
treated as a fixed-size datatype. Dunno what they do with multibyte
encodings.
regards, tom lane
--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx
--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general