Re: [HACKERS] INSERT VALUES error in ecpg. - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: [HACKERS] INSERT VALUES error in ecpg.
Date
Msg-id 199907120225.WAA13263@candle.pha.pa.us
Whole thread Raw
In response to INSERT VALUES error in ecpg.  (SAKAIDA <sakaida@psn.co.jp>)
List pgsql-hackers
I have applied this patch, and it will appear in 6.5.1.


> Hi,
> 
>    In ecpg, the error occurs in value lists of the INSERT statement,
> when 'short' or 'unsigned short' host variables are used.
> 
> 1. Program sample
> 
>    exec sql begin declare section;
>       short s ;
>       unsigned short us;
>    exec sql end   declare section;
>    exec sql create table test(s smallint, us smallint);
>    exec sql commit;
>    s = 1; us =32000;
>    exec sql insert into test values( :s, :us ) ;  <== error
> 
> 2. Error messege
> 
>    Following error message are output.  
>    "i4toi2: '-600309759' causes int2 underflow"
> 
> 3. Patch
> 
>    The error does not occur, when following patches were applied.  
> Is this patch right?  please confirm it.  
> 
> --
> Regards.
> 
> SAKAIDA Masaaki <sakaida@psn.co.jp>
> Personal Software, Inc. Osaka Japan
> 
> 
> *** postgresql-6.5/src/interfaces/ecpg/lib/ecpglib.c.orig    Wed Jun 24 15:21:30 1999
> --- postgresql-6.5/src/interfaces/ecpg/lib/ecpglib.c    Wed Jun 24 15:31:57
> 1999
> ***************
> *** 469,480 ****
> --- 469,488 ----
>               switch (var->type)
>               {
>                   case ECPGt_short:
> +                     sprintf(buff, "%d", *(short *) var->value);
> +                     tobeinserted = buff;
> +                     break;
> + 
>                   case ECPGt_int:
>                       sprintf(buff, "%d", *(int *) var->value);
>                       tobeinserted = buff;
>                       break;
>   
>                   case ECPGt_unsigned_short:
> +                     sprintf(buff, "%d", *(unsigned short *) var->value);
> +                     tobeinserted = buff;
> +                     break;
> + 
>                   case ECPGt_unsigned_int:
>                       sprintf(buff, "%d", *(unsigned int *) var->value);
>                       tobeinserted = buff;
> 
> 
> 


--  Bruce Momjian                        |  http://www.op.net/~candle maillist@candle.pha.pa.us            |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: [HACKERS] Arrays versus 'type constant' syntax
Next
From: Bruce Momjian
Date:
Subject: Re: [HACKERS] 6.5.1 CHANGES