parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

если не жалко, сделайте bug.html?

Александр Петросян (PAF) 03.10.2003 11:25

точка вызова rollback везде одинакова: если на ^connect{ этот момент>>}<< исключение не обработано, транзакция откатывается.

возможно, вы открыли другой connect, он взял соединение из пула соединений, а он в пул положился в каком-то кривом состоянии.

я делал в полном согласии с докой по PgSQL, однако, как все знают, этого часто недостаточно.
PGconn *conn=(PGconn *)connection;
if(PGresult *res=PQexec(conn, "ROLLBACK"))
	PQclear(res);
else
	throwPQerror;
begin_transaction(services, conn);

void begin_transaction(SQL_Driver_services& services, PGconn *conn) {
	if(PGresult *res=PQexec(conn, "BEGIN"))
		PQclear(res);
	else
		throwPQerror;
}
видите, открываю транзакцию после закрытия? возможно, знатоку PgSQL что-то покажется не так?

исходники выложены ещё и с этой целью: кто знает, как надо сделать лучше, пусть да пришлёт patch.

PgSQL мы в своей работе используем в ограниченном крайне объёме, так что наше к нему внимание соответствующее.