Thread

  1. boolean over char(1)

    Thomas T. Thai <tom@minnesota.com> — 2003-01-03T19:58:46Z

    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?
    
    
    
    
    
  2. Re: boolean over char(1)

    Tom Lane <tgl@sss.pgh.pa.us> — 2003-01-03T21:27:21Z

    "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
    
    
  3. Re: boolean over char(1)

    Bruce Momjian <pgman@candle.pha.pa.us> — 2003-01-04T00:50:33Z

    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
    
    
  4. Re: boolean over char(1)

    Tom Lane <tgl@sss.pgh.pa.us> — 2003-01-04T01:04:13Z

    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