Thread

  1. Bug in parser?

    Gerhard Dieringer <gerhard.dieringer@arcor.de> — 2003-05-31T20:16:24Z

    
    ============================================================================
                            POSTGRESQL BUG REPORT TEMPLATE
    ============================================================================
    
    
    Your name		:	Gerhard Dieringer
    Your email address	:	Gerhard.Dieringer@nexgo.de
    
    
    System Configuration
    ---------------------
      Architecture (example: Intel Pentium)  	:Dual Intel Pentium II
    
      Operating System (example: Linux 2.0.26 ELF) 	: Linux 2.2.16
    
      PostgreSQL version (example: PostgreSQL-7.3.3):   PostgreSQL-7.3.3
    
      Compiler used (example:  gcc 2.95.2)		:   gcc-Version 3.3
    
    
    Please enter a FULL description of your problem:
    ------------------------------------------------
    Inconsistent results when calling '+' operator with text arguemts
    The last 4 results (f.e. '1' + '2' -> 'c') are very strange.
    
    
    
    Please describe a way to repeat the problem.   Please try to provide a
    concise reproducible example, if at all possible: 
    ----------------------------------------------------------------------
    select 1 + '2' as result;
     result 
    --------
          3
    (1 row)
    
    select 1 + '2.3' as result;
    psql:error.sql:2: ERROR:  pg_atoi: error in "2.3": can't parse ".3"
    select 1.5 + '2' as result;
     result 
    --------
        3.5
    (1 row)
    
    select 1.4 + '2.3' as result;
     result 
    --------
        3.7
    (1 row)
    
    select '1' + '2' as result;
     result 
    --------
     c
    (1 row)
    
    select '1' + '2.3' as result;
     result 
    --------
     c
    (1 row)
    
    select '1.5' + '2' as result;
     result 
    --------
     c
    (1 row)
    
    select '1.4' + '2.3' as result;
     result 
    --------
     c
    (1 row)
    
    
    
    
    
    If you know how this problem might be fixed, list the solution below:
    ---------------------------------------------------------------------
    Sorry :-((
    
    
    
    
    
  2. Re: Bug in parser?

    Stephan Szabo <sszabo@megazone23.bigpanda.com> — 2003-06-01T15:05:36Z

    On 31 May 2003, Gerhard Dieringer wrote:
    
    >
    >
    > ============================================================================
    >                         POSTGRESQL BUG REPORT TEMPLATE
    > ============================================================================
    >
    >
    > Your name		:	Gerhard Dieringer
    > Your email address	:	Gerhard.Dieringer@nexgo.de
    >
    >
    > System Configuration
    > ---------------------
    >   Architecture (example: Intel Pentium)  	:Dual Intel Pentium II
    >
    >   Operating System (example: Linux 2.0.26 ELF) 	: Linux 2.2.16
    >
    >   PostgreSQL version (example: PostgreSQL-7.3.3):   PostgreSQL-7.3.3
    >
    >   Compiler used (example:  gcc 2.95.2)		:   gcc-Version 3.3
    >
    >
    > Please enter a FULL description of your problem:
    > ------------------------------------------------
    > Inconsistent results when calling '+' operator with text arguemts
    > The last 4 results (f.e. '1' + '2' -> 'c') are very strange.
    
    '1'+'2' is pretty meaningless.  In the other cases you're giving a type
    that has a meaningful + operator so it's trying to convert  the quoted
    argument to an appropriate type for +.  In the '1'+'2' case it's
    converting to "char" (single character) and adding those which seems
    marginally reasonable to me (although I think that "char" is pretty
    silly).
    
    I'm not sure what you expected '1'+'2' to give though, concatenation is ||
    and I can't think of something meaningful to do with it.
    
    
    
  3. Re: Bug in parser?

    Tom Lane <tgl@sss.pgh.pa.us> — 2003-06-01T15:32:26Z

    Gerhard Dieringer <Gerhard.Dieringer@arcor.de> writes:
    > Inconsistent results when calling '+' operator with text arguemts
    
    I suspect you are looking for the '||' operator, which is the SQL-standard
    spelling of concatenation.  '+' ends up invoking the one-byte-"char"
    datatype's addition operator.
    
    			regards, tom lane