Stephan Szabo wrote:
On Wed, 3 Mar 2004, Bill Moran wrote:
Am I missing something here?
agelis=# select B'1'::int;
int4
------
1
(1 row)
agelis=# select 1::bit;
bit
-----
0
(1 row)
agelis=# select B'1'=1;
?column?
----------
f
(1 row)
Last I checked, binary 1 and integer 1 were equal. Is this a bug, or is there
a reason for this that I need educated on? Why does int 1 cast to binary 0?
Hmm, on my 7.4 machine, I get an error saying that there's no = operator
for bit and integer. If I cast the B'1' into an integer I get a true
result.
The reason for 1::bit being 0 is that int4 -> bit(n) casts cast to a 32
bit bit string. IIRC, when bit strings are truncated for size in casts,
the spec says to take from the left.
Yeah. I made some changes to the casting config, so that int to bit is
cast automatically, instead of requiring an explicit cast. It made the
code I was converting easier to manage.
I dont' know why my original email took so long to hit the list, but I did
find out the same thing you just described. In the end I ended up converting
all the bit functions to int, so that I don't have to deal with the casting
pecularities, which just seemed like the easiest solution at the time.
--
Bill Moran
Potential Technologies
http://www.potentialtech.com
---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings