OK, I have reproduced the problem on my machine:
        
        #$  ./a.out floattest
        col1: -0.000006
        *!*!* Error -220: No such connection NULL 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 ([EMAIL PROTECTED]) 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
  [EMAIL PROTECTED]               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to