Обсуждение: boolean over char(1)

Поиск
Список
Период
Сортировка

boolean over char(1)

От
"Thomas T. Thai"
Дата:
Is there any advantages of using datatype boolean over char(1)? If there
isn't I think char(1) is more portable across other DBM?




Re: boolean over char(1)

От
Tom Lane
Дата:
"Thomas T. Thai" <tom@minnesota.com> writes:
> Is there any advantages of using datatype boolean over char(1)?

boolean fits in 1 byte; char(1) requires 5 bytes (maybe more, depending
on alignment considerations).

boolean will be considerably faster to operate on, being pass-by-value.

char(1) will happily accept values that don't correspond to booleans
(eg, if you use 't' and 'f' to represent booleans in a char(1), what
will you do with 'y' or 'z'?)  You could possibly fix that with a
check constraint, but that slows things down still more.

boolean is, um, boolean: it behaves as expected in boolean expressions.
You can't do AND, OR, NOT directly on chars.


> If there isn't I think char(1) is more portable across other DBM?

The boolean datatype is standard in SQL99.

            regards, tom lane

Re: boolean over char(1)

От
Bruce Momjian
Дата:
Also, we do support "char", which is one byte.  You need to specify the
quotes when creating the column.

---------------------------------------------------------------------------

Tom Lane wrote:
> "Thomas T. Thai" <tom@minnesota.com> writes:
> > Is there any advantages of using datatype boolean over char(1)?
>
> boolean fits in 1 byte; char(1) requires 5 bytes (maybe more, depending
> on alignment considerations).
>
> boolean will be considerably faster to operate on, being pass-by-value.
>
> char(1) will happily accept values that don't correspond to booleans
> (eg, if you use 't' and 'f' to represent booleans in a char(1), what
> will you do with 'y' or 'z'?)  You could possibly fix that with a
> check constraint, but that slows things down still more.
>
> boolean is, um, boolean: it behaves as expected in boolean expressions.
> You can't do AND, OR, NOT directly on chars.
>
>
> > If there isn't I think char(1) is more portable across other DBM?
>
> The boolean datatype is standard in SQL99.
>
>             regards, tom lane
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Re: boolean over char(1)

От
Tom Lane
Дата:
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> Also, we do support "char", which is one byte.  You need to specify the
> quotes when creating the column.

But he's looking for "more standard", which "char" surely is not.

            regards, tom lane