Re: [BUGS] Bug #640: ECPG: inserting float numbers - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: [BUGS] Bug #640: ECPG: inserting float numbers
Date
Msg-id 200206111058.g5BAwsv23958@candle.pha.pa.us
Whole thread Raw
In response to Re: [BUGS] Bug #640: ECPG: inserting float numbers  (Lee Kindness <lkindness@csl.co.uk>)
Responses Re: [BUGS] Bug #640: ECPG: inserting float numbers  (Lee Kindness <lkindness@csl.co.uk>)
Re: [BUGS] Bug #640: ECPG: inserting float numbers  (Michael Meskes <meskes@postgresql.org>)
List pgsql-hackers
OK, I have reproduced the problem on my machine:#$  ./a.out floattestcol1: -0.000006*!*!* Error -220: No such
connectionNULL in line 21.
 

Wow, how did that "A" get into the query string:
 insert into tab1 ( col1  ) values ( -6.0000002122251e-06A )

Quite strange.  Michael, any ideas?

---------------------------------------------------------------------------

Lee Kindness wrote:
Content-Description: message body text

> Bruce, the attached source reproduces this on 7.2, I don't have a
> later version at hand to test if it's been fixed:
> 
>  createdb floattest
>  echo "CREATE TABLE tab1(col1 FLOAT);" | psql floattest
>  ecpg insert-float.pgc
>  gcc insert-float.c -lecpg -lpq
>  ./a.out floattest
> 
> results in:
> 
>  col1: -0.000006
>  *!*!* Error -400: 'ERROR:  parser: parse error at or near "a"' in line 21.
> 
> and in epcgdebug:
> 
>  [29189]: ECPGexecute line 21: QUERY: insert into tab1 ( col1  ) values ( -6.0000002122251e-06A ) on connection
floattest
>  [29189]: ECPGexecute line 21: Error: ERROR:  parser: parse error at or near "a"
>  [29189]: raising sqlcode -400 in line 21, ''ERROR:  parser: parse error at or near "a"' in line 21.'.
> 
> Regards, Lee Kindness.
> 
> Bruce Momjian writes:
>  > Has this been addressed?  Can you supply a reproducable example?
>  > Edward Pilipczuk wrote:
>  > > On Monday, 22 April 2002 18:41, you wrote:
>  > > > Edward (edx@astercity.net) reports a bug with a severity of 1
>  > > > ECPG: inserting float numbers
>  > > > Inserting records with single precision real variables having small value
>  > > > (range 1.0e-6 or less) frequently results in errors in ECPG translations
>  > > > putting into resulted sql statement unexpected characters => see fragments
>  > > > of sample code and ECPGdebug log where after value of rate variable the
>  > > > unexpected character '^A' appears
>  > > >
>  > > > Sample Code
>  > > > [ snip ]
> 

> #include <stdlib.h>
> 
> EXEC SQL INCLUDE sqlca;
> 
> int main(int argc, char **argv)
> {
>   EXEC SQL BEGIN DECLARE SECTION;
>   char *db = argv[1];
>   float col1;
>   EXEC SQL END DECLARE SECTION;
>   FILE *f;
> 
>   if( (f = fopen("ecpgdebug", "w" )) != NULL )
>     ECPGdebug(1, f);
> 
>   EXEC SQL CONNECT TO :db;
>   EXEC SQL BEGIN;
> 
>   col1 = -6e-06;
>   printf("col1: %f\n", col1);
>   EXEC SQL INSERT INTO tab1(col1) VALUES (:col1);
>   if( sqlca.sqlcode < 0 )
>     {
>       fprintf(stdout, "*!*!* Error %ld: %s\n", sqlca.sqlcode, sqlca.sqlerrm.sqlerrmc);
>       EXEC SQL ABORT;
>       EXEC SQL DISCONNECT;
>       return( 1 );
>     }
>   else
>     {
>       EXEC SQL COMMIT;
>       EXEC SQL DISCONNECT;
>       return( 0 );
>     }
> }

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@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: NunoACHenriques
Date:
Subject: Re: tuplesort: unexpected end of data
Next
From: Lee Kindness
Date:
Subject: Re: [BUGS] Bug #640: ECPG: inserting float numbers