Thread

  1. Comparison with "true" in source code

    Itagaki Takahiro <itagaki.takahiro@gmail.com> — 2010-11-01T03:17:02Z

    There are some "== true" in the codes, but they might not be safe
    because all non-zero values are true in C. Is it worth cleaning up them?
    
    src/backend/access/gin/ginget.c(1364):#define GinIsVoidRes(s)		(
    ((GinScanOpaque) scan->opaque)->isVoidRes == true )
    src/backend/access/gist/gistproc.c(383):		if (allisequal == true && (
    src/backend/commands/sequence.c(1107):		Assert(new->is_cycled == false
    || new->is_cycled == true);
    src/backend/tsearch/regis.c(251):				if (mb_strchr((char *) ptr->data,
    c) == true)
    src/backend/utils/adt/geo_ops.c(3899):	for (i = start; i < poly->npts
    && res == true; i++)
    src/backend/utils/adt/geo_ops.c(3975):		for (i = 0; i < polyb->npts &&
    result == true; i++)
    src/backend/utils/adt/tsrank.c(112):	if (item->prefix == true)
    src/backend/utils/adt/tsvector_op.c(628):	if (res == false &&
    val->prefix == true)
    src/include/c.h(475):#define BoolIsValid(boolean)	((boolean) == false
    || (boolean) == true)
    src/bin/psql/print.c(832):					if (opt_border != 0 ||
    format->wrap_right_border == true)
    src/interfaces/ecpg/ecpglib/connect.c(168):	if (con->autocommit ==
    true && strncmp(mode, "off", strlen("off")) == 0)
    src/interfaces/ecpg/preproc/ecpg.addons(356):		if (compat ==
    ECPG_COMPAT_INFORMIX_SE && autocommit == true)
    src/interfaces/ecpg/preproc/ecpg.c(310):					ptr2ext[3] = (header_mode
    == true) ? 'h' : 'c';
    src/interfaces/ecpg/preproc/ecpg.c(327):					ptr2ext[1] = (header_mode
    == true) ? 'h' : 'c';
    
    -- 
    Itagaki Takahiro
    
    
  2. Re: Comparison with "true" in source code

    Michael Meskes <meskes@postgresql.org> — 2010-11-02T17:19:42Z

    On Mon, Nov 01, 2010 at 12:17:02PM +0900, Itagaki Takahiro wrote:
    > There are some "== true" in the codes, but they might not be safe
    > because all non-zero values are true in C. Is it worth cleaning up them?
    > ...
    > src/interfaces/ecpg/ecpglib/connect.c(168):	if (con->autocommit ==
    > true && strncmp(mode, "off", strlen("off")) == 0)
    > src/interfaces/ecpg/preproc/ecpg.addons(356):		if (compat ==
    > ECPG_COMPAT_INFORMIX_SE && autocommit == true)
    > src/interfaces/ecpg/preproc/ecpg.c(310):					ptr2ext[3] = (header_mode
    > == true) ? 'h' : 'c';
    > src/interfaces/ecpg/preproc/ecpg.c(327):					ptr2ext[1] = (header_mode
    > == true) ? 'h' : 'c';
    
    I actually see no reason why these variables are not defined as bool instead of
    int, so I changed this. Hopefully I found all of them.
    
    Michael
    -- 
    Michael Meskes
    Michael at Fam-Meskes dot De, Michael at Meskes dot (De|Com|Net|Org)
    Michael at BorussiaFan dot De, Meskes at (Debian|Postgresql) dot Org
    Jabber: michael.meskes at googlemail dot com
    VfL Borussia! Força Barça! Go SF 49ers! Use Debian GNU/Linux, PostgreSQL
    
    
  3. Re: Comparison with "true" in source code

    Itagaki Takahiro <itagaki.takahiro@gmail.com> — 2010-11-04T01:45:14Z

    On Wed, Nov 3, 2010 at 2:19 AM, Michael Meskes <meskes@postgresql.org> wrote:
    > On Mon, Nov 01, 2010 at 12:17:02PM +0900, Itagaki Takahiro wrote:
    >> There are some "== true" in the codes, but they might not be safe
    >> because all non-zero values are true in C. Is it worth cleaning up them?
    
    Here is a proposed cleanup that replaces "boolean == true" with "boolean".
    I didn't touch "== false" unless they are not in pairs of comparisons
    with true because comparison with false is a valid C code.
    
    Note that I also changed "boolean != true" in pg_upgrade,
    but I didn't change ones in xlog.c because it might check
    corrupted fields in control files.
    
    >> src/interfaces/ecpg/preproc/ecpg.c(310):
    >>    ptr2ext[3] = (header_mode == true) ? 'h' : 'c';
    > I actually see no reason why these variables are not defined as bool instead of
    > int, so I changed this. Hopefully I found all of them.
    
    I added an additional cleanup to 'header_mode' in ecpg; I changed the type
    from bool to char to hold 'h' or 'c'. Do you think it is reasonable?
    
    -- 
    Itagaki Takahiro
    
  4. Re: Comparison with "true" in source code

    Robert Haas <robertmhaas@gmail.com> — 2010-11-04T13:16:45Z

    On Wed, Nov 3, 2010 at 6:45 PM, Itagaki Takahiro
    <itagaki.takahiro@gmail.com> wrote:
    > On Wed, Nov 3, 2010 at 2:19 AM, Michael Meskes <meskes@postgresql.org> wrote:
    >> On Mon, Nov 01, 2010 at 12:17:02PM +0900, Itagaki Takahiro wrote:
    >>> There are some "== true" in the codes, but they might not be safe
    >>> because all non-zero values are true in C. Is it worth cleaning up them?
    >
    > Here is a proposed cleanup that replaces "boolean == true" with "boolean".
    > I didn't touch "== false" unless they are not in pairs of comparisons
    > with true because comparison with false is a valid C code.
    
    It looks like you have one or two irrelevant whitespace changes in ecpg.c.
    
    -- 
    Robert Haas
    EnterpriseDB: http://www.enterprisedb.com
    The Enterprise PostgreSQL Company
    
    
  5. Re: Comparison with "true" in source code

    Robert Haas <robertmhaas@gmail.com> — 2010-11-15T02:13:29Z

    On Wed, Nov 3, 2010 at 9:45 PM, Itagaki Takahiro
    <itagaki.takahiro@gmail.com> wrote:
    > On Wed, Nov 3, 2010 at 2:19 AM, Michael Meskes <meskes@postgresql.org> wrote:
    >> On Mon, Nov 01, 2010 at 12:17:02PM +0900, Itagaki Takahiro wrote:
    >>> There are some "== true" in the codes, but they might not be safe
    >>> because all non-zero values are true in C. Is it worth cleaning up them?
    >
    > Here is a proposed cleanup that replaces "boolean == true" with "boolean".
    > I didn't touch "== false" unless they are not in pairs of comparisons
    > with true because comparison with false is a valid C code.
    >
    > Note that I also changed "boolean != true" in pg_upgrade,
    > but I didn't change ones in xlog.c because it might check
    > corrupted fields in control files.
    >
    >>> src/interfaces/ecpg/preproc/ecpg.c(310):
    >>>    ptr2ext[3] = (header_mode == true) ? 'h' : 'c';
    >> I actually see no reason why these variables are not defined as bool instead of
    >> int, so I changed this. Hopefully I found all of them.
    >
    > I added an additional cleanup to 'header_mode' in ecpg; I changed the type
    > from bool to char to hold 'h' or 'c'. Do you think it is reasonable?
    
    I looked at this but found that part a bit too clever for its own good.
    
    So committed the rest, plus an additional one-line change to psql's
    print.c to avoid making the two accesses to format->wrap_right_pointer
    inconsistent with each other.
    
    -- 
    Robert Haas
    EnterpriseDB: http://www.enterprisedb.com
    The Enterprise PostgreSQL Company
    
    
  6. Re: Comparison with "true" in source code

    Itagaki Takahiro <itagaki.takahiro@gmail.com> — 2010-11-15T02:21:30Z

    On Mon, Nov 15, 2010 at 11:13, Robert Haas <robertmhaas@gmail.com> wrote:
    >> I added an additional cleanup to 'header_mode' in ecpg; I changed the type
    >> from bool to char to hold 'h' or 'c'. Do you think it is reasonable?
    >
    > I looked at this but found that part a bit too clever for its own good.
    >
    > So committed the rest, plus an additional one-line change to psql's
    > print.c to avoid making the two accesses to format->wrap_right_pointer
    > inconsistent with each other.
    
    Thanks!
    
    -- 
    Itagaki Takahiro