ecpg: unstable INSERT operation
От | pgsql-bugs@postgresql.org |
---|---|
Тема | ecpg: unstable INSERT operation |
Дата | |
Msg-id | 200108071020.f77AKnC33747@hub.org обсуждение исходный текст |
Список | pgsql-bugs |
Edward Pilipczuk (edx@astercity.net) reports a bug with a severity of 1 The lower the number the more severe it is. Short Description ecpg: unstable INSERT operation Long Description Frequently INSERT operation causes backend crash (with SIGSEGV) or the parser reports: error [-400] 'ERROR: parser: parseerror at or near "^Y"' in line xxx. Sample Code Table definition: Table "rdr_meas" Attribute | Type | Modifier -----------+--------------------------+------------------------------------------ seq | integer | not null default nextval('rdr_meas_serial_seq'::text) name | character(8) | not null loc | character(8) | not null ts | timestamp with time zone | not null devstat | integer | not null meastat | integer | not null relative | real | level | real | ullage | real | levelrate | real | volume | real | Index: rdr_meas_pkey Embedded code: ............... long sql_checkresult() { if ( sqlca.sqlcode ) { sprintf( buf, "%s [%d] %s", sqlca.sqlcode<0?"error":"warning", sqlca.sqlcode, sqlca.sqlerrm.sqlerrmc ); error_hndlr( WARN_SQL, MSG_SQL, buf ); }; return( sqlca.sqlcode ); } ............... int db_savemeas( rdr, ms ) { ............... sprintf(buf,"INSERT: '%.8s'%.8s'%.32s' %08x/%08x %f %f %f %f %f", name, loc, 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, :ts, :devstat, :meastat, :relative, :level, :ullage, :rate, :volume ) ; dbg_message( __FILE__, __LINE__, DBG_DBI, MSG_SQL, "Inserted!" ); if( sql_checkresult() == 0 ) { exec sql COMMIT; exec sql SELECT seq INTO :seq FROM rdr_meas ORDER BY seq DESC LIMIT 1; if( sql_checkresult() == 0 ) { sprintf(buf,"Data record #%d stored and committed.", seq ); dbg_message( __FILE__, __LINE__, DBG_DBI, MSG_SQL, buf ); return( seq ); }; }; .............. error_handler and dbg_mesage produces the following types of entries in syslog: ...: DEBUG(dbi.pgc/760) SQL: INSERT: 'NR3 'Swedwood'2001-08-06 23:22:08' 00000000/00001000 35.978611 0.841900 1.498100-0.000002 4.132665 ...: DEBUG(dbi.pgc/767) SQL: Inserted! ...: Error condition occured: WARNING: Data base SQL exec error. ...: -- SQL: error [-400] 'ERROR: parser: parse error at or near "^Y"' in line xxx. Some times appears that the ecpg program abnormally terminates with the following trace logged by the parent process: signal#17=SGCHLD, existstatus of the child process (SIGSEGV in HEX) is presented here as a value returned by waitpid: ...: DEBUG(radnew.c/129) TASK: SIGNAL #17 catched. ...: DEBUG(radnew.c/203) TASK: Child process abnormally terminated, exitstatus=0000000b No file was uploaded with this report
В списке pgsql-bugs по дате отправления: