1-byte integers

1-byte integers

am 17.09.2004 23:40:45 von stig erikson

how can i specify an integer to be one byte byte or even 4 bits long?
int1, int(1), tinyint are nowhere to be seen.
smallest i can find is smallint that is 2 bytes.

in a table i will have a few columns with values between 0 and 15, so
optimally i am looking for some kind of unsigned 4-bits, or (un)signed
integer (1-byte).

i can live with smallint for a while but estimate a few millions of rows
in the table to be a reality soon, in such cases every byte matters.

is there some

stig

Re: 1-byte integers

am 18.09.2004 17:39:01 von gsstark

stig erikson writes:

> how can i specify an integer to be one byte byte or even 4 bits long?
> int1, int(1), tinyint are nowhere to be seen.
> smallest i can find is smallint that is 2 bytes.

There's a type called "char" (the double quotes are needed). It's used by
postgres system catalogues but it's available for users too. It's a little
quirky since it has operators that treat it as a 1 byte text data type and
other operators that treat it as an integer data type. But that doesn't
normally lead to any problems, just strange symptoms when your code has a bug.

Other than that there are things like bit(4) which has a cast to and from
integer. But they won't save you any storage space. If you have multiple
columns like this and want to define a new type that aggregates them all for
storage but lets you access them individually that could be useful.

--
greg


---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql.org so that your
message can get through to the mailing list cleanly