bdb

package
v0.0.0-...-a9c5234 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 14, 2021 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const (
	NoEncryptionAlgorithm = 0

	HashMagicNumber = 0x061561

	// the size (in bytes) of an in-page offset
	HashIndexEntrySize = 2
	// all DB pages have the same sized header (in bytes)
	PageHeaderSize = 26

	// all page types supported
	HashMetadataPageType PageType = 8
	HashPageType         PageType = 13
	HashOffIndexPageType PageType = 3 // a.k.a HOFFPAGE

	HashOffPageSize = 12 // (in bytes)
)

Variables

This section is empty.

Functions

func HashPageValueContent

func HashPageValueContent(db *os.File, pageData []byte, hashPageIndex uint16, pageSize uint32) ([]byte, error)

func HashPageValueIndexes

func HashPageValueIndexes(data []byte, entries uint16) ([]uint16, error)

Types

type BerkeleyDB

type BerkeleyDB struct {
	HashMetadata *HashMetadataPage
	// contains filtered or unexported fields
}

func Open

func Open(path string) (*BerkeleyDB, error)

func (*BerkeleyDB) Read

func (db *BerkeleyDB) Read() <-chan Entry

type Entry

type Entry struct {
	Value []byte
	Err   error
}

type GenericMetadataPage

type GenericMetadataPage struct {
	LSN           [8]byte  `struct:"[8]byte"`  /* 00-07: LSN. */
	PageNo        uint32   `struct:"uint32"`   /* 08-11: Current page number. */
	Magic         uint32   `struct:"uint32"`   /* 12-15: Magic number. */
	Version       uint32   `struct:"uint32"`   /* 16-19: Version. */
	PageSize      uint32   `struct:"uint32"`   /* 20-23: Pagesize. */
	EncryptionAlg uint8    `struct:"uint8"`    /*    24: Encryption algorithm. */
	PageType      uint8    `struct:"uint8"`    /*    25: Page type. */
	MetaFlags     uint8    `struct:"uint8"`    /* 26: Meta-only flags */
	Unused1       uint8    `struct:"uint8"`    /* 27: Unused. */
	Free          uint32   `struct:"uint32"`   /* 28-31: Free list page number. */
	LastPageNo    uint32   `struct:"uint32"`   /* 32-35: Page number of last page in db. */
	NParts        uint32   `struct:"uint32"`   /* 36-39: Number of partitions. */
	KeyCount      uint32   `struct:"uint32"`   /* 40-43: Cached key count. */
	RecordCount   uint32   `struct:"uint32"`   /* 44-47: Cached record count. */
	Flags         uint32   `struct:"uint32"`   /* 48-51: Flags: unique to each AM. */
	UniqueFileID  [19]byte `struct:"[19]byte"` /* 52-71: Unique file ID. */
}

source: https://github.com/berkeleydb/libdb/blob/5b7b02ae052442626af54c176335b67ecc613a30/src/dbinc/db_page.h#L73

func ParseGenericMetadataPage

func ParseGenericMetadataPage(data []byte) (*GenericMetadataPage, error)

type HashMetadataPage

type HashMetadataPage struct {
	GenericMetadataPage
	MaxBucket   uint32 `struct:"uint32"` /* 72-75: ID of Maximum bucket in use */
	HighMask    uint32 `struct:"uint32"` /* 76-79: Modulo mask into table */
	LowMask     uint32 `struct:"uint32"` /* 80-83: Modulo mask into table lower half */
	FillFactor  uint32 `struct:"uint32"` /* 84-87: Fill factor */
	NumKeys     uint32 `struct:"uint32"` /* 88-91: Number of keys in hash table */
	CharKeyHash uint32 `struct:"uint32"` /* 92-95: Value of hash(CHARKEY) */

}

source: https://github.com/berkeleydb/libdb/blob/5b7b02ae052442626af54c176335b67ecc613a30/src/dbinc/db_page.h#L130

func ParseHashMetadataPage

func ParseHashMetadataPage(data []byte) (*HashMetadataPage, error)

type HashOffPageEntry

type HashOffPageEntry struct {
	PageType uint8   `struct:"uint8"`   /*    0: Page type. */
	Unused   [3]byte `struct:"[3]byte"` /* 01-03: Padding, unused. */
	PageNo   uint32  `struct:"uint32"`  /* 04-07: Offpage page number. */
	Length   uint32  `struct:"uint32"`  /* 08-11: Total length of item. */
}

source: https://github.com/berkeleydb/libdb/blob/5b7b02ae052442626af54c176335b67ecc613a30/src/dbinc/db_page.h#L655

func ParseHashOffPageEntry

func ParseHashOffPageEntry(data []byte) (*HashOffPageEntry, error)

type HashPage

type HashPage struct {
	LSN            [8]byte `struct:"[8]byte"` /* 00-07: LSN. */
	PageNo         uint32  `struct:"uint32"`  /* 08-11: Current page number. */
	PreviousPageNo uint32  `struct:"uint32"`  /* 12-15: Previous page number. */
	NextPageNo     uint32  `struct:"uint32"`  /* 16-19: Next page number. */
	NumEntries     uint16  `struct:"uint16"`  /* 20-21: Number of items on the page. */
	FreeAreaOffset uint16  `struct:"uint16"`  /* 22-23: High free byte page offset. */
	TreeLevel      uint8   `struct:"uint8"`   /*    24: Btree tree level. */
	PageType       uint8   `struct:"uint8"`   /*    25: Page type. */
}

source: https://github.com/berkeleydb/libdb/blob/5b7b02ae052442626af54c176335b67ecc613a30/src/dbinc/db_page.h#L259

func ParseHashPage

func ParseHashPage(data []byte) (*HashPage, error)

type PageType

type PageType = uint8

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL