/** * @param pageAddr Page address. * @return Payload bytes. */ public byte[] getBytes(long pageAddr) { return PageUtils.getBytes(pageAddr, off, payloadSize); }
/** Read variable length bytearray */ private static byte[] readBytes(long pageAddr, int off) { int size = PageUtils.getShort(pageAddr, off + 1) & 0x7FFF; return PageUtils.getBytes(pageAddr, off + 3, size); }
public static byte[] readPayload(long link) { int size = PageUtils.getInt(link, 0); return PageUtils.getBytes(link, 4, size); }
/** {@inheritDoc} */ @Override public String getKey(long pageAddr, int idx) { int len = PageUtils.getShort(pageAddr, offset(idx) + 8); byte[] bytes = PageUtils.getBytes(pageAddr, offset(idx) + 10, len); return new String(bytes); } }
/** {@inheritDoc} */ @Override public String getKey(long pageAddr, int idx) { int len = PageUtils.getShort(pageAddr, offset(idx) + 8); byte[] bytes = PageUtils.getBytes(pageAddr, offset(idx) + 10, len); return new String(bytes); } }
/** * @param page Page. * @return Page header. */ private static byte[] getPageCommonHeader(ByteBuffer page) { return PageUtils.getBytes(GridUnsafe.bufferAddress(page), 0, PageIO.COMMON_HEADER_END); }
/** {@inheritDoc} */ @Override public byte[] getLookupRow(BPlusTree<byte[],?> tree, long pageAddr, int idx) { return PageUtils.getBytes(pageAddr, offset(idx), itemSize); } }
/** {@inheritDoc} */ @Override public byte[] getLookupRow(BPlusTree<byte[],?> tree, long pageAddr, int idx) { return PageUtils.getBytes(pageAddr, offset(idx), itemSize); } }
/** * Read row from buffer. * * @param pageAddr Page address. * @param off Offset. * @return Read row. */ private static IndexItem readRow(final long pageAddr, int off) { // Index name length. final int len = PageUtils.getUnsignedByte(pageAddr, off) & 0xFF; off++; // Index name. final byte[] idxName = PageUtils.getBytes(pageAddr, off, len); off += len; // Page ID. final long pageId = PageUtils.getLong(pageAddr, off); return new IndexItem(idxName, pageId); }
/** * Store the needed info about the row in the page. Leaf and inner pages can store different info. * * @param pageAddr Page address. * @param idx Index. * @param row Lookup or full row. * @param rowBytes Row bytes. * @param needRowBytes If we need stored row bytes. * @return Stored row bytes. * @throws IgniteCheckedException If failed. */ public final byte[] store(long pageAddr, int idx, L row, byte[] rowBytes, boolean needRowBytes) throws IgniteCheckedException { int off = offset(idx); if (rowBytes == null) { storeByOffset(pageAddr, off, row); if (needRowBytes) rowBytes = PageUtils.getBytes(pageAddr, off, getItemSize()); } else putBytes(pageAddr, off, rowBytes); return rowBytes; }
/** {@inheritDoc} */ @Override public final void store(long dstPageAddr, int dstIdx, BPlusIO<GridH2SearchRow> srcIo, long srcPageAddr, int srcIdx) { int srcOff = srcIo.offset(srcIdx); byte[] payload = PageUtils.getBytes(srcPageAddr, srcOff, payloadSize); long link = PageUtils.getLong(srcPageAddr, srcOff + payloadSize); assert link != 0; int dstOff = offset(dstIdx); PageUtils.putBytes(dstPageAddr, dstOff, payload); H2IOUtils.store(dstPageAddr, dstOff + payloadSize, srcIo, srcPageAddr, srcIdx, storeMvccInfo()); }
/** {@inheritDoc} */ @Override public final void store(long dstPageAddr, int dstIdx, BPlusIO<GridH2SearchRow> srcIo, long srcPageAddr, int srcIdx) { int srcOff = srcIo.offset(srcIdx); byte[] payload = PageUtils.getBytes(srcPageAddr, srcOff, payloadSize); long link = PageUtils.getLong(srcPageAddr, srcOff + payloadSize); assert link != 0; int dstOff = offset(dstIdx); PageUtils.putBytes(dstPageAddr, dstOff, payload); H2IOUtils.store(dstPageAddr, dstOff + payloadSize, srcIo, srcPageAddr, srcIdx, storeMvccInfo()); }
/** {@inheritDoc} */ @Override public void store(long dstPageAddr, int dstIdx, BPlusIO<MetastorageSearchRow> srcIo, long srcPageAddr, int srcIdx) { int srcOff = srcIo.offset(srcIdx); int dstOff = offset(dstIdx); long link = ((DataLinkIO)srcIo).getLink(srcPageAddr, srcIdx); short len = ((DataLinkIO)srcIo).getKeySize(srcPageAddr, srcIdx); byte[] payload = PageUtils.getBytes(srcPageAddr, srcOff + 10, len); PageUtils.putLong(dstPageAddr, dstOff, link); PageUtils.putShort(dstPageAddr, dstOff + 8, len); PageUtils.putBytes(dstPageAddr, dstOff + 10, payload); }
/** {@inheritDoc} */ @Override public void store(long dstPageAddr, int dstIdx, BPlusIO<MetastorageSearchRow> srcIo, long srcPageAddr, int srcIdx) { int srcOff = srcIo.offset(srcIdx); int dstOff = offset(dstIdx); long link = ((DataLinkIO)srcIo).getLink(srcPageAddr, srcIdx); short len = ((DataLinkIO)srcIo).getKeySize(srcPageAddr, srcIdx); byte[] payload = PageUtils.getBytes(srcPageAddr, srcOff + 10, len); PageUtils.putLong(dstPageAddr, dstOff, link); PageUtils.putShort(dstPageAddr, dstOff + 8, len); PageUtils.putBytes(dstPageAddr, dstOff + 10, payload); }
/** {@inheritDoc} */ @Override public String getKey(long pageAddr, int idx) { int len = PageUtils.getShort(pageAddr, offset(idx) + 8); byte[] bytes = PageUtils.getBytes(pageAddr, offset(idx) + 10, len); return new String(bytes); } }
/** {@inheritDoc} */ @Override public String getKey(long pageAddr, int idx) { int len = PageUtils.getShort(pageAddr, offset(idx) + 8); byte[] bytes = PageUtils.getBytes(pageAddr, offset(idx) + 10, len); return new String(bytes); } }
/** {@inheritDoc} */ @Override public final void store(long dstPageAddr, int dstIdx, BPlusIO<GridH2SearchRow> srcIo, long srcPageAddr, int srcIdx) { int srcOff = srcIo.offset(srcIdx); byte[] payload = PageUtils.getBytes(srcPageAddr, srcOff, payloadSize); long link = PageUtils.getLong(srcPageAddr, srcOff + payloadSize); assert link != 0; int dstOff = offset(dstIdx); PageUtils.putBytes(dstPageAddr, dstOff, payload); H2IOUtils.store(dstPageAddr, dstOff + payloadSize, srcIo, srcPageAddr, srcIdx, storeMvccInfo()); }
/** {@inheritDoc} */ @Override public void store(long dstPageAddr, int dstIdx, BPlusIO<MetastorageSearchRow> srcIo, long srcPageAddr, int srcIdx) { int srcOff = srcIo.offset(srcIdx); int dstOff = offset(dstIdx); long link = ((DataLinkIO)srcIo).getLink(srcPageAddr, srcIdx); short len = ((DataLinkIO)srcIo).getKeySize(srcPageAddr, srcIdx); byte[] payload = PageUtils.getBytes(srcPageAddr, srcOff + 10, len); PageUtils.putLong(dstPageAddr, dstOff, link); PageUtils.putShort(dstPageAddr, dstOff + 8, len); PageUtils.putBytes(dstPageAddr, dstOff + 10, payload); }
/** {@inheritDoc} */ @Override public void store(long dstPageAddr, int dstIdx, BPlusIO<MetastorageSearchRow> srcIo, long srcPageAddr, int srcIdx) { int srcOff = srcIo.offset(srcIdx); int dstOff = offset(dstIdx); long link = ((DataLinkIO)srcIo).getLink(srcPageAddr, srcIdx); short len = ((DataLinkIO)srcIo).getKeySize(srcPageAddr, srcIdx); byte[] payload = PageUtils.getBytes(srcPageAddr, srcOff + 10, len); PageUtils.putLong(dstPageAddr, dstOff, link); PageUtils.putShort(dstPageAddr, dstOff + 8, len); PageUtils.putBytes(dstPageAddr, dstOff + 10, payload); }