Is the following behavior intentional? If so, what's the reasoning behind it?
nconway=# select 1::bit; bit ----- 0 (1 row) nconway=# select '1'::bit; bit ----- 1 (1 row) nconway=# select X'1'::bit; bit ----- 0 (1 row) nconway=# select 1::bit varying; ERROR: cannot cast type integer to bit varying nconway=# select 4::int2::bit; ERROR: cannot cast type smallint to bit nconway=# select 4::bit; bit ----- 0 (1 row) nconway=# select '4'::bit; ERROR: "4" is not a valid binary digit nconway=# select X'4'::bit varying; varbit -------- 0100 (1 row) -- why is that 4 bits, not 3? nconway=# select '14'::int::bit; bit ----- 0 (1 row) nconway=# select bit('14'::int); ERROR: syntax error at or near "'14'" at character 12 nconway=# select "bit"('14'::int); bit ---------------------------------- 00000000000000000000000000001110 (1 row) -- shouldn't bit be equivalent to bit(1), which should be right-truncated? Cheers, Neil ---------------------------(end of broadcast)--------------------------- TIP 9: the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match