Thread

  1. bug fix for select 'some Text'::char(16) (newest snapshot)

    Zeugswetter Andreas <andreas.zeugswetter@telecom.at> — 1998-02-02T13:35:52Z

    I noticed a bug in parse_expr.c line 104:
    
    template1=> select 'Andreas'::char(16);
    PQexec() -- Request was sent to backend, but backend closed the channel
    before responding.
            This probably means the backend terminated abnormally before or
    while processing the request.
    template1=> \c template1
    connecting to new database: template1
    template1=> select 'Andreas'::varchar(16);
    PQexec() -- Request was sent to backend, but backend closed the channel
    before responding.
            This probably means the backend terminated abnormally before or
    while processing the request.
    template1=> \c template1
    template1=> select 'this works'::char16;
    ?column?
    --------
    this works
    (1 row)
    snapshot 020298 on aix_gcc and on linux_elf same behavior
    
    dbx sais:
    (dbx) where
    [stipped some lines]
    palloc(0x0), line 69 in "palloc.c"
    bpcharin(0x2007cb48, 0x12, 0x0), line 78 in "varchar.c"
    fmgr_c(0x2ff20520, 0x2ff204f8, 0x2ff20530), line 107 in "fmgr.c"
    fmgr(), line 285 in "fmgr.c"
    stringTypeString(0x2008a108, 0x2007cb48, 0x0), line 146 in
    "parse_type.c"
    parser_typecast(0x20088ab0, 0x20088ae8, 0x0), line 434 in "parse_expr.c"
    unnamed block $b768, line 104 in "parse_expr.c"
    transformExpr(0x20088c88, 0x20088aa8, 0x1), line 104 in "parse_expr.c"
    [stripped some lines]
    
    Notice: 	the atttypmod is 0 instead of -1 (or maybe it should be
    16, but I would 
    	ignore the char(16) argument in the cast and use -1)
    
    line should be:
    *** parse_expr.c.ori    Mon Feb  2 09:00:20 1998
    --- parse_expr.c        Mon Feb  2 14:20:14 1998
    ***************
    *** 103,105 ****
                                    if (con->typename != NULL)
    !                                       result = parser_typecast(val,
    con->typename, 0);
                                    else
    --- 103,105 ----
                                    if (con->typename != NULL)
    !                                       result = parser_typecast(val,
    con->typename, -1);
                                    else
    
    seems to work fine !
    
    Andreas
    
    
  2. Re: [HACKERS] bug fix for select 'some Text'::char(16) (newest snapshot)

    Bruce Momjian <maillist@candle.pha.pa.us> — 1998-02-02T17:05:17Z

    Yes, I am inclined to agree with you.  I will apply the patch.
    
    ---------------------------------------------------------------------------
    
    
    > *** parse_expr.c.ori    Mon Feb  2 09:00:20 1998
    > --- parse_expr.c        Mon Feb  2 14:20:14 1998
    > ***************
    > *** 103,105 ****
    >                                 if (con->typename != NULL)
    > !                                       result = parser_typecast(val,
    > con->typename, 0);
    >                                 else
    > --- 103,105 ----
    >                                 if (con->typename != NULL)
    > !                                       result = parser_typecast(val,
    > con->typename, -1);
    >                                 else
    > 
    > seems to work fine !
    > 
    > Andreas
    > 
    > 
    
    
    -- 
    Bruce Momjian
    maillist@candle.pha.pa.us