On Monday, 22 April 2002 18:41, you wrote: > Edward ([EMAIL PROTECTED]) reports a bug with a severity of 1 > The lower the number the more severe it is. > > Short Description > ECPG: inserting float numbers > > Long Description > 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 > /* fragment of the program code */ > exec sql begin declare section; > /* ... */ > float rate; /* level change rate */ > /* ... */ > exec sql end declare section; > /* ... */ > sprintf(buf,"INSERT: %.8s.%.8s @%.32s -> %08x/%08x %f %f %f %f %f", loc, > name, ts, devstat, meastat, relative, level, ullage, rate, volume ); > dbg_message( __FILE__, __LINE__, DBG_DBI, MSG_SQL, buf ); > exec sql INSERT INTO rdr_meas ( name, loc, ts, devstat, meastat, relative, > level, ullage, levelrate, volume ) VALUES ( :name, :loc, 'now', :devstat, > :meastat, :relative, :level, :ullage, :rate, :volume ) ; /* ... */ > --- > The above produces in ECPG debug : > ... > [2782]: ECPGexecute line 1042: QUERY: insert into rdr_meas ( name , loc , > ts , devstat , meastat , relative , level , ullage , levelrate , > volume ) values ( 'NR1 ' , 'Swedwood' , 'now' , 0 , 4096 , > 37.388961791992 , 0.71039032936096 , 1.1896096467972 , -5.5060195336409e-06 > ^A , 3.4871203899384 ) on connection radar [2782]: ECPGexecute line 1042: > Error: ERROR: parser: parse error at or near "^A" [2782]: raising sqlcode > -400 in line 1042, ''ERROR: parser: parse error at or near "^A"' in line > 1042.'. > > > No file was uploaded with this report > ---------- I am fighting with this bug on "PostgreSQL 7.2 on i686-pc-linux-gnu, compiled by GCC 2.96". It appears also on 7.1.x, which was reported previously (see buglist -> ecpg: unstable INSERT operation) on August 2001. The temporary workaround I apllied here is "if" statement before INSERT: if( fabs( rate ) < 1.0e-3 ) rate = 0.0;
Edward ---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/users-lounge/docs/faq.html