Glossary
Acronyms, constants and unusual Access/JET terms used throughout this codebase, its docs and its comments.
| Term |
Meaning |
| JET |
Joint Engine Technology — Microsoft’s database engine for Access |
| Jet3 |
JET version 3 — Access 97 format (2048-byte pages, ANSI encoding) |
| Jet4 |
JET version 4 — Access 2000–2003 format (4096-byte pages, UCS-2) |
| ACE |
Access Connectivity Engine — successor to JET used by Access 2007+ |
| MDB |
Microsoft Database — file extension for Jet3/Jet4 databases |
| ACCDB |
Access Database — file extension for ACE-format databases (2007+) |
| DAO |
Data Access Objects — Microsoft COM-based API for Access |
| OLE |
Object Linking and Embedding |
| OLE DB |
OLE Database — COM-based data-access API |
| ODBC |
Open Database Connectivity — linked-table source type represented in MSysObjects |
| CSV |
Comma-Separated Values — text linked-table format with dedicated MSysObjects.Flags values |
| mdbtools |
Open-source Access/MDB reverse-engineering project; many column type names mirror its MDB_* symbols |
| Jackcess |
Java Access database library used as a reference for many on-disk constants and names |
| V2000+ |
Jackcess/format shorthand for Jet4/ACE-style Access 2000 and newer structures |
Page Types & Structures
| Term |
Meaning |
| TDEF |
Table Definition — page type storing column metadata, index defs, and row counts |
| Data page |
Page type 0x01 that stores table rows and row-offset slots |
| Usage map / umap |
Bitmap row or page that tracks pages owned by a table, index, or free-space list |
| Inline usage map |
Usage-map row whose bitmap bytes live directly in the row payload |
| Reference usage map |
Usage-map row that points to separate page-type 0x05 bitmap pages |
| Freed page |
Page type 0x09 marking a page available for reuse |
| LVAL |
Long Value — descriptor/page form for MEMO, OLE, and attachment payloads; oversized payloads live on external data pages marked with the LVAL signature |
| EOD |
End of Data — marker in the variable-length column trailer |
| Row ID |
Physical row pointer made from a page number plus a per-page row slot |
| Row-offset slot |
Data-page entry (in the table after the page header) holding a row’s start offset in its low 13 bits (0x1FFF); 0x8000 marks the row deleted and 0x4000 marks an overflow row’s header. A row ends at the next greater offset of any slot on the page |
| Overflow row |
A row Access moved to another slot (often on another page of the same table) when it outgrew its page. Its original slot, the header, is flagged 0x4000 and holds a 4-byte pointer (row byte, then 3-byte page); the moved bytes’ slot is flagged 0x8000. Index entries and the TDEF row count refer to the header; see docs/design/data-page-row-format-notes.md |
| Null mask |
Row bitmap indicating which columns are present; BOOL values are stored here rather than in the fixed area |
| Fixed row area |
Row section containing fixed-width column payloads |
| Variable-length trailer |
Row tail holding offsets for variable-width columns plus the EOD marker |
| Jump table (Jet3) |
(rowLength - 1) / 256 one-byte entries between a Jet3 row’s offset table and var_len, supplying the high part of its one-byte EOD and offsets: each entry is the index of the first offset at or past its 256-byte boundary, and an unreached boundary’s entry is a 0xFF dummy (Jet3JumpTable; see docs/design/data-page-row-format-notes.md) |
| PK |
Primary Key |
| FK |
Foreign Key |
| DDL |
Data Definition Language |
| DML |
Data Manipulation Language |
Compound File Binary (MS-CFB)
| Term |
Meaning |
| CFB |
Compound File Binary — OLE2 container format used by Office Crypto wrappers and test fixtures; Access-native Agile .accdb files use a flat page layout instead |
| FAT |
File Allocation Table — sector chain mapping in a CFB file |
| DIFAT |
Double-Indirect FAT — extension array when >109 FAT sectors overflow the header |
| Mini-FAT |
Mini File Allocation Table — allocation table for streams < 4096 bytes |
| MSAT |
Master Sector Allocation Table — alternate name for DIFAT |
| SAT |
Sector Allocation Table — alternate name for FAT |
| Sector |
CFB allocation unit: 512 bytes in CFB v3, 4096 bytes in CFB v4 |
| Mini-sector |
Small-stream allocation unit inside the CFB mini-stream |
| Mini-stream |
CFB stream that stores mini-sector data for streams below the 4096-byte cutoff |
| FREESECT |
FAT sentinel 0xFFFFFFFF meaning the sector is free / unused |
| ENDOFCHAIN |
FAT sentinel 0xFFFFFFFE marking the end of a sector chain |
| FATSECT |
FAT sentinel 0xFFFFFFFD marking a sector that stores FAT entries |
| DIFSECT |
FAT sentinel 0xFFFFFFFC marking a sector that stores DIFAT entries |
| Dir entry |
128-byte CFB directory entry describing a storage or stream |
| Header DIFAT |
First 109 FAT-sector pointers embedded directly in the CFB header |
| Sector shift |
Log2 value for sector size (9 for 512-byte sectors, 12 for 4096-byte sectors) |
Encryption & Cryptography
| Term |
Meaning |
| RC4 |
Rivest Cipher 4 — stream cipher used by Jet4 per-page encryption |
| AES |
Advanced Encryption Standard; algorithm, mode and key size are determined by the verified encryption descriptor |
| ECB |
Electronic Codebook — AES block mode for legacy encryption |
| CBC |
Cipher Block Chaining — AES block mode for Agile encryption |
| Agile |
ECMA-376 password encryption used by Access 2010 SP1+ and Microsoft 365; AES-256-CBC + SHA-512 + PBKDF spin loop |
| EncryptionInfo |
Office Crypto descriptor stream/XML that records Agile encryption parameters |
| XOR |
Exclusive OR — Jet3 page obfuscation (128-byte cyclical mask) |
| HMAC |
Hash-based Message Authentication Code — integrity check in Agile encryption |
| SHA |
Secure Hash Algorithm — SHA-256 (legacy AES key), SHA-512 (Agile) |
| MD5 |
Message Digest 5 — Jet4 RC4 per-page key derivation |
| PBKDF |
Password-Based Key Derivation Function — Agile uses SHA-512 spin loop |
| IV |
Initialization Vector — per-segment AES-CBC IV |
| Salt |
Random bytes mixed into PBKDF key derivation and Agile IV generation |
| Spin count |
PBKDF iteration count; Agile encryption constants use 100,000 |
| Segment |
Independently encrypted 4096-byte chunk of the Agile encrypted package |
Text Encoding
| Term |
Meaning |
| ANSI |
Jet3 text encoding (code-page–dependent) |
| UCS-2 |
Universal Character Set (2-byte) — Jet4/ACE text encoding |
| UTF-16 |
Unicode Transformation Format (16-bit) — password and column-name storage |
| Compressed Unicode |
Jet4/ACE text optimization enabled by an extra flag; stores 0xFF 0xFE marker + one byte per Latin-1 character |
| Latin-1 |
ISO-8859-1 character range eligible for Jet4/ACE compressed-unicode storage |
| LE |
Little-endian byte order; used by UCS-2/UTF-16 text and most numeric on-disk fields |
| BOM |
Byte Order Mark; the CFB header byte-order field is always 0xFFFE |
Data Types & Column Constants
| Term |
Meaning |
| GUID |
Globally Unique Identifier — column type 0x0F, also called REPID by mdbtools |
| BLOB |
Binary Large Object — large binary payload, often stored through OLE/attachment LVAL storage when it exceeds inline limits |
| MEMO |
Memo field — column type 0x0C; long text |
| BCD |
Binary-Coded Decimal — format for ColumnTypes.NumericType (0x10) columns |
| MDB_* |
mdbtools prefix for Access column type identifiers, such as MDB_TEXT and MDB_NUMERIC |
| ColumnTypes.BooleanType |
Type Boolean (0x01) |
| ColumnTypes.ByteType |
Type unsigned byte (0x02) |
| ColumnTypes.IntegerType |
Type 2-byte signed integer (0x03) |
| ColumnTypes.LongIntegerType |
Type 4-byte signed integer (0x04) |
| ColumnTypes.MoneyType |
Type currency value stored as 8-byte integer scaled by 10,000 (0x05) |
| ColumnTypes.FloatType |
Type IEEE-754 single-precision float (0x06) |
| ColumnTypes.DoubleType |
Type IEEE-754 double-precision float (0x07) |
| ColumnTypes.DateTimeType |
Type OLE Automation date/time (0x08) |
| ColumnTypes.BinaryType |
Type Binary (0x09) |
| ColumnTypes.TextType |
Type Text (0x0A) |
| ColumnTypes.OleType |
Type OLE long-value blob (0x0B) |
| ColumnTypes.MemoType |
Type Memo long-value text (0x0C) |
| ColumnTypes.GuidType |
Type GUID / REPID (0x0F) |
| ColumnTypes.NumericType |
Type Numeric/BCD (0x10) |
| ColumnType.BigBinaryType |
Native Jet4 BIGBINARY (0x11), a fixed 3992-byte payload used by MSysAccessObjects.Data; complex columns use 0x12 |
| ColumnTypes.ComplexType |
Type Complex (0x12) — multi-value/attachment |
| ColumnTypes.DateTimeExtendedType |
Type DateTime Extended (0x14) — Access 2019+ high-precision |
| OLE Automation date |
Date/time encoded as a floating-point day count used by Access and COM automation |
| Term |
Meaning |
| Column descriptor |
TDEF record for one column, including type, length, flags, offsets, and column number |
| col_type |
One-byte JET column type discriminator stored in each column descriptor |
| col_len |
Column length field in a descriptor; calculated columns may include wrapper overhead |
| flags byte |
Primary column descriptor bitmask for fixed-width, AutoNumber, Hyperlink, and legacy NOT NULL markers |
| extra flags |
Jet4/ACE descriptor byte used for compressed-unicode and calculated-column markers |
| AutoNumber |
Access identity column; TDEF stores a high-water value used for the next generated number |
| Hyperlink |
MEMO column flag indicating Access hyperlink semantics |
| Calculated column |
ACCDB-only expression column with a cached value wrapped by calculated-column metadata |
| Expression |
Persisted Jet/VBA expression string for a calculated column |
| ResultType |
Persisted JET column type code describing the calculated expression result |
| LvProp |
MSysObjects long-value property blob used for catalog and column/table property data |
| PropertyMap |
Jackcess term for Access property blobs such as Expression and ResultType |
| InputMask |
Access column property that constrains interactive text entry formatting |
| AllowZeroLength |
Access text-column property allowing empty strings distinct from NULL |
| CRC |
Cyclic Redundancy Check — reserved/version area in calculated-column wrappers references CRC bytes |
Internal Structures
| Term |
Meaning |
| LRU |
Least Recently Used — strict retention policy used by bounded metadata caches; the reader page cache uses CLOCK approximate LRU eviction |
| B-tree |
Balanced tree — index page structure (leaf 0x04, intermediate 0x03) |
| Magic value / cookie |
Fixed byte or integer value Access expects in a header/descriptor to recognize a valid structure |
| High-water value |
Cached maximum AutoNumber value used to pick the next generated value |
| Sentinel |
Reserved value that marks a special state such as free sector, unused column-map slot, or end of chain |
| Bitmask |
Integer whose individual bits carry independent flags or bitmap state |
| little-endian |
Multi-byte numeric encoding with the least significant byte first |
Indexes & Relationships
| Term |
Meaning |
| real-idx |
Physical index descriptor in a TDEF; maps indexed columns to the root page of an index B-tree |
| logical-idx |
Logical index entry in a TDEF; names or relates logical indexes to backing real-idx descriptors |
| col_map |
Fixed 10-slot column map inside a real-idx descriptor: {col_num, col_order} entries |
| col_num |
Physical column number stored in descriptors and index column maps |
| col_order |
Sort direction byte inside a col_map slot (0x01 ascending, 0x00 descending) |
| first_dp |
Root page pointer for an index B-tree in a real-idx descriptor |
| used_pages |
Usage-map pointer/list for pages owned by an index |
| pref_len |
Page-shared prefix length used by compressed index key entries |
| tail_page / childTail |
Index page header pointer used by intermediate index pages to reach the final child branch |
| grbit |
MSysRelationships bitmask column containing referential-integrity and cascade flags |
| Referential integrity |
Relationship enforcement requiring FK values to match parent PK/unique-index values |
| Cascade update/delete |
Relationship option that propagates parent key updates or deletes to child rows |
| Unique index |
Index flag that rejects duplicate non-null key values |
| Ignore nulls |
Index flag that omits rows whose key columns are NULL |
| Required index |
Index flag used for NOT NULL / PK enforcement |
| Collation |
Text comparison and sort-key encoding rules used by text indexes |
System Tables, Catalog & Security
| Term |
Meaning |
| MSysObjects |
Catalog table listing all database objects; its own TDEF is always page 2, whether or not a catalog row names it |
| MSysACEs |
Access Control Entries (security) |
| MSysRelationships |
Foreign key relationship definitions |
| MSysComplexColumns |
Links complex columns to their template tables |
| MSysIndexes |
Index definitions |
| MSysIndexColumns |
System table listing columns that participate in indexes |
| MSysQueries |
System table storing saved query metadata |
| MSysDb |
Internal Access system object name that appears in DAO error messages when catalog validation fails |
| MSysComplexType_* |
Per-database template tables Access creates for complex columns |
| MSysComplexTypeVH_* |
Version-history template table prefix for complex-column history data |
| Complex type-template table |
Hidden system table describing the shape of attachment or multi-value child rows |
| Complex flat table |
Hidden child table that stores actual attachment, multi-value, or version-history rows |
| ParentId |
MSysObjects column linking an object row to a catalog container such as Tables or Relationships |
| Type |
MSysObjects object-kind discriminator, such as user table, linked table, or relationship |
| Flags |
MSysObjects bitmask identifying system/hidden objects, linked tables, and complex backing tables |
| Owner |
MSysObjects binary owner token required by DAO Compact & Repair on writer-created rows |
| ACE |
Access Control Entry row in MSysACEs granting a principal permissions on an object |
| ACM |
Access Control Mask — permission bitmask stored in MSysACEs rows |
| SID |
Security Identifier — compact principal identifier bytes stored in MSysACEs |
| Principal |
Security subject such as owner, Admins group, or Users group |
| C&R |
Compact & Repair — DAO operation that validates and rewrites Access database files |
Long Values & Wrapped Payloads
| Term |
Meaning |
| Inline LVAL |
Long-value payload stored directly in the owning row |
| Single-page LVAL |
Long-value payload stored in one external LVAL page |
| Chained LVAL |
Long-value payload spread across multiple linked LVAL pages |
| Storage mode |
LVAL header bit pattern selecting inline, single-page, or chained storage |
| 30-bit LVAL length |
Native MEMO/OLE descriptor length; the remaining two bits select inline, single-page or chained storage. The default read budget and current writer limit are 16,777,215 bytes, below the native field maximum. |
| Magic bytes |
File-signature bytes at the start of an OLE value or its unwrapped content; OleObjectValue.DetectMediaType maps them to a media type |
| JPEG |
Joint Photographic Experts Group image format; detected by FF D8 FF magic bytes |
| PNG |
Portable Network Graphics image format; detected by 89 50 4E 47 magic bytes |
| GIF |
Graphics Interchange Format image format; detected by GIF magic bytes |
| BMP |
Bitmap image format; detected by BM magic bytes |
| TIFF |
Tagged Image File Format; little- and big-endian signatures are both detected |
| PDF |
Portable Document Format; detected by %PDF magic bytes in OLE payloads |
| ZIP |
ZIP archive/container format; detected by 50 4B 03 04 (PK\x03\x04) magic bytes |
| OOXML |
Office Open XML — ZIP-packaged Office document formats such as DOCX, XLSX, and PPTX |
| RTF |
Rich Text Format; detected by {\rt magic bytes in OLE payloads |
Standards & Specifications
| Term |
Meaning |
| ECMA-376 |
Office Open XML standard — defines Agile encryption |
| MS-CFB |
Microsoft Compound File Binary Format specification |
| MS-OFFCRYPTO |
Microsoft Office Document Cryptography Structure specification |
| CVE |
Common Vulnerabilities and Exposures |
| OOB |
Out of Bounds — memory access vulnerability class |