Weird 'bit' type behaviour

Started by Christopher Kings-Lynneover 21 years ago2 messages
#1Christopher Kings-Lynne
chriskl@familyhealth.com.au

Is there any reason for this behaviour:

test=# select 1::bit;
bit
-----
0
(1 row)

test=# select '1'::bit;
bit
-----
1
(1 row)

Chris

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Christopher Kings-Lynne (#1)
Re: Weird 'bit' type behaviour

Christopher Kings-Lynne <chriskl@familyhealth.com.au> writes:

Is there any reason for this behaviour:
test=# select 1::bit;
bit
-----
0
(1 row)

This is actually "1::int4::bit(1)", and what you are getting is
the sign bit. See previous discussions about int-to-bit conversion
and which part of the int we ought to take.

What about these?

Again, it's a field-width issue. These all default to bit(1) and
you're shifting out of the defined width.

regards, tom lane