INSERT VALUES error in ecpg.

Started by SAKAIDAover 26 years ago3 messages
#1SAKAIDA
sakaida@psn.co.jp

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;
#2Bruce Momjian
maillist@candle.pha.pa.us
In reply to: SAKAIDA (#1)
Re: [HACKERS] INSERT VALUES error in ecpg.

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, Pennsylvania 19026
#3Bruce Momjian
maillist@candle.pha.pa.us
In reply to: SAKAIDA (#1)
Re: [HACKERS] INSERT VALUES error in ecpg.

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, Pennsylvania 19026