Christopher Kings-Lynne <chriskl(at)familyhealth(dot)com(dot)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