Can anyone explain why this is the case?
On 20-Nov-07, at 2:42 PM, Heikki Linnakangas wrote:
Cade Cairns wrote:
When casting a bit string constant using hexadecimal notation to a
longer
bit string, the result is padded with 0's on the right. This will
result in
inconsistent/useless results:
test=# select x'ff'::integer;
int4 ------
255
(1 row)
test=# select x'ff'::bit(16)::integer;
int4 -------
65280
(1 row)
It works like it should according to the manual:
http://www.postgresql.org/docs/8.1/interactive/datatype-bit.html
"Note: If one explicitly casts a bit-string value to bit(n), it
will be truncated or zero-padded on the right to be exactly n bits,
without raising an error. Similarly, if one explicitly casts a bit-
string value to bit varying(n), it will be truncated on the right if
it is more than n bits."
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com
---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings