dissect.database.ese.index

Module Contents

Classes

Index

Represents an index on a table.

Functions

encode_key

Encode various values into their normalized index key form.

Attributes

dissect.database.ese.index.JET_cbKeyMost_OLD = 255
class dissect.database.ese.index.Index(table: dissect.database.ese.table.Table, record: dissect.database.ese.record.Record | None = None)

Represents an index on a table.

This is still very much WIP but works for basic indexes. For example, none of the special flags are currently implemented.

Parameters:
  • table – The table this index is from.

  • record – The record in the catalog for this index.

table
record = None
db
name
idb_flags
idx_flags
__repr__() str
property is_primary: bool
property root: dissect.database.ese.page.Page

Return the root page of this index.

property column_ids: list[int]

Return a list of column IDs that are used in this index.

property columns: list[dissect.database.ese.table.Column]

Return a list of all columns that are used in this index.

cursor() dissect.database.ese.cursor.Cursor

Create a new cursor for this index.

search(**kwargs) dissect.database.ese.record.Record

Search the index for the requested values.

Parameters:

**kwargs – The columns and values to search for.

Returns:

A Record object of the found record.

search_key(key: bytes) dissect.database.ese.page.Node

Search the index for a specific key.

Parameters:

key – The key to search for.

Returns:

A Node object of the found node.

key_from_record(record: dissect.database.ese.record.Record) bytes

Generate a key for this index from a record.

Parameters:

record – The record to generate a key for.

make_key(values: dict[str, dissect.database.ese.util.RecordValue]) bytes

Generate a key out of the given values.

Parameters:

values – A map of the column names and values to generate a key for.

dissect.database.ese.index.bPrefixNull = 0
dissect.database.ese.index.bPrefixZeroLength = 64
dissect.database.ese.index.bPrefixNullHigh = 192
dissect.database.ese.index.bPrefixData = 127
dissect.database.ese.index.bSentinel = 255
dissect.database.ese.index.encode_key(index: Index, column: dissect.database.ese.table.Column, value: dissect.database.ese.util.RecordValue, max_size: int) bytes

Encode various values into their normalized index key form.

Parameters:
  • column – The column of the value to encode.

  • value – The value that needs encoding.

  • max_size – The maximum key segment size.