From: Dmitry Y. <di...@us...> - 2008-06-26 11:01:15
|
Build Version : T2.5.0.20479 Firebird 2.5 Alpha 1 (writeBuildNum.sh,v 1.20640 2008/06/26 11:01:18 dimitr Exp ) Update of /cvsroot/firebird/firebird2/src/jrd In directory sc8-pr-cvs17.sourceforge.net:/tmp/cvs-serv4168 Modified Files: Optimizer.cpp Log Message: Relation must be locked for any DPM access. As it's normally done after request optimization, I put an extra lock into the optimizer. This is one of the possible reasons for CORE-1938 to appear. Index: Optimizer.cpp =================================================================== RCS file: /cvsroot/firebird/firebird2/src/jrd/Optimizer.cpp,v retrieving revision 1.83 retrieving revision 1.84 diff -b -U3 -r1.83 -r1.84 --- Optimizer.cpp 6 May 2008 09:40:22 -0000 1.83 +++ Optimizer.cpp 26 Jun 2008 11:01:07 -0000 1.84 @@ -44,6 +44,7 @@ #include "../jrd/evl_proto.h" #include "../jrd/exe_proto.h" #include "../jrd/intl_proto.h" +#include "../jrd/met_proto.h" #include "../jrd/mov_proto.h" #include "../jrd/par_proto.h" @@ -602,7 +603,10 @@ return (double) 10000; } - return DPM_cardinality(tdbb, relation, format); + MET_post_existence(tdbb, relation); + const double cardinality = DPM_cardinality(tdbb, relation, format); + MET_release_existence(tdbb, relation); + return cardinality; } |