mirror of
https://github.com/mdbtools/mdbtools.git
synced 2025-07-17 11:36:44 +08:00
Jet version detection from trevor@harrison.org
Update to HACKERS file with (sparce) information about indexes.
This commit is contained in:
parent
ad4d17cfe9
commit
1e389d8d4c
2
AUTHORS
2
AUTHORS
@ -5,3 +5,5 @@ Karl Nyberg <knyberg@grebyn.com>
|
|||||||
Georg Bauer <gb@hugo.westfalen.de>
|
Georg Bauer <gb@hugo.westfalen.de>
|
||||||
|
|
||||||
Carl Seutter <cgseutter@worldnet.att.net>
|
Carl Seutter <cgseutter@worldnet.att.net>
|
||||||
|
|
||||||
|
Trevor Harrison <trevor@harrison.org>
|
||||||
|
13
HACKERS
13
HACKERS
@ -114,18 +114,18 @@ The header to table definition pages start look something like this:
|
|||||||
| ???? | 2 bytes | generally same as # of cols but not always |
|
| ???? | 2 bytes | generally same as # of cols but not always |
|
||||||
| ???? | 2 bytes | ??? |
|
| ???? | 2 bytes | ??? |
|
||||||
| ???? | 2 bytes | number of columns in table |
|
| ???? | 2 bytes | number of columns in table |
|
||||||
| ???? | 4 bytes | number of data pages in table |
|
| ???? | 4 bytes | number of indexes for this table |
|
||||||
| ???? | 4 bytes | number of data pages in table (repeat) |
|
| ???? | 4 bytes | number of indexes for this table (repeat) |
|
||||||
| 0x00 | 1 byte | ??? |
|
| 0x00 | 1 byte | ??? |
|
||||||
| ???? | 2 bytes | page number of first datapage for table |
|
| ???? | 2 bytes | page number of first datapage for table |
|
||||||
| ???? | 2 bytes | ??? |
|
| ???? | 2 bytes | ??? |
|
||||||
| ???? | 2 bytes | page number of first datapage for table |
|
| ???? | 2 bytes | page number of first datapage for table |
|
||||||
| 0x00 | 1 byte | ??? |
|
| 0x00 | 1 byte | ??? |
|
||||||
+-------------------------------------------------------------------------+
|
+-------------------------------------------------------------------------+
|
||||||
| Iterate for the 2 x number of datapages |
|
| Iterate for the 2 x number of indexes |
|
||||||
+-------------------------------------------------------------------------+
|
+-------------------------------------------------------------------------+
|
||||||
| ???? | 4 bytes | number of rows in table |
|
| ???? | 4 bytes | number of rows in table |
|
||||||
| ???? | 4 bytes | ??? |
|
| ???? | 4 bytes | number of rows in the index |
|
||||||
+-------------------------------------------------------------------------+
|
+-------------------------------------------------------------------------+
|
||||||
|
|
||||||
The next few bytes are somewhat of a mystery right now, but around 0x2B from
|
The next few bytes are somewhat of a mystery right now, but around 0x2B from
|
||||||
@ -154,6 +154,11 @@ Column Type may be one of the following (not complete).
|
|||||||
Following the 18 byte column records begins the column names, listed in order
|
Following the 18 byte column records begins the column names, listed in order
|
||||||
with a 1 byte size prefix preceding each name.
|
with a 1 byte size prefix preceding each name.
|
||||||
|
|
||||||
|
After a number of bytes (generally 0x3a) the names of the indexes are listed.
|
||||||
|
|
||||||
|
It is currently unknown how indexes are mapped to columns and how they point at
|
||||||
|
index pages or the format of the index pages.
|
||||||
|
|
||||||
Data Rows
|
Data Rows
|
||||||
---------
|
---------
|
||||||
|
|
||||||
|
@ -34,6 +34,10 @@
|
|||||||
#define MDB_CATALOG_PG 18
|
#define MDB_CATALOG_PG 18
|
||||||
#define MDB_MEMO_OVERHEAD 12
|
#define MDB_MEMO_OVERHEAD 12
|
||||||
|
|
||||||
|
enum {
|
||||||
|
MDB_VER_JET3 = 0,
|
||||||
|
MDB_VER_JET4 = 1
|
||||||
|
};
|
||||||
enum {
|
enum {
|
||||||
MDB_FORM = 0,
|
MDB_FORM = 0,
|
||||||
MDB_TABLE,
|
MDB_TABLE,
|
||||||
@ -73,6 +77,8 @@ typedef struct {
|
|||||||
int num_catalog;
|
int num_catalog;
|
||||||
GArray *catalog;
|
GArray *catalog;
|
||||||
int pg_size;
|
int pg_size;
|
||||||
|
guint32 jet_version;
|
||||||
|
guint32 db_key;
|
||||||
} MdbHandle;
|
} MdbHandle;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
Loading…
Reference in New Issue
Block a user