/** * @param ints Ints. * @return Array. */ public static int[] toArray(IntArray ints) { int[] res = new int[ints.size()]; ints.toArray(res); return res; }
/** * * @param partsMap Partitions map. * @param parts Partitions. * @return Result. */ private static Map<ClusterNode, IntArray> narrowForQuery(Map<ClusterNode, IntArray> partsMap, int[] parts) { if (parts == null) return partsMap; Map<ClusterNode, IntArray> cp = U.newHashMap(partsMap.size()); for (Map.Entry<ClusterNode, IntArray> entry : partsMap.entrySet()) { IntArray filtered = new IntArray(parts.length); IntArray orig = entry.getValue(); for (int i = 0; i < orig.size(); i++) { int p = orig.get(i); if (Arrays.binarySearch(parts, p) >= 0) filtered.add(p); } if (filtered.size() > 0) cp.put(entry.getKey(), filtered); } return cp.isEmpty() ? null : cp; }
/** * Allocate a number of pages. * * @param list the list where to add the allocated pages * @param pagesToAllocate the number of pages to allocate * @param exclude the exclude list * @param after all allocated pages are higher than this page */ void allocatePages(IntArray list, int pagesToAllocate, BitField exclude, int after) { list.ensureCapacity(list.size() + pagesToAllocate); for (int i = 0; i < pagesToAllocate; i++) { int page = allocatePage(exclude, after); after = page; list.add(page); } }
private void freeLogPages(IntArray pages) { if (trace.isDebugEnabled()) { trace.debug("log frees " + pages.get(0) + ".." + pages.get(pages.size() - 1)); } Data buffer = getBuffer(); buffer.writeByte((byte) FREE_LOG); int size = pages.size(); buffer.writeVarInt(size); for (int i = 0; i < size; i++) { buffer.writeVarInt(pages.get(i)); } write(buffer); }
int len = paramColumnIndex.size(); ArrayList<Column> columnList = New.arrayList(); for (int i = 0; i < len;) {
/** * @param ints Ints. * @return Array. */ public static int[] toArray(IntArray ints) { int[] res = new int[ints.size()]; ints.toArray(res); return res; }
int getPageOwner(int page) { if (page * BLOCKS_PER_PAGE > fileBlockCount || page >= pageOwners.size()) { return FREE_PAGE; } return pageOwners.get(page); }
private void setBlockCount(int count) { fileBlockCount = count; int pages = getPage(count); while (pages >= pageOwners.size()) { pageOwners.add(FREE_PAGE); } }
void free(int pos, int blockCount) { file.free(pos, blockCount); if (freeList.size() < FREE_LIST_SIZE) { freeList.add(pos); } }
private void freeUnusedPages() throws SQLException { for (int i = 0; i < pageOwners.size(); i++) { if (pageOwners.get(i) != FREE_PAGE && isPageFree(i)) { setPageOwner(i, FREE_PAGE); } } }
SearchRow getFirst(Session session) throws SQLException { for (int i = 0; i < pageChildren.size(); i++) { BtreePage page = index.getPage(session, pageChildren.get(i)); if (page != null) { return page.getFirst(session); } } return null; }
private void checkOnePage() throws SQLException { pageCheckIndex = (pageCheckIndex + 1) % pages.size(); int page = pages.get(pageCheckIndex); if (file.isPageFree(page) && file.getPageOwner(page) == id) { file.freePage(page); } }
public void sort() { // insertion sort for (int i = 1, j; i < size(); i++) { int t = get(i); for (j = i - 1; j >= 0 && (get(j) > t); j--) { set(j + 1, get(j)); } set(j + 1, t); } }
public void last(BtreeCursor cursor) throws SQLException { int last = pageChildren.size() - 1; cursor.push(this, last); BtreePage page = index.getPage(cursor.getSession(), pageChildren.get(last)); page.last(cursor); }
private void freeLogPages(IntArray pages) { if (trace.isDebugEnabled()) { trace.debug("log frees " + pages.get(0) + ".." + pages.get(pages.size() - 1)); } Data buffer = getBuffer(); buffer.writeByte((byte) FREE_LOG); int size = pages.size(); buffer.writeVarInt(size); for (int i = 0; i < size; i++) { buffer.writeVarInt(pages.get(i)); } write(buffer); }
int getRealByteCount() throws SQLException { DataPage dummy = index.getDatabase().getDataPage(); int len = pageChildren.size(); int size = 2 + dummy.getIntLen() + dummy.getIntLen() * len; len = pageData.size(); size += dummy.getIntLen(); size += len * dummy.getIntLen(); for (int i = 0; i < len; i++) { SearchRow row = getData(i); size += getRowSize(dummy, row); } return size + index.getRecordOverhead(); }