Class Page
java.lang.Object
org.dizitart.no2.mvstore.compat.v1.mvstore.Page
- All Implemented Interfaces:
Cloneable
A page (a node or a leaf).
For b-tree nodes, the key at a given index is larger than the largest key of the child at the same index.
File format: page length (including length): int check value: short map id: varInt number of keys: varInt type: byte (0: leaf, 1: node; +2: compressed) compressed: bytes saved (varInt) keys leaf: values (one for each key) node: children (1 more than keys)
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classA pointer to a page, either in-memory or using a page position. -
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionfinal Pagecopy()Create a copy of this page.static PagecreateNode(MVMap<?, ?> map, Object[] keys, Page.PageReference[] children, long totalCount, int memory) Create a new non-leaf page.final booleanabstract CursorPosgetAppendCursorPos(CursorPos cursorPos) Extend path from a given CursorPos chain to "append point" in a B-tree, rooted at this Page.abstract PagegetChildPage(int index) Get the child page at the given index.abstract longgetChildPagePos(int index) Get the position of the child.longAmount of used disk space in persistent case including child pages.getKey(int index) Get the key at the given index.final intGet the number of keys in this page.final intgetMapId()Get the id of the page's owner mapfinal intabstract intfinal longgetPos()Get the position of the pageabstract CursorPosgetPrependCursorPos(CursorPos cursorPos) Extend path from a given CursorPos chain to "prepend point" in a B-tree, rooted at this Page.abstract intabstract longGet the total number of key-value pairs, including child pages.abstract ObjectgetValue(int index) Get the value at the given index.final inthashCode()abstract voidinsertLeaf(int index, Object key, Object value) Insert a key-value pair into this leaf.abstract voidinsertNode(int index, Object key, Page childPage) Insert a child page into this node.booleanfinal booleanisLeaf()Check whether this is a leaf page.final booleanfinal booleanisSaved()voidremove(int index) Remove the key and value (or child) at the given index.abstract intremoveAllRecursive(long version) Remove all page data recursively.final intremovePage(long version) Make accounting changes (chunk occupancy or "unsaved" RAM), related to this page removal.abstract voidReplace the child page.voidCalled when done with copying page.final voidReplace the key at an index in this page.abstract ObjectReplace the value at an index in this page.toString()
-
Field Details
-
map
Map this page belongs to
-
-
Method Details
-
createNode
public static Page createNode(MVMap<?, ?> map, Object[] keys, Page.PageReference[] children, long totalCount, int memory) Create a new non-leaf page. The arrays are not cloned.- Parameters:
map- the mapkeys- the keyschildren- the child page positionstotalCount- the total number of keysmemory- the memory used in bytes- Returns:
- the page
-
getMapId
public final int getMapId()Get the id of the page's owner map- Returns:
- id
-
getKey
Get the key at the given index.- Parameters:
index- the index- Returns:
- the key
-
getChildPage
Get the child page at the given index.- Parameters:
index- the index- Returns:
- the child page
-
getChildPagePos
public abstract long getChildPagePos(int index) Get the position of the child.- Parameters:
index- the index- Returns:
- the position
-
getValue
Get the value at the given index.- Parameters:
index- the index- Returns:
- the value
-
getKeyCount
public final int getKeyCount()Get the number of keys in this page.- Returns:
- the number of keys
-
isLeaf
public final boolean isLeaf()Check whether this is a leaf page.- Returns:
- true if it is a leaf
-
getNodeType
public abstract int getNodeType() -
getPos
public final long getPos()Get the position of the page- Returns:
- the position
-
toString
-
copy
Create a copy of this page.- Returns:
- a mutable copy of this page
-
getTotalCount
public abstract long getTotalCount()Get the total number of key-value pairs, including child pages.- Returns:
- the number of key-value pairs
-
setChild
Replace the child page.- Parameters:
index- the indexc- the new child page
-
setKey
Replace the key at an index in this page.- Parameters:
index- the indexkey- the new key
-
setValue
Replace the value at an index in this page.- Parameters:
index- the indexvalue- the new value- Returns:
- the old value
-
insertLeaf
Insert a key-value pair into this leaf.- Parameters:
index- the indexkey- the keyvalue- the value
-
insertNode
Insert a child page into this node.- Parameters:
index- the indexkey- the keychildPage- the child page
-
remove
public void remove(int index) Remove the key and value (or child) at the given index.- Parameters:
index- the index
-
isSaved
public final boolean isSaved() -
isRemoved
public final boolean isRemoved() -
getRawChildPageCount
public abstract int getRawChildPageCount() -
equals
-
hashCode
public final int hashCode() -
getMemory
public final int getMemory() -
getDiskSpaceUsed
public long getDiskSpaceUsed()Amount of used disk space in persistent case including child pages.- Returns:
- amount of used disk space in persistent case
-
isComplete
public boolean isComplete() -
setComplete
public void setComplete()Called when done with copying page. -
removePage
public final int removePage(long version) Make accounting changes (chunk occupancy or "unsaved" RAM), related to this page removal.- Parameters:
version- at which page was removed- Returns:
- amount (negative), by which "unsaved memory" should be adjusted, if page is unsaved one, and 0 for page that was already saved, or in case of non-persistent map
-
getPrependCursorPos
Extend path from a given CursorPos chain to "prepend point" in a B-tree, rooted at this Page.- Parameters:
cursorPos- presumably pointing to this Page (null if real root), to build upon- Returns:
- new head of the CursorPos chain
-
getAppendCursorPos
Extend path from a given CursorPos chain to "append point" in a B-tree, rooted at this Page.- Parameters:
cursorPos- presumably pointing to this Page (null if real root), to build upon- Returns:
- new head of the CursorPos chain
-
removeAllRecursive
public abstract int removeAllRecursive(long version) Remove all page data recursively.- Parameters:
version- at which page got removed- Returns:
- adjustment for "unsaved memory" amount
-