/** * * @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; }
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); }
private void initNextData() { int nextData = trunk == null ? -1 : trunk.getPageData(trunkIndex++); if (nextData == -1) { int parent = trunkPageId; if (trunkNext != 0) { trunkPageId = trunkNext; } int len = PageStreamTrunk.getPagesAddressed(store.getPageSize()); int[] pageIds = new int[len]; for (int i = 0; i < len; i++) { pageIds[i] = reservedPages.get(i); } trunkNext = reservedPages.get(len); logKey++; trunk = PageStreamTrunk.create(store, parent, trunkPageId, trunkNext, logKey, pageIds); trunkIndex = 0; pageCount++; trunk.write(); reservedPages.removeRange(0, len + 1); nextData = trunk.getPageData(trunkIndex++); } data = PageStreamData.create(store, nextData, trunk.getPos(), logKey); pageCount++; data.initWrite(); }
long nextPage = dataPages.get(0); dataPages.remove(0); store.seek(nextPage * pageSize);
ArrayList<Column> columnList = New.arrayList(); for (int i = 0; i < len;) { int idx = paramColumnIndex.get(i); columnList.add(table.getColumn(idx)); int mask = masks[idx];
int getChild(int i) { return pageChildren.get(i); }
int getPageOwner(int page) { if (page * BLOCKS_PER_PAGE > fileBlockCount || page >= pageOwners.size()) { return FREE_PAGE; } return pageOwners.get(page); }
/** */ private 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; }
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 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); }
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); }
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 first(BtreeCursor cursor) throws SQLException { cursor.push(this, 0); BtreePage page = index.getPage(cursor.getSession(), pageChildren.get(0)); page.first(cursor); }
public void previous(BtreeCursor cursor, int i) throws SQLException { i--; if (i >= 0) { cursor.setStackPosition(i); BtreePage page = index.getPage(cursor.getSession(), pageChildren.get(i)); page.last(cursor); return; } previousUpper(cursor); }
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); }
public void next(BtreeCursor cursor, int i) throws SQLException { i++; if (i <= pageData.size()) { cursor.setStackPosition(i); BtreePage page = index.getPage(cursor.getSession(), pageChildren.get(i)); page.first(cursor); return; } nextUpper(cursor); }
protected SearchRow getData(int i) throws SQLException { SearchRow r = (SearchRow) pageData.get(i); if (r == null) { int p = pageChildren.get(i + 1); Session sysSession = index.getDatabase().getSystemSession(); BtreePage page = index.getPage(sysSession, p); r = page.getFirst(sysSession); pageData.set(i, r); } return r; }
private void initNextData() { int nextData = trunk == null ? -1 : trunk.getPageData(trunkIndex++); if (nextData == -1) { int parent = trunkPageId; if (trunkNext != 0) { trunkPageId = trunkNext; } int len = PageStreamTrunk.getPagesAddressed(store.getPageSize()); int[] pageIds = new int[len]; for (int i = 0; i < len; i++) { pageIds[i] = reservedPages.get(i); } trunkNext = reservedPages.get(len); logKey++; trunk = PageStreamTrunk.create(store, parent, trunkPageId, trunkNext, logKey, pageIds); trunkIndex = 0; pageCount++; trunk.write(); reservedPages.removeRange(0, len + 1); nextData = trunk.getPageData(trunkIndex++); } data = PageStreamData.create(store, nextData, trunk.getPos(), logKey); pageCount++; data.initWrite(); }