Пример #1
0
 public void moveTo(Session session, int newPos) {
   PageStore store = index.getPageStore();
   // load the pages into the cache, to ensure old pages
   // are written
   if (parentPageId != ROOT) {
     store.getPage(parentPageId);
   }
   store.logUndo(this, data);
   PageDataLeaf p2 = PageDataLeaf.create(index, newPos, parentPageId);
   readAllRows();
   p2.keys = keys;
   p2.overflowRowSize = overflowRowSize;
   p2.firstOverflowPageId = firstOverflowPageId;
   p2.rowRef = rowRef;
   p2.rows = rows;
   if (firstOverflowPageId != 0) {
     p2.rows[0] = getRowAt(0);
   }
   p2.entryCount = entryCount;
   p2.offsets = offsets;
   p2.start = start;
   p2.remapChildren(getPos());
   p2.writeData();
   p2.data.truncate(index.getPageStore().getPageSize());
   store.update(p2);
   if (parentPageId == ROOT) {
     index.setRootPageId(session, newPos);
   } else {
     PageDataNode p = (PageDataNode) store.getPage(parentPageId);
     p.moveChild(getPos(), newPos);
   }
   store.free(getPos());
 }