diff --git a/format/sqlite3/sqlite3.go b/format/sqlite3/sqlite3.go index 99b95e1f2..bb1ba3fae 100644 --- a/format/sqlite3/sqlite3.go +++ b/format/sqlite3/sqlite3.go @@ -41,10 +41,10 @@ import ( "embed" "github.com/wader/fq/format" - "github.com/wader/fq/format/registry" "github.com/wader/fq/internal/mathextra" "github.com/wader/fq/pkg/bitio" "github.com/wader/fq/pkg/decode" + "github.com/wader/fq/pkg/interp" "github.com/wader/fq/pkg/scalar" ) @@ -52,7 +52,7 @@ import ( var sqlite3FS embed.FS func init() { - registry.MustRegister(decode.Format{ + interp.RegisterFormat(decode.Format{ Name: format.SQLITE3, Description: "SQLite v3 database", Groups: []string{format.PROBE}, @@ -62,6 +62,21 @@ func init() { }) } +type intStack struct { + s []int +} + +func (s *intStack) Push(n int) { s.s = append(s.s, n) } + +func (s *intStack) Pop() (int, bool) { + if len(s.s) == 0 { + return 0, false + } + var n int + n, s.s = s.s[0], s.s[1:] + return n, true +} + const sqlite3HeaderSize = 100 const ( @@ -106,12 +121,14 @@ var serialTypeMapper = scalar.Fn(func(s scalar.S) (scalar.S, error) { return s, nil }) +type pageType int + const ( - pageTypePtrmap = 0x00 - pageTypeBTreeIndexInterior = 0x02 - pageTypeBTreeTableInterior = 0x05 - pageTypeBTreeIndexLeaf = 0x0a - pageTypeBTreeTableLeaf = 0x0d + pageTypePtrmap pageType = 0x00 + pageTypeBTreeIndexInterior = 0x02 + pageTypeBTreeTableInterior = 0x05 + pageTypeBTreeIndexLeaf = 0x0a + pageTypeBTreeTableLeaf = 0x0d ) var pageTypeMap = scalar.UToSymStr{ @@ -276,7 +293,7 @@ func sqlite3DecodeTreePage(d *decode.D, h sqlite3Header, x int64, payLoadLen int d.FieldStruct("overflow_page", func(d *decode.D) { br := d.FieldRawLen("data", firstPayLoadLen*8) nextPage = d.FieldS32("next_page") - d.MustCopyBits(payLoadBB, br) + d.CopyBits(payLoadBB, br) }) payLoadLenLeft := payLoadLen - firstPayLoadLen @@ -287,7 +304,7 @@ func sqlite3DecodeTreePage(d *decode.D, h sqlite3Header, x int64, payLoadLen int overflowSize := mathextra.MinInt64(h.pageSize-4, payLoadLenLeft) br := d.FieldRawLen("data", overflowSize*8) payLoadLenLeft -= overflowSize - d.MustCopyBits(payLoadBB, br) + d.CopyBits(payLoadBB, br) }) } }) @@ -299,6 +316,14 @@ func sqlite3DecodeTreePage(d *decode.D, h sqlite3Header, x int64, payLoadLen int } } +func sqlite3SeekPage(d *decode.D, h sqlite3Header, i int) { + pageOffset := h.pageSize * int64(i) + if i == 0 { + pageOffset += sqlite3HeaderSize + } + d.SeekAbs(pageOffset * 8) +} + func sqlite3Decode(d *decode.D, in interface{}) interface{} { var h sqlite3Header @@ -340,6 +365,49 @@ func sqlite3Decode(d *decode.D, in interface{}) interface{} { } }) + // pageTypes := map[int]pageType{} + // pageVisitStack := &intStack{} + // pageVisitStack.Push(0) + + // for { + // i, ok := pageVisitStack.Pop() + // if !ok { + // break + // } + // if _, ok := pageTypes[i]; ok { + // d.Fatalf("page %d already visited", i) + // } + + // sqlite3SeekPage(d, h, i) + // typ := d.U8() + + // switch typ { + // case pageTypeBTreeIndexInterior, + // pageTypeBTreeTableInterior: + + // d.U16() // start_free_blocks + // d.U16() // cell_start + // d.U8() // cell_fragments + // rightPointer := d.U32() + + // pageCells := d.U16() + // for i := uint64(0); i < pageCells; i++ { + + // } + + // switch typ { + // case pageTypeBTreeIndexInterior: + + // } + + // default: + // d.Fatalf("asd") + // } + + // } + + // return nil + d.FieldArray("pages", func(d *decode.D) { d.RangeSorted = false @@ -348,6 +416,16 @@ func sqlite3Decode(d *decode.D, in interface{}) interface{} { d.FieldValueStr("type", "page0_index_fill") }) + // for { + // i, ok := pageStack.Pop() + // if !ok { + // break + // } + // if _, ok := pageSeen[i]; ok { + // d.Fatalf("page %d already visited", i) + // } + // pageSeen[i] = struct{}{} + for i := 0; i < h.databaseSizePages; i++ { pageOffset := h.pageSize * int64(i) d.SeekAbs(pageOffset * 8) @@ -355,6 +433,7 @@ func sqlite3Decode(d *decode.D, in interface{}) interface{} { if i == 0 { d.SeekRel(sqlite3HeaderSize * 8) } + sqlite3SeekPage(d, h, i) d.FieldStruct("page", func(d *decode.D) { typ := d.FieldU8("type", pageTypeMap) diff --git a/format/sqlite3/testdata/multi_tables.sql b/format/sqlite3/testdata/multi_tables.sql index fb05445c4..7a285937b 100644 --- a/format/sqlite3/testdata/multi_tables.sql +++ b/format/sqlite3/testdata/multi_tables.sql @@ -1,17 +1,17 @@ CREATE TABLE aaa ( - cint int primary key, - ctext text + cint INT PRIMARY KEY, + ctext TEXT ); INSERT INTO aaa VALUES(123, "AAAAAAA"); CREATE TABLE bbb ( - cint int primary key, - ctext text + cint INT PRIMARY KEY, + ctext TEXT ); INSERT INTO bbb VALUES(456, "BBBBBBB"); CREATE TABLE ccc ( - cint int primary key, - ctext text + cint INT PRIMARY KEY, + ctext TEXT ); INSERT INTO ccc VALUES(789, "CCCCCCC"); diff --git a/format/sqlite3/testdata/multi_tables.sql.db b/format/sqlite3/testdata/multi_tables.sql.db index 7dfaa3c34..68ea67ee1 100644 Binary files a/format/sqlite3/testdata/multi_tables.sql.db and b/format/sqlite3/testdata/multi_tables.sql.db differ diff --git a/format/sqlite3/testdata/multi_tables.sql.fqtest b/format/sqlite3/testdata/multi_tables.sql.fqtest index 47a711f44..8f799c86e 100644 --- a/format/sqlite3/testdata/multi_tables.sql.fqtest +++ b/format/sqlite3/testdata/multi_tables.sql.fqtest @@ -1,321 +1 @@ $ fq 'dv, torepr' multi_tables.sql.db - |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: multi_tables.sql.db (sqlite3) 0x0-0x6fff.7 (28672) - | | | header{}: 0x0-0x63.7 (100) -0x0000|53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00|SQLite format 3.| magic: "SQLite format 3\x00" (valid) 0x0-0xf.7 (16) -0x0010|10 00 |.. | page_size: 4096 0x10-0x11.7 (2) -0x0010| 01 | . | write_version: "legacy" (1) 0x12-0x12.7 (1) -0x0010| 01 | . | read_version: "legacy" (1) 0x13-0x13.7 (1) -0x0010| 00 | . | unused_space: 0 0x14-0x14.7 (1) -0x0010| 40 | @ | maximum_embedded_payload_fraction: 64 0x15-0x15.7 (1) -0x0010| 20 | | minimum_embedded_payload_fraction: 32 0x16-0x16.7 (1) -0x0010| 20 | | leaf_payload_fraction: 32 0x17-0x17.7 (1) -0x0010| 00 00 00 06 | .... | file_change_counter: 6 0x18-0x1b.7 (4) -0x0010| 00 00 00 07| ....| database_size_pages: 7 0x1c-0x1f.7 (4) -0x0020|00 00 00 00 |.... | page_number_freelist: 0 0x20-0x23.7 (4) -0x0020| 00 00 00 00 | .... | total_number_freelist: 0 0x24-0x27.7 (4) -0x0020| 00 00 00 03 | .... | schema_cookie: 3 0x28-0x2b.7 (4) -0x0020| 00 00 00 04| ....| schema_format_number: 4 0x2c-0x2f.7 (4) -0x0030|00 00 00 00 |.... | default_page_cache_size: 0 0x30-0x33.7 (4) -0x0030| 00 00 00 00 | .... | page_number_largest_root_btree: 0 0x34-0x37.7 (4) -0x0030| 00 00 00 01 | .... | text_encoding: "utf8" (1) 0x38-0x3b.7 (4) -0x0030| 00 00 00 00| ....| user_version: 0 0x3c-0x3f.7 (4) -0x0040|00 00 00 00 |.... | incremental_vacuum_mode: 0 0x40-0x43.7 (4) -0x0040| 00 00 00 00 | .... | application_id: 0 0x44-0x47.7 (4) -0x0040| 00 00 00 00 00 00 00 00| ........| reserved: raw bits (all zero) 0x48-0x5b.7 (20) -0x0050|00 00 00 00 00 00 00 00 00 00 00 00 |............ | -0x0050| 00 00 00 06| ....| version_valid_for: 6 0x5c-0x5f.7 (4) -0x0060|00 2e 53 60 |..S` | sqlite_version_number: 3036000 0x60-0x63.7 (4) - | | | pages[0:8]: 0x64-0x6fff.7 (28572) - | | | [0]{}: page 0x64-NA (0) - | | | type: "page0_index_fill" 0x64-NA (0) - | | | [1]{}: page 0x64-0xff9.7 (3990) -0x0060| 0d | . | type: "table_leaf" (13) 0x64-0x64.7 (1) -0x0060| 0f f8 | .. | start_freeblocks: 4088 0x65-0x66.7 (2) -0x0060| 00 06 | .. | page_cells: 6 0x67-0x68.7 (2) -0x0060| 0e 8d | .. | cell_start: 3725 0x69-0x6a.7 (2) -0x0060| 00 | . | cell_fragments: 0 0x6b-0x6b.7 (1) - | | | cells_pointers[0:6]: 0x6c-0x77.7 (12) -0x0060| 0f 7f | .. | [0]: 3967 pointer 0x6c-0x6d.7 (2) -0x0060| 0f d1| ..| [1]: 4049 pointer 0x6e-0x6f.7 (2) -0x0070|0f 06 |.. | [2]: 3846 pointer 0x70-0x71.7 (2) -0x0070| 0f 58 | .X | [3]: 3928 pointer 0x72-0x73.7 (2) -0x0070| 0e 8d | .. | [4]: 3725 pointer 0x74-0x75.7 (2) -0x0070| 0e df | .. | [5]: 3807 pointer 0x76-0x77.7 (2) - | | | cells[0:6]: 0xe8d-0xff7.7 (363) - | | | [0]{}: cell 0xf7f-0xfd0.7 (82) -0x0f70| 50| P| payload_len: 80 0xf7f-0xf7f.7 (1) -0x0f80|01 |. | rowid: 1 0xf80-0xf80.7 (1) - | | | payload{}: 0xf81-0xfd0.7 (80) -0x0f80| 07 | . | length: 7 0xf81-0xf81.7 (1) - | | | serials[0:5]: 0xf82-0xf87.7 (6) -0x0f80| 17 | . | [0]: 23 serial (text) 0xf82-0xf82.7 (1) -0x0f80| 13 | . | [1]: 19 serial (text) 0xf83-0xf83.7 (1) -0x0f80| 13 | . | [2]: 19 serial (text) 0xf84-0xf84.7 (1) -0x0f80| 01 | . | [3]: 1 serial (int8) 0xf85-0xf85.7 (1) -0x0f80| 81 07 | .. | [4]: 135 serial (text) 0xf86-0xf87.7 (2) - | | | contents[0:5]: 0xf88-0xfd0.7 (73) -0x0f80| 74 61 62 6c 65 | table | [0]: "table" value 0xf88-0xf8c.7 (5) -0x0f80| 61 61 61| aaa| [1]: "aaa" value 0xf8d-0xf8f.7 (3) -0x0f90|61 61 61 |aaa | [2]: "aaa" value 0xf90-0xf92.7 (3) -0x0f90| 02 | . | [3]: 2 value 0xf93-0xf93.7 (1) -0x0f90| 43 52 45 41 54 45 20 54 41 42 4c 45| CREATE TABLE| [4]: "CREATE TABLE aaa (\n cint int primary key,\n c"... value 0xf94-0xfd0.7 (61) -0x0fa0|20 61 61 61 20 28 0a 20 20 20 20 63 69 6e 74 20| aaa (. cint | -* |until 0xfd0.7 (61) | | - | | | [1]{}: cell 0xfd1-0xff7.7 (39) -0x0fd0| 25 | % | payload_len: 37 0xfd1-0xfd1.7 (1) -0x0fd0| 02 | . | rowid: 2 0xfd2-0xfd2.7 (1) - | | | payload{}: 0xfd3-0xff7.7 (37) -0x0fd0| 06 | . | length: 6 0xfd3-0xfd3.7 (1) - | | | serials[0:5]: 0xfd4-0xfd8.7 (5) -0x0fd0| 17 | . | [0]: 23 serial (text) 0xfd4-0xfd4.7 (1) -0x0fd0| 39 | 9 | [1]: 57 serial (text) 0xfd5-0xfd5.7 (1) -0x0fd0| 13 | . | [2]: 19 serial (text) 0xfd6-0xfd6.7 (1) -0x0fd0| 01 | . | [3]: 1 serial (int8) 0xfd7-0xfd7.7 (1) -0x0fd0| 00 | . | [4]: 0 serial (null) 0xfd8-0xfd8.7 (1) - | | | contents[0:5]: 0xfd9-0xff7.7 (31) -0x0fd0| 69 6e 64 65 78 | index | [0]: "index" value 0xfd9-0xfdd.7 (5) -0x0fd0| 73 71| sq| [1]: "sqlite_autoindex_aaa_1" value 0xfde-0xff3.7 (22) -0x0fe0|6c 69 74 65 5f 61 75 74 6f 69 6e 64 65 78 5f 61|lite_autoindex_a| -0x0ff0|61 61 5f 31 |aa_1 | -0x0ff0| 61 61 61 | aaa | [2]: "aaa" value 0xff4-0xff6.7 (3) -0x0ff0| 03 | . | [3]: 3 value 0xff7-0xff7.7 (1) - | | | [4]: null value 0xff8-NA (0) - | | | [2]{}: cell 0xf06-0xf57.7 (82) -0x0f00| 50 | P | payload_len: 80 0xf06-0xf06.7 (1) -0x0f00| 03 | . | rowid: 3 0xf07-0xf07.7 (1) - | | | payload{}: 0xf08-0xf57.7 (80) -0x0f00| 07 | . | length: 7 0xf08-0xf08.7 (1) - | | | serials[0:5]: 0xf09-0xf0e.7 (6) -0x0f00| 17 | . | [0]: 23 serial (text) 0xf09-0xf09.7 (1) -0x0f00| 13 | . | [1]: 19 serial (text) 0xf0a-0xf0a.7 (1) -0x0f00| 13 | . | [2]: 19 serial (text) 0xf0b-0xf0b.7 (1) -0x0f00| 01 | . | [3]: 1 serial (int8) 0xf0c-0xf0c.7 (1) -0x0f00| 81 07 | .. | [4]: 135 serial (text) 0xf0d-0xf0e.7 (2) - | | | contents[0:5]: 0xf0f-0xf57.7 (73) -0x0f00| 74| t| [0]: "table" value 0xf0f-0xf13.7 (5) -0x0f10|61 62 6c 65 |able | -0x0f10| 62 62 62 | bbb | [1]: "bbb" value 0xf14-0xf16.7 (3) -0x0f10| 62 62 62 | bbb | [2]: "bbb" value 0xf17-0xf19.7 (3) -0x0f10| 04 | . | [3]: 4 value 0xf1a-0xf1a.7 (1) -0x0f10| 43 52 45 41 54| CREAT| [4]: "CREATE TABLE bbb (\n cint int primary key,\n c"... value 0xf1b-0xf57.7 (61) -0x0f20|45 20 54 41 42 4c 45 20 62 62 62 20 28 0a 20 20|E TABLE bbb (. | -* |until 0xf57.7 (61) | | - | | | [3]{}: cell 0xf58-0xf7e.7 (39) -0x0f50| 25 | % | payload_len: 37 0xf58-0xf58.7 (1) -0x0f50| 04 | . | rowid: 4 0xf59-0xf59.7 (1) - | | | payload{}: 0xf5a-0xf7e.7 (37) -0x0f50| 06 | . | length: 6 0xf5a-0xf5a.7 (1) - | | | serials[0:5]: 0xf5b-0xf5f.7 (5) -0x0f50| 17 | . | [0]: 23 serial (text) 0xf5b-0xf5b.7 (1) -0x0f50| 39 | 9 | [1]: 57 serial (text) 0xf5c-0xf5c.7 (1) -0x0f50| 13 | . | [2]: 19 serial (text) 0xf5d-0xf5d.7 (1) -0x0f50| 01 | . | [3]: 1 serial (int8) 0xf5e-0xf5e.7 (1) -0x0f50| 00| .| [4]: 0 serial (null) 0xf5f-0xf5f.7 (1) - | | | contents[0:5]: 0xf60-0xf7e.7 (31) -0x0f60|69 6e 64 65 78 |index | [0]: "index" value 0xf60-0xf64.7 (5) -0x0f60| 73 71 6c 69 74 65 5f 61 75 74 6f| sqlite_auto| [1]: "sqlite_autoindex_bbb_1" value 0xf65-0xf7a.7 (22) -0x0f70|69 6e 64 65 78 5f 62 62 62 5f 31 |index_bbb_1 | -0x0f70| 62 62 62 | bbb | [2]: "bbb" value 0xf7b-0xf7d.7 (3) -0x0f70| 05 | . | [3]: 5 value 0xf7e-0xf7e.7 (1) - | | | [4]: null value 0xf7f-NA (0) - | | | [4]{}: cell 0xe8d-0xede.7 (82) -0x0e80| 50 | P | payload_len: 80 0xe8d-0xe8d.7 (1) -0x0e80| 05 | . | rowid: 5 0xe8e-0xe8e.7 (1) - | | | payload{}: 0xe8f-0xede.7 (80) -0x0e80| 07| .| length: 7 0xe8f-0xe8f.7 (1) - | | | serials[0:5]: 0xe90-0xe95.7 (6) -0x0e90|17 |. | [0]: 23 serial (text) 0xe90-0xe90.7 (1) -0x0e90| 13 | . | [1]: 19 serial (text) 0xe91-0xe91.7 (1) -0x0e90| 13 | . | [2]: 19 serial (text) 0xe92-0xe92.7 (1) -0x0e90| 01 | . | [3]: 1 serial (int8) 0xe93-0xe93.7 (1) -0x0e90| 81 07 | .. | [4]: 135 serial (text) 0xe94-0xe95.7 (2) - | | | contents[0:5]: 0xe96-0xede.7 (73) -0x0e90| 74 61 62 6c 65 | table | [0]: "table" value 0xe96-0xe9a.7 (5) -0x0e90| 63 63 63 | ccc | [1]: "ccc" value 0xe9b-0xe9d.7 (3) -0x0e90| 63 63| cc| [2]: "ccc" value 0xe9e-0xea0.7 (3) -0x0ea0|63 |c | -0x0ea0| 06 | . | [3]: 6 value 0xea1-0xea1.7 (1) -0x0ea0| 43 52 45 41 54 45 20 54 41 42 4c 45 20 63| CREATE TABLE c| [4]: "CREATE TABLE ccc (\n cint int primary key,\n c"... value 0xea2-0xede.7 (61) -0x0eb0|63 63 20 28 0a 20 20 20 20 63 69 6e 74 20 69 6e|cc (. cint in| -* |until 0xede.7 (61) | | - | | | [5]{}: cell 0xedf-0xf05.7 (39) -0x0ed0| 25| %| payload_len: 37 0xedf-0xedf.7 (1) -0x0ee0|06 |. | rowid: 6 0xee0-0xee0.7 (1) - | | | payload{}: 0xee1-0xf05.7 (37) -0x0ee0| 06 | . | length: 6 0xee1-0xee1.7 (1) - | | | serials[0:5]: 0xee2-0xee6.7 (5) -0x0ee0| 17 | . | [0]: 23 serial (text) 0xee2-0xee2.7 (1) -0x0ee0| 39 | 9 | [1]: 57 serial (text) 0xee3-0xee3.7 (1) -0x0ee0| 13 | . | [2]: 19 serial (text) 0xee4-0xee4.7 (1) -0x0ee0| 01 | . | [3]: 1 serial (int8) 0xee5-0xee5.7 (1) -0x0ee0| 00 | . | [4]: 0 serial (null) 0xee6-0xee6.7 (1) - | | | contents[0:5]: 0xee7-0xf05.7 (31) -0x0ee0| 69 6e 64 65 78 | index | [0]: "index" value 0xee7-0xeeb.7 (5) -0x0ee0| 73 71 6c 69| sqli| [1]: "sqlite_autoindex_ccc_1" value 0xeec-0xf01.7 (22) -0x0ef0|74 65 5f 61 75 74 6f 69 6e 64 65 78 5f 63 63 63|te_autoindex_ccc| -0x0f00|5f 31 |_1 | -0x0f00| 63 63 63 | ccc | [2]: "ccc" value 0xf02-0xf04.7 (3) -0x0f00| 07 | . | [3]: 7 value 0xf05-0xf05.7 (1) - | | | [4]: null value 0xf06-NA (0) - | | | freeblocks[0:1]: 0xff8-0xff9.7 (2) - | | | [0]{}: freeblock 0xff8-0xff9.7 (2) -0x0ff0| 00 00 | .. | next_offset: 0 0xff8-0xff9.7 (2) - | | | [2]{}: page 0x1000-0x1fff.7 (4096) -0x1000|0d |. | type: "table_leaf" (13) 0x1000-0x1000.7 (1) -0x1000| 00 00 | .. | start_freeblocks: 0 0x1001-0x1002.7 (2) -0x1000| 00 01 | .. | page_cells: 1 0x1003-0x1004.7 (2) -0x1000| 0f f3 | .. | cell_start: 4083 0x1005-0x1006.7 (2) -0x1000| 00 | . | cell_fragments: 0 0x1007-0x1007.7 (1) - | | | cells_pointers[0:1]: 0x1008-0x1009.7 (2) -0x1000| 0f f3 | .. | [0]: 4083 pointer 0x1008-0x1009.7 (2) - | | | cells[0:1]: 0x1ff3-0x1fff.7 (13) - | | | [0]{}: cell 0x1ff3-0x1fff.7 (13) -0x1ff0| 0b | . | payload_len: 11 0x1ff3-0x1ff3.7 (1) -0x1ff0| 01 | . | rowid: 1 0x1ff4-0x1ff4.7 (1) - | | | payload{}: 0x1ff5-0x1fff.7 (11) -0x1ff0| 03 | . | length: 3 0x1ff5-0x1ff5.7 (1) - | | | serials[0:2]: 0x1ff6-0x1ff7.7 (2) -0x1ff0| 01 | . | [0]: 1 serial (int8) 0x1ff6-0x1ff6.7 (1) -0x1ff0| 1b | . | [1]: 27 serial (text) 0x1ff7-0x1ff7.7 (1) - | | | contents[0:2]: 0x1ff8-0x1fff.7 (8) -0x1ff0| 7b | { | [0]: 123 value 0x1ff8-0x1ff8.7 (1) -0x1ff0| 41 41 41 41 41 41 41| AAAAAAA| [1]: "AAAAAAA" value 0x1ff9-0x1fff.7 (7) - | | | [3]{}: page 0x2000-0x2fff.7 (4096) -0x2000|0a |. | type: "index_leaf" (10) 0x2000-0x2000.7 (1) -0x2000| 00 00 | .. | start_freeblocks: 0 0x2001-0x2002.7 (2) -0x2000| 00 01 | .. | page_cells: 1 0x2003-0x2004.7 (2) -0x2000| 0f fb | .. | cell_start: 4091 0x2005-0x2006.7 (2) -0x2000| 00 | . | cell_fragments: 0 0x2007-0x2007.7 (1) - | | | cells_pointers[0:1]: 0x2008-0x2009.7 (2) -0x2000| 0f fb | .. | [0]: 4091 pointer 0x2008-0x2009.7 (2) - | | | cells[0:1]: 0x2ffb-0x2fff.7 (5) - | | | [0]{}: cell 0x2ffb-0x2fff.7 (5) -0x2ff0| 04 | . | payload_len: 4 0x2ffb-0x2ffb.7 (1) - | | | payload{}: 0x2ffc-0x2fff.7 (4) -0x2ff0| 03 | . | length: 3 0x2ffc-0x2ffc.7 (1) - | | | serials[0:2]: 0x2ffd-0x2ffe.7 (2) -0x2ff0| 01 | . | [0]: 1 serial (int8) 0x2ffd-0x2ffd.7 (1) -0x2ff0| 09 | . | [1]: 9 serial (one) 0x2ffe-0x2ffe.7 (1) - | | | contents[0:2]: 0x2fff-0x2fff.7 (1) -0x2ff0| 7b| {| [0]: 123 value 0x2fff-0x2fff.7 (1) - | | | [1]: 1 value 0x3000-NA (0) - | | | [4]{}: page 0x3000-0x3fff.7 (4096) -0x3000|0d |. | type: "table_leaf" (13) 0x3000-0x3000.7 (1) -0x3000| 00 00 | .. | start_freeblocks: 0 0x3001-0x3002.7 (2) -0x3000| 00 01 | .. | page_cells: 1 0x3003-0x3004.7 (2) -0x3000| 0f f2 | .. | cell_start: 4082 0x3005-0x3006.7 (2) -0x3000| 00 | . | cell_fragments: 0 0x3007-0x3007.7 (1) - | | | cells_pointers[0:1]: 0x3008-0x3009.7 (2) -0x3000| 0f f2 | .. | [0]: 4082 pointer 0x3008-0x3009.7 (2) - | | | cells[0:1]: 0x3ff2-0x3fff.7 (14) - | | | [0]{}: cell 0x3ff2-0x3fff.7 (14) -0x3ff0| 0c | . | payload_len: 12 0x3ff2-0x3ff2.7 (1) -0x3ff0| 01 | . | rowid: 1 0x3ff3-0x3ff3.7 (1) - | | | payload{}: 0x3ff4-0x3fff.7 (12) -0x3ff0| 03 | . | length: 3 0x3ff4-0x3ff4.7 (1) - | | | serials[0:2]: 0x3ff5-0x3ff6.7 (2) -0x3ff0| 02 | . | [0]: 2 serial (int16) 0x3ff5-0x3ff5.7 (1) -0x3ff0| 1b | . | [1]: 27 serial (text) 0x3ff6-0x3ff6.7 (1) - | | | contents[0:2]: 0x3ff7-0x3fff.7 (9) -0x3ff0| 01 c8 | .. | [0]: 456 value 0x3ff7-0x3ff8.7 (2) -0x3ff0| 42 42 42 42 42 42 42| BBBBBBB| [1]: "BBBBBBB" value 0x3ff9-0x3fff.7 (7) - | | | [5]{}: page 0x4000-0x4fff.7 (4096) -0x4000|0a |. | type: "index_leaf" (10) 0x4000-0x4000.7 (1) -0x4000| 00 00 | .. | start_freeblocks: 0 0x4001-0x4002.7 (2) -0x4000| 00 01 | .. | page_cells: 1 0x4003-0x4004.7 (2) -0x4000| 0f fa | .. | cell_start: 4090 0x4005-0x4006.7 (2) -0x4000| 00 | . | cell_fragments: 0 0x4007-0x4007.7 (1) - | | | cells_pointers[0:1]: 0x4008-0x4009.7 (2) -0x4000| 0f fa | .. | [0]: 4090 pointer 0x4008-0x4009.7 (2) - | | | cells[0:1]: 0x4ffa-0x4fff.7 (6) - | | | [0]{}: cell 0x4ffa-0x4fff.7 (6) -0x4ff0| 05 | . | payload_len: 5 0x4ffa-0x4ffa.7 (1) - | | | payload{}: 0x4ffb-0x4fff.7 (5) -0x4ff0| 03 | . | length: 3 0x4ffb-0x4ffb.7 (1) - | | | serials[0:2]: 0x4ffc-0x4ffd.7 (2) -0x4ff0| 02 | . | [0]: 2 serial (int16) 0x4ffc-0x4ffc.7 (1) -0x4ff0| 09 | . | [1]: 9 serial (one) 0x4ffd-0x4ffd.7 (1) - | | | contents[0:2]: 0x4ffe-0x4fff.7 (2) -0x4ff0| 01 c8| ..| [0]: 456 value 0x4ffe-0x4fff.7 (2) - | | | [1]: 1 value 0x5000-NA (0) - | | | [6]{}: page 0x5000-0x5fff.7 (4096) -0x5000|0d |. | type: "table_leaf" (13) 0x5000-0x5000.7 (1) -0x5000| 00 00 | .. | start_freeblocks: 0 0x5001-0x5002.7 (2) -0x5000| 00 01 | .. | page_cells: 1 0x5003-0x5004.7 (2) -0x5000| 0f f2 | .. | cell_start: 4082 0x5005-0x5006.7 (2) -0x5000| 00 | . | cell_fragments: 0 0x5007-0x5007.7 (1) - | | | cells_pointers[0:1]: 0x5008-0x5009.7 (2) -0x5000| 0f f2 | .. | [0]: 4082 pointer 0x5008-0x5009.7 (2) - | | | cells[0:1]: 0x5ff2-0x5fff.7 (14) - | | | [0]{}: cell 0x5ff2-0x5fff.7 (14) -0x5ff0| 0c | . | payload_len: 12 0x5ff2-0x5ff2.7 (1) -0x5ff0| 01 | . | rowid: 1 0x5ff3-0x5ff3.7 (1) - | | | payload{}: 0x5ff4-0x5fff.7 (12) -0x5ff0| 03 | . | length: 3 0x5ff4-0x5ff4.7 (1) - | | | serials[0:2]: 0x5ff5-0x5ff6.7 (2) -0x5ff0| 02 | . | [0]: 2 serial (int16) 0x5ff5-0x5ff5.7 (1) -0x5ff0| 1b | . | [1]: 27 serial (text) 0x5ff6-0x5ff6.7 (1) - | | | contents[0:2]: 0x5ff7-0x5fff.7 (9) -0x5ff0| 03 15 | .. | [0]: 789 value 0x5ff7-0x5ff8.7 (2) -0x5ff0| 43 43 43 43 43 43 43| CCCCCCC| [1]: "CCCCCCC" value 0x5ff9-0x5fff.7 (7) - | | | [7]{}: page 0x6000-0x6fff.7 (4096) -0x6000|0a |. | type: "index_leaf" (10) 0x6000-0x6000.7 (1) -0x6000| 00 00 | .. | start_freeblocks: 0 0x6001-0x6002.7 (2) -0x6000| 00 01 | .. | page_cells: 1 0x6003-0x6004.7 (2) -0x6000| 0f fa | .. | cell_start: 4090 0x6005-0x6006.7 (2) -0x6000| 00 | . | cell_fragments: 0 0x6007-0x6007.7 (1) - | | | cells_pointers[0:1]: 0x6008-0x6009.7 (2) -0x6000| 0f fa | .. | [0]: 4090 pointer 0x6008-0x6009.7 (2) - | | | cells[0:1]: 0x6ffa-0x6fff.7 (6) - | | | [0]{}: cell 0x6ffa-0x6fff.7 (6) -0x6ff0| 05 | . | payload_len: 5 0x6ffa-0x6ffa.7 (1) - | | | payload{}: 0x6ffb-0x6fff.7 (5) -0x6ff0| 03 | . | length: 3 0x6ffb-0x6ffb.7 (1) - | | | serials[0:2]: 0x6ffc-0x6ffd.7 (2) -0x6ff0| 02 | . | [0]: 2 serial (int16) 0x6ffc-0x6ffc.7 (1) -0x6ff0| 09 | . | [1]: 9 serial (one) 0x6ffd-0x6ffd.7 (1) - | | | contents[0:2]: 0x6ffe-0x6fff.7 (2) -0x6ff0| 03 15| ..| [0]: 789 value 0x6ffe-0x6fff.7 (2) - | | | [1]: 1 value 0x7000-NA (0) -0x0070| 00 00 00 00 00 00 00 00| ........| unknown0: raw bits 0x78-0xe8c.7 (3605) -0x0080|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|................| -* |until 0xe8c.7 (3605) | | -0x0ff0| 00 08 00 00 00 00| ......| unknown1: raw bits 0xffa-0xfff.7 (6) -0x1000| 00 00 00 00 00 00| ......| unknown2: raw bits 0x100a-0x1ff2.7 (4073) -0x1010|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|................| -* |until 0x1ff2.7 (4073) | | -0x2000| 00 00 00 00 00 00| ......| unknown3: raw bits 0x200a-0x2ffa.7 (4081) -0x2010|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|................| -* |until 0x2ffa.7 (4081) | | -0x3000| 00 00 00 00 00 00| ......| unknown4: raw bits 0x300a-0x3ff1.7 (4072) -0x3010|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|................| -* |until 0x3ff1.7 (4072) | | -0x4000| 00 00 00 00 00 00| ......| unknown5: raw bits 0x400a-0x4ff9.7 (4080) -0x4010|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|................| -* |until 0x4ff9.7 (4080) | | -0x5000| 00 00 00 00 00 00| ......| unknown6: raw bits 0x500a-0x5ff1.7 (4072) -0x5010|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|................| -* |until 0x5ff1.7 (4072) | | -0x6000| 00 00 00 00 00 00| ......| unknown7: raw bits 0x600a-0x6ff9.7 (4080) -0x6010|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|................| -* |until 0x6ff9.7 (4080) | | -{ - "aaa": [ - [ - 123, - "AAAAAAA" - ] - ], - "bbb": [ - [ - 456, - "BBBBBBB" - ] - ], - "ccc": [ - [ - 789, - "CCCCCCC" - ] - ] -} diff --git a/format/sqlite3/testdata/page_overflow.sql.fqtest b/format/sqlite3/testdata/page_overflow.sql.fqtest index 9a790abbd..638ab27b2 100644 --- a/format/sqlite3/testdata/page_overflow.sql.fqtest +++ b/format/sqlite3/testdata/page_overflow.sql.fqtest @@ -1,159 +1 @@ $ fq 'dv, torepr' page_overflow.sql.db - |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: page_overflow.sql.db (sqlite3) 0x0-0x3fff.7 (16384) - | | | header{}: 0x0-0x63.7 (100) -0x00000|53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00|SQLite format 3.| magic: "SQLite format 3\x00" (valid) 0x0-0xf.7 (16) -0x00010|10 00 |.. | page_size: 4096 0x10-0x11.7 (2) -0x00010| 01 | . | write_version: "legacy" (1) 0x12-0x12.7 (1) -0x00010| 01 | . | read_version: "legacy" (1) 0x13-0x13.7 (1) -0x00010| 00 | . | unused_space: 0 0x14-0x14.7 (1) -0x00010| 40 | @ | maximum_embedded_payload_fraction: 64 0x15-0x15.7 (1) -0x00010| 20 | | minimum_embedded_payload_fraction: 32 0x16-0x16.7 (1) -0x00010| 20 | | leaf_payload_fraction: 32 0x17-0x17.7 (1) -0x00010| 00 00 00 02 | .... | file_change_counter: 2 0x18-0x1b.7 (4) -0x00010| 00 00 00 04| ....| database_size_pages: 4 0x1c-0x1f.7 (4) -0x00020|00 00 00 00 |.... | page_number_freelist: 0 0x20-0x23.7 (4) -0x00020| 00 00 00 00 | .... | total_number_freelist: 0 0x24-0x27.7 (4) -0x00020| 00 00 00 01 | .... | schema_cookie: 1 0x28-0x2b.7 (4) -0x00020| 00 00 00 04| ....| schema_format_number: 4 0x2c-0x2f.7 (4) -0x00030|00 00 00 00 |.... | default_page_cache_size: 0 0x30-0x33.7 (4) -0x00030| 00 00 00 00 | .... | page_number_largest_root_btree: 0 0x34-0x37.7 (4) -0x00030| 00 00 00 01 | .... | text_encoding: "utf8" (1) 0x38-0x3b.7 (4) -0x00030| 00 00 00 00| ....| user_version: 0 0x3c-0x3f.7 (4) -0x00040|00 00 00 00 |.... | incremental_vacuum_mode: 0 0x40-0x43.7 (4) -0x00040| 00 00 00 00 | .... | application_id: 0 0x44-0x47.7 (4) -0x00040| 00 00 00 00 00 00 00 00| ........| reserved: raw bits (all zero) 0x48-0x5b.7 (20) -0x00050|00 00 00 00 00 00 00 00 00 00 00 00 |............ | -0x00050| 00 00 00 02| ....| version_valid_for: 2 0x5c-0x5f.7 (4) -0x00060|00 2e 53 60 |..S` | sqlite_version_number: 3036000 0x60-0x63.7 (4) - | | | pages[0:5]: 0x64-0x3ffc.7 (16281) - | | | [0]{}: page 0x64-NA (0) - | | | type: "page0_index_fill" 0x64-NA (0) - | | | [1]{}: page 0x64-0xff9.7 (3990) -0x00060| 0d | . | type: "table_leaf" (13) 0x64-0x64.7 (1) -0x00060| 0f f8 | .. | start_freeblocks: 4088 0x65-0x66.7 (2) -0x00060| 00 02 | .. | page_cells: 2 0x67-0x68.7 (2) -0x00060| 0f 4d | .M | cell_start: 3917 0x69-0x6a.7 (2) -0x00060| 00 | . | cell_fragments: 0 0x6b-0x6b.7 (1) - | | | cells_pointers[0:2]: 0x6c-0x6f.7 (4) -0x00060| 0f 4d | .M | [0]: 3917 pointer 0x6c-0x6d.7 (2) -0x00060| 0f bd| ..| [1]: 4029 pointer 0x6e-0x6f.7 (2) - | | | cells[0:2]: 0xf4d-0xff7.7 (171) - | | | [0]{}: cell 0xf4d-0xfbc.7 (112) -0x00f40| 6e | n | payload_len: 110 0xf4d-0xf4d.7 (1) -0x00f40| 01 | . | rowid: 1 0xf4e-0xf4e.7 (1) - | | | payload{}: 0xf4f-0xfbc.7 (110) -0x00f40| 07| .| length: 7 0xf4f-0xf4f.7 (1) - | | | serials[0:5]: 0xf50-0xf55.7 (6) -0x00f50|17 |. | [0]: 23 serial (text) 0xf50-0xf50.7 (1) -0x00f50| 27 | ' | [1]: 39 serial (text) 0xf51-0xf51.7 (1) -0x00f50| 27 | ' | [2]: 39 serial (text) 0xf52-0xf52.7 (1) -0x00f50| 01 | . | [3]: 1 serial (int8) 0xf53-0xf53.7 (1) -0x00f50| 81 1b | .. | [4]: 155 serial (text) 0xf54-0xf55.7 (2) - | | | contents[0:5]: 0xf56-0xfbc.7 (103) -0x00f50| 74 61 62 6c 65 | table | [0]: "table" value 0xf56-0xf5a.7 (5) -0x00f50| 6f 76 65 72 66| overf| [1]: "overflow_test" value 0xf5b-0xf67.7 (13) -0x00f60|6c 6f 77 5f 74 65 73 74 |low_test | -0x00f60| 6f 76 65 72 66 6c 6f 77| overflow| [2]: "overflow_test" value 0xf68-0xf74.7 (13) -0x00f70|5f 74 65 73 74 |_test | -0x00f70| 02 | . | [3]: 2 value 0xf75-0xf75.7 (1) -0x00f70| 43 52 45 41 54 45 20 54 41 42| CREATE TAB| [4]: "CREATE TABLE overflow_test (\n cint int primary "... value 0xf76-0xfbc.7 (71) -0x00f80|4c 45 20 6f 76 65 72 66 6c 6f 77 5f 74 65 73 74|LE overflow_test| -* |until 0xfbc.7 (71) | | - | | | [1]{}: cell 0xfbd-0xff7.7 (59) -0x00fb0| 39 | 9 | payload_len: 57 0xfbd-0xfbd.7 (1) -0x00fb0| 02 | . | rowid: 2 0xfbe-0xfbe.7 (1) - | | | payload{}: 0xfbf-0xff7.7 (57) -0x00fb0| 06| .| length: 6 0xfbf-0xfbf.7 (1) - | | | serials[0:5]: 0xfc0-0xfc4.7 (5) -0x00fc0|17 |. | [0]: 23 serial (text) 0xfc0-0xfc0.7 (1) -0x00fc0| 4d | M | [1]: 77 serial (text) 0xfc1-0xfc1.7 (1) -0x00fc0| 27 | ' | [2]: 39 serial (text) 0xfc2-0xfc2.7 (1) -0x00fc0| 01 | . | [3]: 1 serial (int8) 0xfc3-0xfc3.7 (1) -0x00fc0| 00 | . | [4]: 0 serial (null) 0xfc4-0xfc4.7 (1) - | | | contents[0:5]: 0xfc5-0xff7.7 (51) -0x00fc0| 69 6e 64 65 78 | index | [0]: "index" value 0xfc5-0xfc9.7 (5) -0x00fc0| 73 71 6c 69 74 65| sqlite| [1]: "sqlite_autoindex_overflow_test_1" value 0xfca-0xfe9.7 (32) -0x00fd0|5f 61 75 74 6f 69 6e 64 65 78 5f 6f 76 65 72 66|_autoindex_overf| -0x00fe0|6c 6f 77 5f 74 65 73 74 5f 31 |low_test_1 | -0x00fe0| 6f 76 65 72 66 6c| overfl| [2]: "overflow_test" value 0xfea-0xff6.7 (13) -0x00ff0|6f 77 5f 74 65 73 74 |ow_test | -0x00ff0| 03 | . | [3]: 3 value 0xff7-0xff7.7 (1) - | | | [4]: null value 0xff8-NA (0) - | | | freeblocks[0:1]: 0xff8-0xff9.7 (2) - | | | [0]{}: freeblock 0xff8-0xff9.7 (2) -0x00ff0| 00 00 | .. | next_offset: 0 0xff8-0xff9.7 (2) - | | | [2]{}: page 0x1000-0x3e25.7 (11814) -0x01000|0d |. | type: "table_leaf" (13) 0x1000-0x1000.7 (1) -0x01000| 00 00 | .. | start_freeblocks: 0 0x1001-0x1002.7 (2) -0x01000| 00 01 | .. | page_cells: 1 0x1003-0x1004.7 (2) -0x01000| 0e 10 | .. | cell_start: 3600 0x1005-0x1006.7 (2) -0x01000| 00 | . | cell_fragments: 0 0x1007-0x1007.7 (1) - | | | cells_pointers[0:1]: 0x1008-0x1009.7 (2) -0x01000| 0e 10 | .. | [0]: 3600 pointer 0x1008-0x1009.7 (2) - | | | cells[0:1]: 0x1e10-0x3e25.7 (8214) - | | | [0]{}: cell 0x1e10-0x3e25.7 (8214) - | | | payload{}: 0x0-0x100a.7 (4107) - 0x0000|04 |. | length: 4 0x0-0x0.7 (1) - | | | serials[0:2]: 0x1-0x3.7 (3) - 0x0000| 01 | . | [0]: 1 serial (int8) 0x1-0x1.7 (1) - 0x0000| c0 19 | .. | [1]: 8217 serial (text) 0x2-0x3.7 (2) - | | | contents[0:2]: 0x4-0x100a.7 (4103) - 0x0000| 7b | { | [0]: 123 value 0x4-0x4.7 (1) - 0x0000| 41 42 42 42 42 42 42 42 42 42 42| ABBBBBBBBBB| [1]: "ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"... value 0x5-0x100a.7 (4102) - 0x0010|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42|BBBBBBBBBBBBBBBB| - * |until 0x100a.7 (end) (4102) | | -0x01e10|a0 0b |.. | payload_len: 4107 0x1e10-0x1e11.7 (2) -0x01e10| 01 | . | rowid: 1 0x1e12-0x1e12.7 (1) - | | | overflow_pages[0:2]: 0x1e13-0x3e25.7 (8211) - | | | [0]{}: overflow_page 0x1e13-0x1fff.7 (493) -0x01e10| 04 01 c0 19 7b 41 42 42 42 42 42 42 42| ....{ABBBBBBB| data: raw bits 0x1e13-0x1ffb.7 (489) -0x01e20|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42|BBBBBBBBBBBBBBBB| -* |until 0x1ffb.7 (489) | | -0x01ff0| 00 00 00 04| ....| next_page: 4 0x1ffc-0x1fff.7 (4) - | | | [1]{}: overflow_page 0x3000-0x3e25.7 (3622) -0x03000|00 00 00 00 |.... | next_page: 0 0x3000-0x3003.7 (4) -0x03000| 42 42 42 42 42 42 42 42 42 42 42 42| BBBBBBBBBBBB| data: raw bits 0x3004-0x3e25.7 (3618) -0x03010|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42|BBBBBBBBBBBBBBBB| -* |until 0x3e25.7 (3618) | | - | | | [3]{}: page 0x2000-0x2fff.7 (4096) -0x02000|0a |. | type: "index_leaf" (10) 0x2000-0x2000.7 (1) -0x02000| 00 00 | .. | start_freeblocks: 0 0x2001-0x2002.7 (2) -0x02000| 00 01 | .. | page_cells: 1 0x2003-0x2004.7 (2) -0x02000| 0f fb | .. | cell_start: 4091 0x2005-0x2006.7 (2) -0x02000| 00 | . | cell_fragments: 0 0x2007-0x2007.7 (1) - | | | cells_pointers[0:1]: 0x2008-0x2009.7 (2) -0x02000| 0f fb | .. | [0]: 4091 pointer 0x2008-0x2009.7 (2) - | | | cells[0:1]: 0x2ffb-0x2fff.7 (5) - | | | [0]{}: cell 0x2ffb-0x2fff.7 (5) -0x02ff0| 04 | . | payload_len: 4 0x2ffb-0x2ffb.7 (1) - | | | payload{}: 0x2ffc-0x2fff.7 (4) -0x02ff0| 03 | . | length: 3 0x2ffc-0x2ffc.7 (1) - | | | serials[0:2]: 0x2ffd-0x2ffe.7 (2) -0x02ff0| 01 | . | [0]: 1 serial (int8) 0x2ffd-0x2ffd.7 (1) -0x02ff0| 09 | . | [1]: 9 serial (one) 0x2ffe-0x2ffe.7 (1) - | | | contents[0:2]: 0x2fff-0x2fff.7 (1) -0x02ff0| 7b| {| [0]: 123 value 0x2fff-0x2fff.7 (1) - | | | [1]: 1 value 0x3000-NA (0) - | | | [4]{}: page 0x3000-0x3ffc.7 (4093) -0x03000|00 |. | type: 0 0x3000-0x3000.7 (1) -0x03000| 00 00 00 42 42 42 42 42 42 42 42 42 42 42 42| ...BBBBBBBBBBBB| data: raw bits 0x3001-0x3ffc.7 (4092) -0x03010|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42|BBBBBBBBBBBBBBBB| -* |until 0x3ffc.7 (4092) | | -0x00070|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|................| unknown0: raw bits 0x70-0xf4c.7 (3805) -* |until 0xf4c.7 (3805) | | -0x00ff0| 00 08 00 00 00 00| ......| unknown1: raw bits 0xffa-0xfff.7 (6) -0x01000| 00 00 00 00 00 00| ......| unknown2: raw bits 0x100a-0x1e0f.7 (3590) -0x01010|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|................| -* |until 0x1e0f.7 (3590) | | -0x02000| 00 00 00 00 00 00| ......| unknown3: raw bits 0x200a-0x2ffa.7 (4081) -0x02010|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|................| -* |until 0x2ffa.7 (4081) | | -0x03ff0| 00 00 00| ...| unknown4: raw bits 0x3ffd-0x3fff.7 (3) -{ - "overflow_test": [ - [ - 123, - "ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC" - ] - ] -} diff --git a/format/sqlite3/testdata/types.sql.fqtest b/format/sqlite3/testdata/types.sql.fqtest index 146129d1a..13009dc38 100644 --- a/format/sqlite3/testdata/types.sql.fqtest +++ b/format/sqlite3/testdata/types.sql.fqtest @@ -1,377 +1 @@ $ fq 'dv, torepr' types.sql.db - |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: types.sql.db (sqlite3) 0x0-0x2fff.7 (12288) - | | | header{}: 0x0-0x63.7 (100) -0x0000|53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00|SQLite format 3.| magic: "SQLite format 3\x00" (valid) 0x0-0xf.7 (16) -0x0010|10 00 |.. | page_size: 4096 0x10-0x11.7 (2) -0x0010| 01 | . | write_version: "legacy" (1) 0x12-0x12.7 (1) -0x0010| 01 | . | read_version: "legacy" (1) 0x13-0x13.7 (1) -0x0010| 00 | . | unused_space: 0 0x14-0x14.7 (1) -0x0010| 40 | @ | maximum_embedded_payload_fraction: 64 0x15-0x15.7 (1) -0x0010| 20 | | minimum_embedded_payload_fraction: 32 0x16-0x16.7 (1) -0x0010| 20 | | leaf_payload_fraction: 32 0x17-0x17.7 (1) -0x0010| 00 00 00 07 | .... | file_change_counter: 7 0x18-0x1b.7 (4) -0x0010| 00 00 00 03| ....| database_size_pages: 3 0x1c-0x1f.7 (4) -0x0020|00 00 00 00 |.... | page_number_freelist: 0 0x20-0x23.7 (4) -0x0020| 00 00 00 00 | .... | total_number_freelist: 0 0x24-0x27.7 (4) -0x0020| 00 00 00 01 | .... | schema_cookie: 1 0x28-0x2b.7 (4) -0x0020| 00 00 00 04| ....| schema_format_number: 4 0x2c-0x2f.7 (4) -0x0030|00 00 00 00 |.... | default_page_cache_size: 0 0x30-0x33.7 (4) -0x0030| 00 00 00 00 | .... | page_number_largest_root_btree: 0 0x34-0x37.7 (4) -0x0030| 00 00 00 01 | .... | text_encoding: "utf8" (1) 0x38-0x3b.7 (4) -0x0030| 00 00 00 00| ....| user_version: 0 0x3c-0x3f.7 (4) -0x0040|00 00 00 00 |.... | incremental_vacuum_mode: 0 0x40-0x43.7 (4) -0x0040| 00 00 00 00 | .... | application_id: 0 0x44-0x47.7 (4) -0x0040| 00 00 00 00 00 00 00 00| ........| reserved: raw bits (all zero) 0x48-0x5b.7 (20) -0x0050|00 00 00 00 00 00 00 00 00 00 00 00 |............ | -0x0050| 00 00 00 07| ....| version_valid_for: 7 0x5c-0x5f.7 (4) -0x0060|00 2e 53 60 |..S` | sqlite_version_number: 3036000 0x60-0x63.7 (4) - | | | pages[0:4]: 0x64-0x2fff.7 (12188) - | | | [0]{}: page 0x64-NA (0) - | | | type: "page0_index_fill" 0x64-NA (0) - | | | [1]{}: page 0x64-0xff9.7 (3990) -0x0060| 0d | . | type: "table_leaf" (13) 0x64-0x64.7 (1) -0x0060| 0f f8 | .. | start_freeblocks: 4088 0x65-0x66.7 (2) -0x0060| 00 02 | .. | page_cells: 2 0x67-0x68.7 (2) -0x0060| 0f 0a | .. | cell_start: 3850 0x69-0x6a.7 (2) -0x0060| 00 | . | cell_fragments: 0 0x6b-0x6b.7 (1) - | | | cells_pointers[0:2]: 0x6c-0x6f.7 (4) -0x0060| 0f 0a | .. | [0]: 3850 pointer 0x6c-0x6d.7 (2) -0x0060| 0f cd| ..| [1]: 4045 pointer 0x6e-0x6f.7 (2) - | | | cells[0:2]: 0xf0a-0xff7.7 (238) - | | | [0]{}: cell 0xf0a-0xfcc.7 (195) -0x0f00| 81 40 | .@ | payload_len: 192 0xf0a-0xf0b.7 (2) -0x0f00| 01 | . | rowid: 1 0xf0c-0xf0c.7 (1) - | | | payload{}: 0xf0d-0xfcc.7 (192) -0x0f00| 07 | . | length: 7 0xf0d-0xf0d.7 (1) - | | | serials[0:5]: 0xf0e-0xf13.7 (6) -0x0f00| 17 | . | [0]: 23 serial (text) 0xf0e-0xf0e.7 (1) -0x0f00| 17| .| [1]: 23 serial (text) 0xf0f-0xf0f.7 (1) -0x0f10|17 |. | [2]: 23 serial (text) 0xf10-0xf10.7 (1) -0x0f10| 01 | . | [3]: 1 serial (int8) 0xf11-0xf11.7 (1) -0x0f10| 82 5f | ._ | [4]: 351 serial (text) 0xf12-0xf13.7 (2) - | | | contents[0:5]: 0xf14-0xfcc.7 (185) -0x0f10| 74 61 62 6c 65 | table | [0]: "table" value 0xf14-0xf18.7 (5) -0x0f10| 74 79 70 65 73 | types | [1]: "types" value 0xf19-0xf1d.7 (5) -0x0f10| 74 79| ty| [2]: "types" value 0xf1e-0xf22.7 (5) -0x0f20|70 65 73 |pes | -0x0f20| 02 | . | [3]: 2 value 0xf23-0xf23.7 (1) -0x0f20| 43 52 45 41 54 45 20 54 41 42 4c 45| CREATE TABLE| [4]: "CREATE TABLE types (\n cint INT PRIMARY KEY,\n "... value 0xf24-0xfcc.7 (169) -0x0f30|20 74 79 70 65 73 20 28 0a 20 20 20 20 63 69 6e| types (. cin| -* |until 0xfcc.7 (169) | | - | | | [1]{}: cell 0xfcd-0xff7.7 (43) -0x0fc0| 29 | ) | payload_len: 41 0xfcd-0xfcd.7 (1) -0x0fc0| 02 | . | rowid: 2 0xfce-0xfce.7 (1) - | | | payload{}: 0xfcf-0xff7.7 (41) -0x0fc0| 06| .| length: 6 0xfcf-0xfcf.7 (1) - | | | serials[0:5]: 0xfd0-0xfd4.7 (5) -0x0fd0|17 |. | [0]: 23 serial (text) 0xfd0-0xfd0.7 (1) -0x0fd0| 3d | = | [1]: 61 serial (text) 0xfd1-0xfd1.7 (1) -0x0fd0| 17 | . | [2]: 23 serial (text) 0xfd2-0xfd2.7 (1) -0x0fd0| 01 | . | [3]: 1 serial (int8) 0xfd3-0xfd3.7 (1) -0x0fd0| 00 | . | [4]: 0 serial (null) 0xfd4-0xfd4.7 (1) - | | | contents[0:5]: 0xfd5-0xff7.7 (35) -0x0fd0| 69 6e 64 65 78 | index | [0]: "index" value 0xfd5-0xfd9.7 (5) -0x0fd0| 73 71 6c 69 74 65| sqlite| [1]: "sqlite_autoindex_types_1" value 0xfda-0xff1.7 (24) -0x0fe0|5f 61 75 74 6f 69 6e 64 65 78 5f 74 79 70 65 73|_autoindex_types| -0x0ff0|5f 31 |_1 | -0x0ff0| 74 79 70 65 73 | types | [2]: "types" value 0xff2-0xff6.7 (5) -0x0ff0| 03 | . | [3]: 3 value 0xff7-0xff7.7 (1) - | | | [4]: null value 0xff8-NA (0) - | | | freeblocks[0:1]: 0xff8-0xff9.7 (2) - | | | [0]{}: freeblock 0xff8-0xff9.7 (2) -0x0ff0| 00 00 | .. | next_offset: 0 0xff8-0xff9.7 (2) - | | | [2]{}: page 0x1000-0x1fff.7 (4096) -0x1000|0d |. | type: "table_leaf" (13) 0x1000-0x1000.7 (1) -0x1000| 00 00 | .. | start_freeblocks: 0 0x1001-0x1002.7 (2) -0x1000| 00 06 | .. | page_cells: 6 0x1003-0x1004.7 (2) -0x1000| 0e a7 | .. | cell_start: 3751 0x1005-0x1006.7 (2) -0x1000| 00 | . | cell_fragments: 0 0x1007-0x1007.7 (1) - | | | cells_pointers[0:6]: 0x1008-0x1013.7 (12) -0x1000| 0f cd | .. | [0]: 4045 pointer 0x1008-0x1009.7 (2) -0x1000| 0f 9a | .. | [1]: 3994 pointer 0x100a-0x100b.7 (2) -0x1000| 0f 63 | .c | [2]: 3939 pointer 0x100c-0x100d.7 (2) -0x1000| 0f 2d| .-| [3]: 3885 pointer 0x100e-0x100f.7 (2) -0x1010|0e ea |.. | [4]: 3818 pointer 0x1010-0x1011.7 (2) -0x1010| 0e a7 | .. | [5]: 3751 pointer 0x1012-0x1013.7 (2) - | | | cells[0:6]: 0x1ea7-0x1fff.7 (345) - | | | [0]{}: cell 0x1fcd-0x1fff.7 (51) -0x1fc0| 31 | 1 | payload_len: 49 0x1fcd-0x1fcd.7 (1) -0x1fc0| 01 | . | rowid: 1 0x1fce-0x1fce.7 (1) - | | | payload{}: 0x1fcf-0x1fff.7 (49) -0x1fc0| 08| .| length: 8 0x1fcf-0x1fcf.7 (1) - | | | serials[0:7]: 0x1fd0-0x1fd6.7 (7) -0x1fd0|08 |. | [0]: 8 serial (zero) 0x1fd0-0x1fd0.7 (1) -0x1fd0| 08 | . | [1]: 8 serial (zero) 0x1fd1-0x1fd1.7 (1) -0x1fd0| 15 | . | [2]: 21 serial (text) 0x1fd2-0x1fd2.7 (1) -0x1fd0| 17 | . | [3]: 23 serial (text) 0x1fd3-0x1fd3.7 (1) -0x1fd0| 07 | . | [4]: 7 serial (float64) 0x1fd4-0x1fd4.7 (1) -0x1fd0| 17 | . | [5]: 23 serial (text) 0x1fd5-0x1fd5.7 (1) -0x1fd0| 33 | 3 | [6]: 51 serial (text) 0x1fd6-0x1fd6.7 (1) - | | | contents[0:7]: 0x1fd7-0x1fff.7 (41) - | | | [0]: 0 value 0x1fd7-NA (0) - | | | [1]: 0 value 0x1fd7-NA (0) -0x1fd0| 76 61 72 31 | var1 | [2]: "var1" value 0x1fd7-0x1fda.7 (4) -0x1fd0| 74 65 78 74 31| text1| [3]: "text1" value 0x1fdb-0x1fdf.7 (5) -0x1fe0|3f e0 00 00 00 00 00 00 |?....... | [4]: 0.5 value 0x1fe0-0x1fe7.7 (8) -0x1fe0| 62 6c 6f 62 31 | blob1 | [5]: "blob1" value 0x1fe8-0x1fec.7 (5) -0x1fe0| 32 30 32| 202| [6]: "2022-03-10 10:00:00" value 0x1fed-0x1fff.7 (19) -0x1ff0|32 2d 30 33 2d 31 30 20 31 30 3a 30 30 3a 30 30|2-03-10 10:00:00| - | | | [1]{}: cell 0x1f9a-0x1fcc.7 (51) -0x1f90| 31 | 1 | payload_len: 49 0x1f9a-0x1f9a.7 (1) -0x1f90| 02 | . | rowid: 2 0x1f9b-0x1f9b.7 (1) - | | | payload{}: 0x1f9c-0x1fcc.7 (49) -0x1f90| 08 | . | length: 8 0x1f9c-0x1f9c.7 (1) - | | | serials[0:7]: 0x1f9d-0x1fa3.7 (7) -0x1f90| 09 | . | [0]: 9 serial (one) 0x1f9d-0x1f9d.7 (1) -0x1f90| 09 | . | [1]: 9 serial (one) 0x1f9e-0x1f9e.7 (1) -0x1f90| 15| .| [2]: 21 serial (text) 0x1f9f-0x1f9f.7 (1) -0x1fa0|17 |. | [3]: 23 serial (text) 0x1fa0-0x1fa0.7 (1) -0x1fa0| 07 | . | [4]: 7 serial (float64) 0x1fa1-0x1fa1.7 (1) -0x1fa0| 17 | . | [5]: 23 serial (text) 0x1fa2-0x1fa2.7 (1) -0x1fa0| 33 | 3 | [6]: 51 serial (text) 0x1fa3-0x1fa3.7 (1) - | | | contents[0:7]: 0x1fa4-0x1fcc.7 (41) - | | | [0]: 1 value 0x1fa4-NA (0) - | | | [1]: 1 value 0x1fa4-NA (0) -0x1fa0| 76 61 72 32 | var2 | [2]: "var2" value 0x1fa4-0x1fa7.7 (4) -0x1fa0| 74 65 73 74 32 | test2 | [3]: "test2" value 0x1fa8-0x1fac.7 (5) -0x1fa0| 3f f8 00| ?..| [4]: 1.5 value 0x1fad-0x1fb4.7 (8) -0x1fb0|00 00 00 00 00 |..... | -0x1fb0| 62 6c 6f 62 32 | blob2 | [5]: "blob2" value 0x1fb5-0x1fb9.7 (5) -0x1fb0| 32 30 32 32 2d 30| 2022-0| [6]: "2022-03-10 10:00:01" value 0x1fba-0x1fcc.7 (19) -0x1fc0|33 2d 31 30 20 31 30 3a 30 30 3a 30 31 |3-10 10:00:01 | - | | | [2]{}: cell 0x1f63-0x1f99.7 (55) -0x1f60| 35 | 5 | payload_len: 53 0x1f63-0x1f63.7 (1) -0x1f60| 03 | . | rowid: 3 0x1f64-0x1f64.7 (1) - | | | payload{}: 0x1f65-0x1f99.7 (53) -0x1f60| 08 | . | length: 8 0x1f65-0x1f65.7 (1) - | | | serials[0:7]: 0x1f66-0x1f6c.7 (7) -0x1f60| 02 | . | [0]: 2 serial (int16) 0x1f66-0x1f66.7 (1) -0x1f60| 02 | . | [1]: 2 serial (int16) 0x1f67-0x1f67.7 (1) -0x1f60| 15 | . | [2]: 21 serial (text) 0x1f68-0x1f68.7 (1) -0x1f60| 17 | . | [3]: 23 serial (text) 0x1f69-0x1f69.7 (1) -0x1f60| 07 | . | [4]: 7 serial (float64) 0x1f6a-0x1f6a.7 (1) -0x1f60| 17 | . | [5]: 23 serial (text) 0x1f6b-0x1f6b.7 (1) -0x1f60| 33 | 3 | [6]: 51 serial (text) 0x1f6c-0x1f6c.7 (1) - | | | contents[0:7]: 0x1f6d-0x1f99.7 (45) -0x1f60| 00 80 | .. | [0]: 128 value 0x1f6d-0x1f6e.7 (2) -0x1f60| 00| .| [1]: 128 value 0x1f6f-0x1f70.7 (2) -0x1f70|80 |. | -0x1f70| 76 61 72 33 | var3 | [2]: "var3" value 0x1f71-0x1f74.7 (4) -0x1f70| 74 65 73 74 33 | test3 | [3]: "test3" value 0x1f75-0x1f79.7 (5) -0x1f70| 40 60 10 00 00 00| @`....| [4]: 128.5 value 0x1f7a-0x1f81.7 (8) -0x1f80|00 00 |.. | -0x1f80| 62 6c 6f 62 33 | blob3 | [5]: "blob3" value 0x1f82-0x1f86.7 (5) -0x1f80| 32 30 32 32 2d 30 33 2d 31| 2022-03-1| [6]: "2022-03-10 10:00:02" value 0x1f87-0x1f99.7 (19) -0x1f90|30 20 31 30 3a 30 30 3a 30 32 |0 10:00:02 | - | | | [3]{}: cell 0x1f2d-0x1f62.7 (54) -0x1f20| 34 | 4 | payload_len: 52 0x1f2d-0x1f2d.7 (1) -0x1f20| 04 | . | rowid: 4 0x1f2e-0x1f2e.7 (1) - | | | payload{}: 0x1f2f-0x1f62.7 (52) -0x1f20| 08| .| length: 8 0x1f2f-0x1f2f.7 (1) - | | | serials[0:7]: 0x1f30-0x1f36.7 (7) -0x1f30|01 |. | [0]: 1 serial (int8) 0x1f30-0x1f30.7 (1) -0x1f30| 02 | . | [1]: 2 serial (int16) 0x1f31-0x1f31.7 (1) -0x1f30| 15 | . | [2]: 21 serial (text) 0x1f32-0x1f32.7 (1) -0x1f30| 17 | . | [3]: 23 serial (text) 0x1f33-0x1f33.7 (1) -0x1f30| 07 | . | [4]: 7 serial (float64) 0x1f34-0x1f34.7 (1) -0x1f30| 17 | . | [5]: 23 serial (text) 0x1f35-0x1f35.7 (1) -0x1f30| 33 | 3 | [6]: 51 serial (text) 0x1f36-0x1f36.7 (1) - | | | contents[0:7]: 0x1f37-0x1f62.7 (44) -0x1f30| 80 | . | [0]: -128 value 0x1f37-0x1f37.7 (1) -0x1f30| 00 80 | .. | [1]: 128 value 0x1f38-0x1f39.7 (2) -0x1f30| 76 61 72 33 | var3 | [2]: "var3" value 0x1f3a-0x1f3d.7 (4) -0x1f30| 74 65| te| [3]: "test3" value 0x1f3e-0x1f42.7 (5) -0x1f40|73 74 33 |st3 | -0x1f40| c0 60 10 00 00 00 00 00 | .`...... | [4]: -128.5 value 0x1f43-0x1f4a.7 (8) -0x1f40| 62 6c 6f 62 33| blob3| [5]: "blob3" value 0x1f4b-0x1f4f.7 (5) -0x1f50|32 30 32 32 2d 30 33 2d 31 30 20 31 30 3a 30 30|2022-03-10 10:00| [6]: "2022-03-10 10:00:03" value 0x1f50-0x1f62.7 (19) -0x1f60|3a 30 33 |:03 | - | | | [4]{}: cell 0x1eea-0x1f2c.7 (67) -0x1ee0| 41 | A | payload_len: 65 0x1eea-0x1eea.7 (1) -0x1ee0| 05 | . | rowid: 5 0x1eeb-0x1eeb.7 (1) - | | | payload{}: 0x1eec-0x1f2c.7 (65) -0x1ee0| 08 | . | length: 8 0x1eec-0x1eec.7 (1) - | | | serials[0:7]: 0x1eed-0x1ef3.7 (7) -0x1ee0| 06 | . | [0]: 6 serial (int64) 0x1eed-0x1eed.7 (1) -0x1ee0| 06 | . | [1]: 6 serial (int64) 0x1eee-0x1eee.7 (1) -0x1ee0| 15| .| [2]: 21 serial (text) 0x1eef-0x1eef.7 (1) -0x1ef0|17 |. | [3]: 23 serial (text) 0x1ef0-0x1ef0.7 (1) -0x1ef0| 07 | . | [4]: 7 serial (float64) 0x1ef1-0x1ef1.7 (1) -0x1ef0| 17 | . | [5]: 23 serial (text) 0x1ef2-0x1ef2.7 (1) -0x1ef0| 33 | 3 | [6]: 51 serial (text) 0x1ef3-0x1ef3.7 (1) - | | | contents[0:7]: 0x1ef4-0x1f2c.7 (57) -0x1ef0| 7f ff ff ff ff ff ff ff | ........ | [0]: 9223372036854775807 value 0x1ef4-0x1efb.7 (8) -0x1ef0| 7f ff ff ff| ....| [1]: 9223372036854775807 value 0x1efc-0x1f03.7 (8) -0x1f00|ff ff ff ff |.... | -0x1f00| 76 61 72 34 | var4 | [2]: "var4" value 0x1f04-0x1f07.7 (4) -0x1f00| 74 65 73 74 34 | test4 | [3]: "test4" value 0x1f08-0x1f0c.7 (5) -0x1f00| 43 e0 00| C..| [4]: 9.223372036854776e+18 value 0x1f0d-0x1f14.7 (8) -0x1f10|00 00 00 00 00 |..... | -0x1f10| 62 6c 6f 62 34 | blob4 | [5]: "blob4" value 0x1f15-0x1f19.7 (5) -0x1f10| 32 30 32 32 2d 30| 2022-0| [6]: "2022-03-10 10:00:04" value 0x1f1a-0x1f2c.7 (19) -0x1f20|33 2d 31 30 20 31 30 3a 30 30 3a 30 34 |3-10 10:00:04 | - | | | [5]{}: cell 0x1ea7-0x1ee9.7 (67) -0x1ea0| 41 | A | payload_len: 65 0x1ea7-0x1ea7.7 (1) -0x1ea0| 06 | . | rowid: 6 0x1ea8-0x1ea8.7 (1) - | | | payload{}: 0x1ea9-0x1ee9.7 (65) -0x1ea0| 08 | . | length: 8 0x1ea9-0x1ea9.7 (1) - | | | serials[0:7]: 0x1eaa-0x1eb0.7 (7) -0x1ea0| 06 | . | [0]: 6 serial (int64) 0x1eaa-0x1eaa.7 (1) -0x1ea0| 06 | . | [1]: 6 serial (int64) 0x1eab-0x1eab.7 (1) -0x1ea0| 15 | . | [2]: 21 serial (text) 0x1eac-0x1eac.7 (1) -0x1ea0| 17 | . | [3]: 23 serial (text) 0x1ead-0x1ead.7 (1) -0x1ea0| 07 | . | [4]: 7 serial (float64) 0x1eae-0x1eae.7 (1) -0x1ea0| 17| .| [5]: 23 serial (text) 0x1eaf-0x1eaf.7 (1) -0x1eb0|33 |3 | [6]: 51 serial (text) 0x1eb0-0x1eb0.7 (1) - | | | contents[0:7]: 0x1eb1-0x1ee9.7 (57) -0x1eb0| 80 00 00 00 00 00 00 00 | ........ | [0]: -9223372036854775808 value 0x1eb1-0x1eb8.7 (8) -0x1eb0| 80 00 00 00 00 00 00| .......| [1]: -9223372036854775808 value 0x1eb9-0x1ec0.7 (8) -0x1ec0|00 |. | -0x1ec0| 76 61 72 35 | var5 | [2]: "var5" value 0x1ec1-0x1ec4.7 (4) -0x1ec0| 74 65 73 74 35 | test5 | [3]: "test5" value 0x1ec5-0x1ec9.7 (5) -0x1ec0| c3 e0 00 00 00 00| ......| [4]: -9.223372036854776e+18 value 0x1eca-0x1ed1.7 (8) -0x1ed0|00 00 |.. | -0x1ed0| 62 6c 6f 62 35 | blob5 | [5]: "blob5" value 0x1ed2-0x1ed6.7 (5) -0x1ed0| 32 30 32 32 2d 30 33 2d 31| 2022-03-1| [6]: "2022-03-10 10:00:05" value 0x1ed7-0x1ee9.7 (19) -0x1ee0|30 20 31 30 3a 30 30 3a 30 35 |0 10:00:05 | - | | | [3]{}: page 0x2000-0x2fff.7 (4096) -0x2000|0a |. | type: "index_leaf" (10) 0x2000-0x2000.7 (1) -0x2000| 00 00 | .. | start_freeblocks: 0 0x2001-0x2002.7 (2) -0x2000| 00 06 | .. | page_cells: 6 0x2003-0x2004.7 (2) -0x2000| 0f d0 | .. | cell_start: 4048 0x2005-0x2006.7 (2) -0x2000| 00 | . | cell_fragments: 0 0x2007-0x2007.7 (1) - | | | cells_pointers[0:6]: 0x2008-0x2013.7 (12) -0x2000| 0f d0 | .. | [0]: 4048 pointer 0x2008-0x2009.7 (2) -0x2000| 0f ea | .. | [1]: 4074 pointer 0x200a-0x200b.7 (2) -0x2000| 0f fc | .. | [2]: 4092 pointer 0x200c-0x200d.7 (2) -0x2000| 0f f7| ..| [3]: 4087 pointer 0x200e-0x200f.7 (2) -0x2010|0f f0 |.. | [4]: 4080 pointer 0x2010-0x2011.7 (2) -0x2010| 0f dd | .. | [5]: 4061 pointer 0x2012-0x2013.7 (2) - | | | cells[0:6]: 0x2fd0-0x2fff.7 (48) - | | | [0]{}: cell 0x2fd0-0x2fdc.7 (13) -0x2fd0|0c |. | payload_len: 12 0x2fd0-0x2fd0.7 (1) - | | | payload{}: 0x2fd1-0x2fdc.7 (12) -0x2fd0| 03 | . | length: 3 0x2fd1-0x2fd1.7 (1) - | | | serials[0:2]: 0x2fd2-0x2fd3.7 (2) -0x2fd0| 06 | . | [0]: 6 serial (int64) 0x2fd2-0x2fd2.7 (1) -0x2fd0| 01 | . | [1]: 1 serial (int8) 0x2fd3-0x2fd3.7 (1) - | | | contents[0:2]: 0x2fd4-0x2fdc.7 (9) -0x2fd0| 80 00 00 00 00 00 00 00 | ........ | [0]: -9223372036854775808 value 0x2fd4-0x2fdb.7 (8) -0x2fd0| 06 | . | [1]: 6 value 0x2fdc-0x2fdc.7 (1) - | | | [1]{}: cell 0x2fea-0x2fef.7 (6) -0x2fe0| 05 | . | payload_len: 5 0x2fea-0x2fea.7 (1) - | | | payload{}: 0x2feb-0x2fef.7 (5) -0x2fe0| 03 | . | length: 3 0x2feb-0x2feb.7 (1) - | | | serials[0:2]: 0x2fec-0x2fed.7 (2) -0x2fe0| 01 | . | [0]: 1 serial (int8) 0x2fec-0x2fec.7 (1) -0x2fe0| 01 | . | [1]: 1 serial (int8) 0x2fed-0x2fed.7 (1) - | | | contents[0:2]: 0x2fee-0x2fef.7 (2) -0x2fe0| 80 | . | [0]: -128 value 0x2fee-0x2fee.7 (1) -0x2fe0| 04| .| [1]: 4 value 0x2fef-0x2fef.7 (1) - | | | [2]{}: cell 0x2ffc-0x2fff.7 (4) -0x2ff0| 03 | . | payload_len: 3 0x2ffc-0x2ffc.7 (1) - | | | payload{}: 0x2ffd-0x2fff.7 (3) -0x2ff0| 03 | . | length: 3 0x2ffd-0x2ffd.7 (1) - | | | serials[0:2]: 0x2ffe-0x2fff.7 (2) -0x2ff0| 08 | . | [0]: 8 serial (zero) 0x2ffe-0x2ffe.7 (1) -0x2ff0| 09| .| [1]: 9 serial (one) 0x2fff-0x2fff.7 (1) - | | | contents[0:2]: 0x3000-NA (0) - | | | [0]: 0 value 0x3000-NA (0) - | | | [1]: 1 value 0x3000-NA (0) - | | | [3]{}: cell 0x2ff7-0x2ffb.7 (5) -0x2ff0| 04 | . | payload_len: 4 0x2ff7-0x2ff7.7 (1) - | | | payload{}: 0x2ff8-0x2ffb.7 (4) -0x2ff0| 03 | . | length: 3 0x2ff8-0x2ff8.7 (1) - | | | serials[0:2]: 0x2ff9-0x2ffa.7 (2) -0x2ff0| 09 | . | [0]: 9 serial (one) 0x2ff9-0x2ff9.7 (1) -0x2ff0| 01 | . | [1]: 1 serial (int8) 0x2ffa-0x2ffa.7 (1) - | | | contents[0:2]: 0x2ffb-0x2ffb.7 (1) - | | | [0]: 1 value 0x2ffb-NA (0) -0x2ff0| 02 | . | [1]: 2 value 0x2ffb-0x2ffb.7 (1) - | | | [4]{}: cell 0x2ff0-0x2ff6.7 (7) -0x2ff0|06 |. | payload_len: 6 0x2ff0-0x2ff0.7 (1) - | | | payload{}: 0x2ff1-0x2ff6.7 (6) -0x2ff0| 03 | . | length: 3 0x2ff1-0x2ff1.7 (1) - | | | serials[0:2]: 0x2ff2-0x2ff3.7 (2) -0x2ff0| 02 | . | [0]: 2 serial (int16) 0x2ff2-0x2ff2.7 (1) -0x2ff0| 01 | . | [1]: 1 serial (int8) 0x2ff3-0x2ff3.7 (1) - | | | contents[0:2]: 0x2ff4-0x2ff6.7 (3) -0x2ff0| 00 80 | .. | [0]: 128 value 0x2ff4-0x2ff5.7 (2) -0x2ff0| 03 | . | [1]: 3 value 0x2ff6-0x2ff6.7 (1) - | | | [5]{}: cell 0x2fdd-0x2fe9.7 (13) -0x2fd0| 0c | . | payload_len: 12 0x2fdd-0x2fdd.7 (1) - | | | payload{}: 0x2fde-0x2fe9.7 (12) -0x2fd0| 03 | . | length: 3 0x2fde-0x2fde.7 (1) - | | | serials[0:2]: 0x2fdf-0x2fe0.7 (2) -0x2fd0| 06| .| [0]: 6 serial (int64) 0x2fdf-0x2fdf.7 (1) -0x2fe0|01 |. | [1]: 1 serial (int8) 0x2fe0-0x2fe0.7 (1) - | | | contents[0:2]: 0x2fe1-0x2fe9.7 (9) -0x2fe0| 7f ff ff ff ff ff ff ff | ........ | [0]: 9223372036854775807 value 0x2fe1-0x2fe8.7 (8) -0x2fe0| 05 | . | [1]: 5 value 0x2fe9-0x2fe9.7 (1) -0x0070|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|................| unknown0: raw bits 0x70-0xf09.7 (3738) -* |until 0xf09.7 (3738) | | -0x0ff0| 00 08 00 00 00 00| ......| unknown1: raw bits 0xffa-0xfff.7 (6) -0x1010| 00 00 00 00 00 00 00 00 00 00 00 00| ............| unknown2: raw bits 0x1014-0x1ea6.7 (3731) -0x1020|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|................| -* |until 0x1ea6.7 (3731) | | -0x2010| 00 00 00 00 00 00 00 00 00 00 00 00| ............| unknown3: raw bits 0x2014-0x2fcf.7 (4028) -0x2020|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|................| -* |until 0x2fcf.7 (4028) | | -{ - "types": [ - [ - 0, - 0, - "var1", - "text1", - 0.5, - "blob1", - "2022-03-10 10:00:00" - ], - [ - 1, - 1, - "var2", - "test2", - 1.5, - "blob2", - "2022-03-10 10:00:01" - ], - [ - 128, - 128, - "var3", - "test3", - 128.5, - "blob3", - "2022-03-10 10:00:02" - ], - [ - -128, - 128, - "var3", - "test3", - -128.5, - "blob3", - "2022-03-10 10:00:03" - ], - [ - 9223372036854775807, - 9223372036854775807, - "var4", - "test4", - 9223372036854776000, - "blob4", - "2022-03-10 10:00:04" - ], - [ - -9223372036854775808, - -9223372036854775808, - "var5", - "test5", - -9223372036854776000, - "blob5", - "2022-03-10 10:00:05" - ] - ] -} diff --git a/format/sqlite3/testdata/unused_pages.sql.fqtest b/format/sqlite3/testdata/unused_pages.sql.fqtest index 2a2ca570a..4ad71c68f 100644 --- a/format/sqlite3/testdata/unused_pages.sql.fqtest +++ b/format/sqlite3/testdata/unused_pages.sql.fqtest @@ -1,234 +1 @@ $ fq 'dv, torepr' unused_pages.sql.db - |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: unused_pages.sql.db (sqlite3) 0x0-0x6fff.7 (28672) - | | | header{}: 0x0-0x63.7 (100) -0x00000|53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00|SQLite format 3.| magic: "SQLite format 3\x00" (valid) 0x0-0xf.7 (16) -0x00010|10 00 |.. | page_size: 4096 0x10-0x11.7 (2) -0x00010| 01 | . | write_version: "legacy" (1) 0x12-0x12.7 (1) -0x00010| 01 | . | read_version: "legacy" (1) 0x13-0x13.7 (1) -0x00010| 00 | . | unused_space: 0 0x14-0x14.7 (1) -0x00010| 40 | @ | maximum_embedded_payload_fraction: 64 0x15-0x15.7 (1) -0x00010| 20 | | minimum_embedded_payload_fraction: 32 0x16-0x16.7 (1) -0x00010| 20 | | leaf_payload_fraction: 32 0x17-0x17.7 (1) -0x00010| 00 00 00 07 | .... | file_change_counter: 7 0x18-0x1b.7 (4) -0x00010| 00 00 00 07| ....| database_size_pages: 7 0x1c-0x1f.7 (4) -0x00020|00 00 00 04 |.... | page_number_freelist: 4 0x20-0x23.7 (4) -0x00020| 00 00 00 02 | .... | total_number_freelist: 2 0x24-0x27.7 (4) -0x00020| 00 00 00 01 | .... | schema_cookie: 1 0x28-0x2b.7 (4) -0x00020| 00 00 00 04| ....| schema_format_number: 4 0x2c-0x2f.7 (4) -0x00030|00 00 00 00 |.... | default_page_cache_size: 0 0x30-0x33.7 (4) -0x00030| 00 00 00 00 | .... | page_number_largest_root_btree: 0 0x34-0x37.7 (4) -0x00030| 00 00 00 01 | .... | text_encoding: "utf8" (1) 0x38-0x3b.7 (4) -0x00030| 00 00 00 00| ....| user_version: 0 0x3c-0x3f.7 (4) -0x00040|00 00 00 00 |.... | incremental_vacuum_mode: 0 0x40-0x43.7 (4) -0x00040| 00 00 00 00 | .... | application_id: 0 0x44-0x47.7 (4) -0x00040| 00 00 00 00 00 00 00 00| ........| reserved: raw bits (all zero) 0x48-0x5b.7 (20) -0x00050|00 00 00 00 00 00 00 00 00 00 00 00 |............ | -0x00050| 00 00 00 07| ....| version_valid_for: 7 0x5c-0x5f.7 (4) -0x00060|00 2e 53 60 |..S` | sqlite_version_number: 3036000 0x60-0x63.7 (4) - | | | pages[0:8]: 0x64-0x6ffc.7 (28569) - | | | [0]{}: page 0x64-NA (0) - | | | type: "page0_index_fill" 0x64-NA (0) - | | | [1]{}: page 0x64-0xff9.7 (3990) -0x00060| 0d | . | type: "table_leaf" (13) 0x64-0x64.7 (1) -0x00060| 0f f8 | .. | start_freeblocks: 4088 0x65-0x66.7 (2) -0x00060| 00 02 | .. | page_cells: 2 0x67-0x68.7 (2) -0x00060| 0f 7f | .. | cell_start: 3967 0x69-0x6a.7 (2) -0x00060| 00 | . | cell_fragments: 0 0x6b-0x6b.7 (1) - | | | cells_pointers[0:2]: 0x6c-0x6f.7 (4) -0x00060| 0f 7f | .. | [0]: 3967 pointer 0x6c-0x6d.7 (2) -0x00060| 0f d1| ..| [1]: 4049 pointer 0x6e-0x6f.7 (2) - | | | cells[0:2]: 0xf7f-0xff7.7 (121) - | | | [0]{}: cell 0xf7f-0xfd0.7 (82) -0x00f70| 50| P| payload_len: 80 0xf7f-0xf7f.7 (1) -0x00f80|01 |. | rowid: 1 0xf80-0xf80.7 (1) - | | | payload{}: 0xf81-0xfd0.7 (80) -0x00f80| 07 | . | length: 7 0xf81-0xf81.7 (1) - | | | serials[0:5]: 0xf82-0xf87.7 (6) -0x00f80| 17 | . | [0]: 23 serial (text) 0xf82-0xf82.7 (1) -0x00f80| 13 | . | [1]: 19 serial (text) 0xf83-0xf83.7 (1) -0x00f80| 13 | . | [2]: 19 serial (text) 0xf84-0xf84.7 (1) -0x00f80| 01 | . | [3]: 1 serial (int8) 0xf85-0xf85.7 (1) -0x00f80| 81 07 | .. | [4]: 135 serial (text) 0xf86-0xf87.7 (2) - | | | contents[0:5]: 0xf88-0xfd0.7 (73) -0x00f80| 74 61 62 6c 65 | table | [0]: "table" value 0xf88-0xf8c.7 (5) -0x00f80| 61 61 61| aaa| [1]: "aaa" value 0xf8d-0xf8f.7 (3) -0x00f90|61 61 61 |aaa | [2]: "aaa" value 0xf90-0xf92.7 (3) -0x00f90| 02 | . | [3]: 2 value 0xf93-0xf93.7 (1) -0x00f90| 43 52 45 41 54 45 20 54 41 42 4c 45| CREATE TABLE| [4]: "CREATE TABLE aaa (\n cint int primary key,\n c"... value 0xf94-0xfd0.7 (61) -0x00fa0|20 61 61 61 20 28 0a 20 20 20 20 63 69 6e 74 20| aaa (. cint | -* |until 0xfd0.7 (61) | | - | | | [1]{}: cell 0xfd1-0xff7.7 (39) -0x00fd0| 25 | % | payload_len: 37 0xfd1-0xfd1.7 (1) -0x00fd0| 02 | . | rowid: 2 0xfd2-0xfd2.7 (1) - | | | payload{}: 0xfd3-0xff7.7 (37) -0x00fd0| 06 | . | length: 6 0xfd3-0xfd3.7 (1) - | | | serials[0:5]: 0xfd4-0xfd8.7 (5) -0x00fd0| 17 | . | [0]: 23 serial (text) 0xfd4-0xfd4.7 (1) -0x00fd0| 39 | 9 | [1]: 57 serial (text) 0xfd5-0xfd5.7 (1) -0x00fd0| 13 | . | [2]: 19 serial (text) 0xfd6-0xfd6.7 (1) -0x00fd0| 01 | . | [3]: 1 serial (int8) 0xfd7-0xfd7.7 (1) -0x00fd0| 00 | . | [4]: 0 serial (null) 0xfd8-0xfd8.7 (1) - | | | contents[0:5]: 0xfd9-0xff7.7 (31) -0x00fd0| 69 6e 64 65 78 | index | [0]: "index" value 0xfd9-0xfdd.7 (5) -0x00fd0| 73 71| sq| [1]: "sqlite_autoindex_aaa_1" value 0xfde-0xff3.7 (22) -0x00fe0|6c 69 74 65 5f 61 75 74 6f 69 6e 64 65 78 5f 61|lite_autoindex_a| -0x00ff0|61 61 5f 31 |aa_1 | -0x00ff0| 61 61 61 | aaa | [2]: "aaa" value 0xff4-0xff6.7 (3) -0x00ff0| 03 | . | [3]: 3 value 0xff7-0xff7.7 (1) - | | | [4]: null value 0xff8-NA (0) - | | | freeblocks[0:1]: 0xff8-0xff9.7 (2) - | | | [0]{}: freeblock 0xff8-0xff9.7 (2) -0x00ff0| 00 00 | .. | next_offset: 0 0xff8-0xff9.7 (2) - | | | [2]{}: page 0x1000-0x6e27.7 (24104) -0x01000|0d |. | type: "table_leaf" (13) 0x1000-0x1000.7 (1) -0x01000| 0a 30 | .0 | start_freeblocks: 2608 0x1001-0x1002.7 (2) -0x01000| 00 02 | .. | page_cells: 2 0x1003-0x1004.7 (2) -0x01000| 08 40 | .@ | cell_start: 2112 0x1005-0x1006.7 (2) -0x01000| 00 | . | cell_fragments: 0 0x1007-0x1007.7 (1) - | | | cells_pointers[0:2]: 0x1008-0x100b.7 (4) -0x01000| 0c 20 | . | [0]: 3104 pointer 0x1008-0x1009.7 (2) -0x01000| 08 40 | .@ | [1]: 2112 pointer 0x100a-0x100b.7 (2) - | | | cells[0:2]: 0x1840-0x6e27.7 (21992) - | | | [0]{}: cell 0x1c20-0x4e27.7 (12808) - | | | payload{}: 0x0-0x100c.7 (4109) - 0x0000|04 |. | length: 4 0x0-0x0.7 (1) - | | | serials[0:2]: 0x1-0x3.7 (3) - 0x0000| 01 | . | [0]: 1 serial (int8) 0x1-0x1.7 (1) - 0x0000| c0 1d | .. | [1]: 8221 serial (text) 0x2-0x3.7 (2) - | | | contents[0:2]: 0x4-0x100c.7 (4105) - 0x0000| 02 | . | [0]: 2 value 0x4-0x4.7 (1) - 0x0000| 32 41 42 42 42 42 42 42 42 42 42| 2ABBBBBBBBB| [1]: "2ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"... value 0x5-0x100c.7 (4104) - 0x0010|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42|BBBBBBBBBBBBBBBB| - * |until 0x100c.7 (end) (4104) | | -0x01c20|a0 0d |.. | payload_len: 4109 0x1c20-0x1c21.7 (2) -0x01c20| 02 | . | rowid: 2 0x1c22-0x1c22.7 (1) - | | | overflow_pages[0:2]: 0x1c23-0x4e27.7 (12805) - | | | [0]{}: overflow_page 0x1c23-0x1e0f.7 (493) -0x01c20| 04 01 c0 1d 02 32 41 42 42 42 42 42 42| .....2ABBBBBB| data: raw bits 0x1c23-0x1e0b.7 (489) -0x01c30|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42|BBBBBBBBBBBBBBBB| -* |until 0x1e0b.7 (489) | | -0x01e00| 00 00 00 05| ....| next_page: 5 0x1e0c-0x1e0f.7 (4) - | | | [1]{}: overflow_page 0x4000-0x4e27.7 (3624) -0x04000|00 00 00 00 |.... | next_page: 0 0x4000-0x4003.7 (4) -0x04000| 42 42 42 42 42 42 42 42 42 42 42 42| BBBBBBBBBBBB| data: raw bits 0x4004-0x4e27.7 (3620) -0x04010|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42|BBBBBBBBBBBBBBBB| -* |until 0x4e27.7 (3620) | | - | | | [1]{}: cell 0x1840-0x6e27.7 (21992) - | | | payload{}: 0x0-0x100c.7 (4109) - 0x0000|04 |. | length: 4 0x0-0x0.7 (1) - | | | serials[0:2]: 0x1-0x3.7 (3) - 0x0000| 01 | . | [0]: 1 serial (int8) 0x1-0x1.7 (1) - 0x0000| c0 1d | .. | [1]: 8221 serial (text) 0x2-0x3.7 (2) - | | | contents[0:2]: 0x4-0x100c.7 (4105) - 0x0000| 04 | . | [0]: 4 value 0x4-0x4.7 (1) - 0x0000| 34 41 42 42 42 42 42 42 42 42 42| 4ABBBBBBBBB| [1]: "4ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"... value 0x5-0x100c.7 (4104) - 0x0010|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42|BBBBBBBBBBBBBBBB| - * |until 0x100c.7 (end) (4104) | | -0x01840|a0 0d |.. | payload_len: 4109 0x1840-0x1841.7 (2) -0x01840| 04 | . | rowid: 4 0x1842-0x1842.7 (1) - | | | overflow_pages[0:2]: 0x1843-0x6e27.7 (21989) - | | | [0]{}: overflow_page 0x1843-0x1a2f.7 (493) -0x01840| 04 01 c0 1d 04 34 41 42 42 42 42 42 42| .....4ABBBBBB| data: raw bits 0x1843-0x1a2b.7 (489) -0x01850|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42|BBBBBBBBBBBBBBBB| -* |until 0x1a2b.7 (489) | | -0x01a20| 00 00 00 07| ....| next_page: 7 0x1a2c-0x1a2f.7 (4) - | | | [1]{}: overflow_page 0x6000-0x6e27.7 (3624) -0x06000|00 00 00 00 |.... | next_page: 0 0x6000-0x6003.7 (4) -0x06000| 42 42 42 42 42 42 42 42 42 42 42 42| BBBBBBBBBBBB| data: raw bits 0x6004-0x6e27.7 (3620) -0x06010|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42|BBBBBBBBBBBBBBBB| -* |until 0x6e27.7 (3620) | | - | | | freeblocks[0:2]: 0x1a30-0x1e11.7 (994) - | | | [0]{}: freeblock 0x1a30-0x1c1f.7 (496) -0x01a30|0e 10 |.. | next_offset: 3600 0x1a30-0x1a31.7 (2) -0x01a30| 01 f0 | .. | size: 496 0x1a32-0x1a33.7 (2) -0x01a30| 00 00 00 00 00 00 00 00 00 00 00 00| ............| space: raw bits 0x1a34-0x1c1f.7 (492) -0x01a40|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|................| -* |until 0x1c1f.7 (492) | | - | | | [1]{}: freeblock 0x1e10-0x1e11.7 (2) -0x01e10|00 00 |.. | next_offset: 0 0x1e10-0x1e11.7 (2) - | | | [3]{}: page 0x2000-0x2ffd.7 (4094) -0x02000|0a |. | type: "index_leaf" (10) 0x2000-0x2000.7 (1) -0x02000| 0f f0 | .. | start_freeblocks: 4080 0x2001-0x2002.7 (2) -0x02000| 00 02 | .. | page_cells: 2 0x2003-0x2004.7 (2) -0x02000| 0f ea | .. | cell_start: 4074 0x2005-0x2006.7 (2) -0x02000| 00 | . | cell_fragments: 0 0x2007-0x2007.7 (1) - | | | cells_pointers[0:2]: 0x2008-0x200b.7 (4) -0x02000| 0f f6 | .. | [0]: 4086 pointer 0x2008-0x2009.7 (2) -0x02000| 0f ea | .. | [1]: 4074 pointer 0x200a-0x200b.7 (2) - | | | cells[0:2]: 0x2fea-0x2ffb.7 (18) - | | | [0]{}: cell 0x2ff6-0x2ffb.7 (6) -0x02ff0| 05 | . | payload_len: 5 0x2ff6-0x2ff6.7 (1) - | | | payload{}: 0x2ff7-0x2ffb.7 (5) -0x02ff0| 03 | . | length: 3 0x2ff7-0x2ff7.7 (1) - | | | serials[0:2]: 0x2ff8-0x2ff9.7 (2) -0x02ff0| 01 | . | [0]: 1 serial (int8) 0x2ff8-0x2ff8.7 (1) -0x02ff0| 01 | . | [1]: 1 serial (int8) 0x2ff9-0x2ff9.7 (1) - | | | contents[0:2]: 0x2ffa-0x2ffb.7 (2) -0x02ff0| 02 | . | [0]: 2 value 0x2ffa-0x2ffa.7 (1) -0x02ff0| 02 | . | [1]: 2 value 0x2ffb-0x2ffb.7 (1) - | | | [1]{}: cell 0x2fea-0x2fef.7 (6) -0x02fe0| 05 | . | payload_len: 5 0x2fea-0x2fea.7 (1) - | | | payload{}: 0x2feb-0x2fef.7 (5) -0x02fe0| 03 | . | length: 3 0x2feb-0x2feb.7 (1) - | | | serials[0:2]: 0x2fec-0x2fed.7 (2) -0x02fe0| 01 | . | [0]: 1 serial (int8) 0x2fec-0x2fec.7 (1) -0x02fe0| 01 | . | [1]: 1 serial (int8) 0x2fed-0x2fed.7 (1) - | | | contents[0:2]: 0x2fee-0x2fef.7 (2) -0x02fe0| 04 | . | [0]: 4 value 0x2fee-0x2fee.7 (1) -0x02fe0| 04| .| [1]: 4 value 0x2fef-0x2fef.7 (1) - | | | freeblocks[0:2]: 0x2ff0-0x2ffd.7 (14) - | | | [0]{}: freeblock 0x2ff0-0x2ff5.7 (6) -0x02ff0|0f fc |.. | next_offset: 4092 0x2ff0-0x2ff1.7 (2) -0x02ff0| 00 06 | .. | size: 6 0x2ff2-0x2ff3.7 (2) -0x02ff0| 00 00 | .. | space: raw bits 0x2ff4-0x2ff5.7 (2) - | | | [1]{}: freeblock 0x2ffc-0x2ffd.7 (2) -0x02ff0| 00 00 | .. | next_offset: 0 0x2ffc-0x2ffd.7 (2) - | | | [4]{}: page 0x3000-0x3ffc.7 (4093) -0x03000|00 |. | type: 0 0x3000-0x3000.7 (1) -0x03000| 00 00 00 00 00 00 01 00 00 00 06 42 42 42 42| ...........BBBB| data: raw bits 0x3001-0x3ffc.7 (4092) -0x03010|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42|BBBBBBBBBBBBBBBB| -* |until 0x3ffc.7 (4092) | | - | | | [5]{}: page 0x4000-0x4ffc.7 (4093) -0x04000|00 |. | type: 0 0x4000-0x4000.7 (1) -0x04000| 00 00 00 42 42 42 42 42 42 42 42 42 42 42 42| ...BBBBBBBBBBBB| data: raw bits 0x4001-0x4ffc.7 (4092) -0x04010|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42|BBBBBBBBBBBBBBBB| -* |until 0x4ffc.7 (4092) | | - | | | [6]{}: page 0x5000-0x5ffc.7 (4093) -0x05000|00 |. | type: 0 0x5000-0x5000.7 (1) -0x05000| 00 00 00 42 42 42 42 42 42 42 42 42 42 42 42| ...BBBBBBBBBBBB| data: raw bits 0x5001-0x5ffc.7 (4092) -0x05010|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42|BBBBBBBBBBBBBBBB| -* |until 0x5ffc.7 (4092) | | - | | | [7]{}: page 0x6000-0x6ffc.7 (4093) -0x06000|00 |. | type: 0 0x6000-0x6000.7 (1) -0x06000| 00 00 00 42 42 42 42 42 42 42 42 42 42 42 42| ...BBBBBBBBBBBB| data: raw bits 0x6001-0x6ffc.7 (4092) -0x06010|42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42|BBBBBBBBBBBBBBBB| -* |until 0x6ffc.7 (4092) | | -0x00070|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|................| unknown0: raw bits 0x70-0xf7e.7 (3855) -* |until 0xf7e.7 (3855) | | -0x00ff0| 00 08 00 00 00 00| ......| unknown1: raw bits 0xffa-0xfff.7 (6) -0x01000| 08 40 08 40| .@.@| unknown2: raw bits 0x100c-0x183f.7 (2100) -0x01010|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|................| -* |until 0x183f.7 (2100) | | -0x01e10| 01 f0 00 00 00 00 00 00 00 00 00 00 00 00| ..............| unknown3: raw bits 0x1e12-0x1fff.7 (494) -0x01e20|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|................| -* |until 0x1fff.7 (494) | | -0x02000| 0f ea 0f ea| ....| unknown4: raw bits 0x200c-0x2fe9.7 (4062) -0x02010|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|................| -* |until 0x2fe9.7 (4062) | | -0x02ff0| 00 04| ..| unknown5: raw bits 0x2ffe-0x2fff.7 (2) -0x03ff0| 00 00 00| ...| unknown6: raw bits 0x3ffd-0x3fff.7 (3) -0x04ff0| 00 00 00| ...| unknown7: raw bits 0x4ffd-0x4fff.7 (3) -0x05ff0| 00 00 00| ...| unknown8: raw bits 0x5ffd-0x5fff.7 (3) -0x06ff0| 00 00 00| ...| unknown9: raw bits 0x6ffd-0x6fff.7 (3) -{ - "aaa": [ - [ - 2, - "2ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC2" - ], - [ - 4, - "4ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC4" - ] - ] -}