From: | Stephan Szabo <sszabo(at)megazone(dot)bigpanda(dot)com> |
---|---|
To: | Bill Moran <wmoran(at)potentialtech(dot)com> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: Shouldn't B'1' = 1::bit be true? |
Date: | 2004-03-09 23:34:36 |
Message-ID: | 20040309152612.F7528@megazone.bigpanda.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general pgsql-hackers |
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.
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2004-03-09 23:43:58 | Re: Shouldn't B'1' = 1::bit be true? |
Previous Message | Stephan Szabo | 2004-03-09 23:22:48 | Re: C locale |
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2004-03-09 23:43:58 | Re: Shouldn't B'1' = 1::bit be true? |
Previous Message | Bruce Momjian | 2004-03-09 23:27:50 | Re: Stuff that doesn't work yet in IPv6 patch |