Обсуждение: INSERT VALUES error in ecpg.

Поиск
Список
Период
Сортировка

INSERT VALUES error in ecpg.

От
SAKAIDA
Дата:
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
createtable 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;
 



Re: [HACKERS] INSERT VALUES error in ecpg.

От
Bruce Momjian
Дата:
This patch looks good.  Comments?


> 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
 


Re: [HACKERS] INSERT VALUES error in ecpg.

От
Bruce Momjian
Дата:
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