## org.h2.mvstore
Class Page

    java.lang.Object
      org.h2.mvstore.Page

    public class Page

extends java.lang.Object

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)

Method Summary
`int` `binarySearch(java.lang.Object key)` Search the key in this page using a binary search.
`Page` `copy(long version)` Create a copy of this page.
`static Page` `create(MVMap<?,?> map, long version, int keyCount, java.lang.Object[] keys, java.lang.Object[] values, int childCount, long[] children, Page[] childrenPages, long[] counts, long totalCount, int sharedFlags, int memory)` Create a new page.
`boolean` `equals(java.lang.Object other)`
`Page` `getChildPage(int index)` Get the child page at the given index.
`int` `getChildPageCount()`
`java.lang.Object` `getKey(int index)` Get the key at the given index.
`int` `getKeyCount()` Get the number of keys in this page.
`Page` `getLiveChildPage(int index)` Get the child page at the given index, if it is live.
`int` `getMemory()`
`long` `getPos()` Get the position of the page
`long` `getTotalCount()` Get the total number of key-value pairs, including child pages.
`java.lang.Object` `getValue(int index)` Get the value at the given index.
`int` `hashCode()`
`void` `insertLeaf(int index, java.lang.Object key, java.lang.Object value)` Insert a key-value pair into this leaf.
`void` `insertNode(int index, java.lang.Object key, Page childPage)` Insert a child into this node.
`boolean` `isLeaf()` Check whether this is a leaf page.
`void` `remove(int index)` Remove the key and value (or child) at the given index.
`void` `removePage()` Remove the page.
`void` `setChild(int index, Page c)` Replace the child page.
`void` `setCounts(int index, Page c)` Update the (descendant) count for the given child, if there was a change.
`void` `setKey(int index, java.lang.Object key)` Replace the key.
`void` `setPos(long pos)`
`java.lang.Object` `setValue(int index, java.lang.Object value)` Replace the value.
`java.lang.String` `toString()`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Method Detail

### create

    public static Page create(MVMap<?,?> map,
                              long version,
                              int keyCount,
                              java.lang.Object[] keys,
                              java.lang.Object[] values,
                              int childCount,
                              long[] children,
                              Page[] childrenPages,
                              long[] counts,
                              long totalCount,
                              int sharedFlags,
                              int memory)

  Create a new page. The arrays are not cloned.

  Parameters:
    `map` - the map
    `version` - the version
    `keyCount` - the number of keys
    `keys` - the keys
    `values` - the values
    `childCount` - the number of children
    `children` - the children
    `childrenPages` - the children pages
    `counts` - the children counts
    `totalCount` - the total number of keys
    `sharedFlags` - which arrays are shared
    `memory` - the memory used in bytes
  Returns:
    the page

### getKey

    public java.lang.Object getKey(int index)

  Get the key at the given index.

  Parameters:
    `index` - the index
  Returns:
    the key

### getChildPage

    public Page getChildPage(int index)

  Get the child page at the given index.

  Parameters:
    `index` - the index
  Returns:
    the child page

### getLiveChildPage

    public Page getLiveChildPage(int index)

  Get the child page at the given index, if it is live.

  Parameters:
    `index` - the child index
  Returns:
    the page, or null if the chunk is not live

### getValue

    public java.lang.Object getValue(int index)

  Get the value at the given index.

  Parameters:
    `index` - the index
  Returns:
    the value

### getKeyCount

    public int getKeyCount()

  Get the number of keys in this page.

  Returns:
    the number of keys

### isLeaf

    public boolean isLeaf()

  Check whether this is a leaf page.

  Returns:
    true if it is a leaf

### getPos

    public long getPos()

  Get the position of the page

  Returns:
    the position

### toString

    public java.lang.String toString()

  Overrides:
    `toString` in class `java.lang.Object`

### copy

    public Page copy(long version)

  Create a copy of this page.

  Parameters:
    `version` - the new version
  Returns:
    a page with the given version

### binarySearch

    public int binarySearch(java.lang.Object key)

  Search the key in this page using a binary search. Instead of always starting the search in the middle, the last found index is cached.

  If the key was found, the returned value is the index in the key array. If not found, the returned value is negative, where -1 means the provided key is smaller than any keys in this page. See also Arrays.binarySearch.

  Parameters:
    `key` - the key
  Returns:
    the value or null

### getTotalCount

    public long getTotalCount()

  Get the total number of key-value pairs, including child pages.

  Returns:
    the number of key-value pairs

### setChild

    public void setChild(int index,
                         Page c)

  Replace the child page.

  Parameters:
    `index` - the index
    `c` - the new child page

### setCounts

    public void setCounts(int index,
                          Page c)

  Update the (descendant) count for the given child, if there was a change.

  Parameters:
    `index` - the index
    `c` - the new child page

### setKey

    public void setKey(int index,
                       java.lang.Object key)

  Replace the key.

  Parameters:
    `index` - the index
    `key` - the new key

### setValue

    public java.lang.Object setValue(int index,
                                     java.lang.Object value)

  Replace the value.

  Parameters:
    `index` - the index
    `value` - the new value
  Returns:
    the old value

### insertLeaf

    public void insertLeaf(int index,
                           java.lang.Object key,
                           java.lang.Object value)

  Insert a key-value pair into this leaf.

  Parameters:
    `index` - the index
    `key` - the key
    `value` - the value

### insertNode

    public void insertNode(int index,
                           java.lang.Object key,
                           Page childPage)

  Insert a child into this node.

  Parameters:
    `index` - the index
    `key` - the key
    `childPage` - the child page

### remove

    public void remove(int index)

  Remove the key and value (or child) at the given index.

  Parameters:
    `index` - the index

### getChildPageCount

    public int getChildPageCount()

### equals

    public boolean equals(java.lang.Object other)

  Overrides:
    `equals` in class `java.lang.Object`

### hashCode

    public int hashCode()

  Overrides:
    `hashCode` in class `java.lang.Object`

### getMemory

    public int getMemory()

### removePage

    public void removePage()

  Remove the page.

### setPos

    public void setPos(long pos)