Re: Bug #640: ECPG: inserting float numbers

From: Edward Pilipczuk <edx(at)astercity(dot)net>
To: edx(at)astercity(dot)net, pgsql-bugs(at)postgresql(dot)org
Subject: Re: Bug #640: ECPG: inserting float numbers
Date: 2002-05-01 05:25:55
Message-ID: 200205010525.g415Pq002655@plonk.dom
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-hackers

On Monday, 22 April 2002 18:41, you wrote:
> Edward (edx(at)astercity(dot)net) 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

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Nigel J. Andrews 2002-05-01 22:10:13 createdb comments
Previous Message Jean-Luc Lachance 2002-04-30 22:07:50 Re: performance on update table from a join

Browse pgsql-hackers by date

  From Date Subject
Next Message Christopher Kings-Lynne 2002-05-01 09:08:54 Problem with restoring a 7.1 dump
Previous Message Ross J. Reedstrom 2002-05-01 05:21:46 Re: [INTERFACES] Schemas: status report, call for developers