| From: | Kris Jurka <books(at)ejurka(dot)com> |
|---|---|
| To: | Keith Hankin <keith105(at)yahoo(dot)com> |
| Cc: | pgsql-jdbc(at)postgresql(dot)org |
| Subject: | Re: One byte integer support |
| Date: | 2005-01-06 20:17:10 |
| Message-ID: | Pine.BSO.4.56.0501061508520.30558@leary.csoft.net |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-jdbc |
On Thu, 6 Jan 2005, Keith Hankin wrote:
> Is there any way to support one byte integers? I am
> using JDBC and would like to use setByte() method to
> populate values of a single-byte integer valued
> column. I tried defining the column as character(1),
> but I get the error message:
>
> Exception in thread "main"
> org.postgresql.util.PSQLException: ERROR: value too
> long for type character(1)
>
> I don't see how a byte is too long for character(1).
Character is a textual data type, byte is a numeric value so when you set
a byte value of say 145 to a text type you get the string '145' which is
three characters.
Note that character(1) does not take up one byte of space on disk. It is
a one character field, not one byte. Multibyte character sets may need
more than one byte to store a single character, so this is variable byte
length field that takes up at least 5 bytes of space. 4 bytes of length
data and then the actual data bytes.
> Is there any data type like MySQL's tinyint?
>
Possibly the system type "char" (needs the quotes), but I have no idea how
that will work with the JDBC driver. Going with smallint may be the best
thing to do. Before assuming that a tinyint would actually save you space
you need to make sure you take into account padding and alignment.
Kris Jurka
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Oliver Jowett | 2005-01-06 21:30:41 | Re: Removing our datasource/pooling implementation. |
| Previous Message | Barry Lind | 2005-01-06 20:15:44 | Re: Removing our datasource/pooling implementation. |