mirror of
https://github.com/mdbtools/mdbtools.git
synced 2026-03-10 00:20:54 +08:00
build problem with 0.002
This commit is contained in:
39
HACKERS
39
HACKERS
@@ -89,11 +89,11 @@ course of action has been to stop at the first non-printable character
|
||||
After the name there is sometimes have (not yet determined why only sometimes)
|
||||
a page pointer and offset to the KKD records (see below). There is also pointer to other catalog pages, but I'm not really sure how to parse those.
|
||||
|
||||
Column Definition
|
||||
Table Definition
|
||||
-----------------
|
||||
|
||||
The second and third bytes of each catalog entry store a 16 bit page pointer to
|
||||
a column definition, including name, type, size, number of datarows, a pointer
|
||||
a table definition, including name, type, size, number of datarows, a pointer
|
||||
to the first data page, and possibly more. I haven't fully figured this out so what follows is rough.
|
||||
|
||||
The header to table definition pages start look something like this:
|
||||
@@ -144,6 +144,41 @@ Column Type may be one of the following (not complete).
|
||||
Following the 18 byte column records begins the column names, listed in order
|
||||
with a 1 byte size prefix preceding each name.
|
||||
|
||||
Data Rows
|
||||
---------
|
||||
|
||||
The header of a data page looks like this:
|
||||
|
||||
+------+---------+--------------------------------------------------------+
|
||||
| 0x01 | 1 byte | Page type |
|
||||
| 0x01 | 1 byte | Unknown |
|
||||
| ???? | 2 bytes | Unknown |
|
||||
| ???? | 2 bytes | Page pointer to table definition |
|
||||
| 0x00 | 2 bytes | Unknown |
|
||||
| ???? | 4 bytes | number of rows of data in this table |
|
||||
+------+---------+--------------------------------------------------------+
|
||||
| Iterate for the number of records |
|
||||
+-------------------------------------------------------------------------+
|
||||
| ???? | 2 bytes | offset to the records location on this page |
|
||||
+-------------------------------------------------------------------------+
|
||||
|
||||
Each data row looks like this:
|
||||
|
||||
+------+---------+--------------------------------------------------------+
|
||||
| ???? | 1 byte | Number of columns stored in this row |
|
||||
| ???? | n bytes | Fixed length columns |
|
||||
| ???? | n bytes | Variable length columns |
|
||||
| ???? | 1 byte | length of data from beginning of record |
|
||||
| ???? | n bytes | offset from start of row for each variable length col |
|
||||
| ???? | 1 byte | number of variable length columns |
|
||||
| ???? | 1 byte | Unknown |
|
||||
+------+---------+--------------------------------------------------------+
|
||||
|
||||
Note: it is possible for the offset to the beginning of a variable length
|
||||
column to require more than one byte (if the sum of the lengths of columns is
|
||||
greater than 255). I have no idea how this is represented in the data as I
|
||||
have not looked at tables large enough for this to occur yet.
|
||||
|
||||
KKD Records
|
||||
-----------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user