From: Vlad H. <hv...@us...> - 2005-05-01 19:23:38
|
Build Version : T2.0.0.10833 Firebird 2.0 Alpha 1 (writeBuildNum.sh,v 1.10842 2005/05/01 19:23:13 hvlad Exp $ ) Update of /cvsroot/firebird/firebird2/src/jrd In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23129 Modified Files: btr.cpp Log Message: Undo my previous commit. Duplicate chains in not null keys in unique indexes not sorted by design. Changes must be done in index validation code Index: btr.cpp =================================================================== RCS file: /cvsroot/firebird/firebird2/src/jrd/btr.cpp,v retrieving revision 1.140 retrieving revision 1.141 diff -b -U3 -r1.140 -r1.141 --- btr.cpp 30 Apr 2005 10:10:48 -0000 1.140 +++ btr.cpp 1 May 2005 19:23:04 -0000 1.141 @@ -5218,28 +5218,9 @@ return 0; }*/ //else - if (allRecordNumber) { + if (allRecordNumber && !validateDuplicates) { // if recordnumber is higher we need to insert before it. if (newRecordNumber <= beforeInsertNode.recordNumber) { - // hvlad: save duplicates with higher recordnumbers from - // current page. What must we do if duplicate chain continues - // on the next page ? This is near impossible to have long - // duplicate chain in unique index, but we must handle it... - if (validateDuplicates) { - IndexNode dupeNode; - UCHAR *dupePointer = BTreeNode::readNode(&dupeNode, - pointer, flags, leafPage); - - while ((dupeNode.length == 0) && - !dupeNode.isEndLevel && !dupeNode.isEndBucket) - { - RBM_SET(tdbb->getDefaultPool(), &insertion->iib_duplicates, - dupeNode.recordNumber.getValue()); - - dupePointer = BTreeNode::readNode(&dupeNode, - dupePointer, flags, leafPage); - } - } break; } } |