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;
}
|