mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-05 15:55:57 +03:00
Merge recent enhancements from trunk.
FossilOrigin-Name: ff9f3e09510b4418cb166fa2557598a279e7baedc315a5d1c3ae63beb92c238d
This commit is contained in:
27
README.md
27
README.md
@@ -306,30 +306,13 @@ describes its purpose and role within the larger system.
|
|||||||
<a name="vauth"></a>
|
<a name="vauth"></a>
|
||||||
## Verifying Code Authenticity
|
## Verifying Code Authenticity
|
||||||
|
|
||||||
If you obtained an SQLite source tree from a secondary source, such as a
|
The `manifest` file at the root directory of the source tree
|
||||||
GitHub mirror, and you want to verify that it has not been altered, there
|
|
||||||
are a couple of ways to do that.
|
|
||||||
|
|
||||||
If you have a release version of SQLite, and you are using the
|
|
||||||
`sqlite3.c` amalgamation, then SHA3-256 hashes for the amalgamation are
|
|
||||||
available in the [change log](https://www.sqlite.org/changes.html) on
|
|
||||||
the official website. After building the `sqlite3.c` file, you can check
|
|
||||||
that it is authentic by comparing the hash. This does not ensure that the
|
|
||||||
test scripts are unaltered, but it does validate the deliverable part of
|
|
||||||
the code and the verification process only involves computing and
|
|
||||||
comparing a single hash.
|
|
||||||
|
|
||||||
For versions other than an official release, or if you are building the
|
|
||||||
`sqlite3.c` amalgamation using non-standard build options, the verification
|
|
||||||
process is a little more involved. The `manifest` file at the root directory
|
|
||||||
of the source tree
|
|
||||||
contains either a SHA3-256 hash (for newer files) or a SHA1 hash (for
|
contains either a SHA3-256 hash (for newer files) or a SHA1 hash (for
|
||||||
older files) for every source file in the repository. You can write a script
|
older files) for every source file in the repository.
|
||||||
to extracts hashes from `manifest` and verifies the hashes against the
|
The SHA3-256 hash of the `manifest`
|
||||||
corresponding files in the source tree. The SHA3-256 hash of the `manifest`
|
|
||||||
file itself is the official name of the version of the source tree that you
|
file itself is the official name of the version of the source tree that you
|
||||||
have. The `manifest.uuid` file should contain the SHA3-256 hash of the
|
have. The `manifest.uuid` file should contain the SHA3-256 hash of the
|
||||||
`manifest` file. If all of the above hash comparisons are correct, then
|
`manifest` file. If all of the above hash comparisons are correct, then
|
||||||
you can be confident that your source tree is authentic and unadulterated.
|
you can be confident that your source tree is authentic and unadulterated.
|
||||||
|
|
||||||
The format of the `manifest` file should be mostly self-explanatory, but
|
The format of the `manifest` file should be mostly self-explanatory, but
|
||||||
|
@@ -2619,14 +2619,14 @@ static void fts3ColumnFilter(
|
|||||||
|
|
||||||
nList -= (int)(p - pList);
|
nList -= (int)(p - pList);
|
||||||
pList = p;
|
pList = p;
|
||||||
if( nList==0 ){
|
if( nList<=0 ){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
p = &pList[1];
|
p = &pList[1];
|
||||||
p += fts3GetVarint32(p, &iCurrent);
|
p += fts3GetVarint32(p, &iCurrent);
|
||||||
}
|
}
|
||||||
|
|
||||||
if( bZero && &pList[nList]!=pEnd ){
|
if( bZero && (pEnd - &pList[nList])>0){
|
||||||
memset(&pList[nList], 0, pEnd - &pList[nList]);
|
memset(&pList[nList], 0, pEnd - &pList[nList]);
|
||||||
}
|
}
|
||||||
*ppList = pList;
|
*ppList = pList;
|
||||||
|
@@ -992,7 +992,7 @@ static Fts5Structure *fts5StructureReadUncached(Fts5Index *p){
|
|||||||
/* TODO: Do we need this if the leaf-index is appended? Probably... */
|
/* TODO: Do we need this if the leaf-index is appended? Probably... */
|
||||||
memset(&pData->p[pData->nn], 0, FTS5_DATA_PADDING);
|
memset(&pData->p[pData->nn], 0, FTS5_DATA_PADDING);
|
||||||
p->rc = fts5StructureDecode(pData->p, pData->nn, &iCookie, &pRet);
|
p->rc = fts5StructureDecode(pData->p, pData->nn, &iCookie, &pRet);
|
||||||
if( p->rc==SQLITE_OK && pConfig->iCookie!=iCookie ){
|
if( p->rc==SQLITE_OK && (pConfig->pgsz==0 || pConfig->iCookie!=iCookie) ){
|
||||||
p->rc = sqlite3Fts5ConfigLoad(pConfig, iCookie);
|
p->rc = sqlite3Fts5ConfigLoad(pConfig, iCookie);
|
||||||
}
|
}
|
||||||
fts5DataRelease(pData);
|
fts5DataRelease(pData);
|
||||||
|
@@ -4668,7 +4668,6 @@ do_execsql_test 38.1 {
|
|||||||
do_execsql_test 38.2 {
|
do_execsql_test 38.2 {
|
||||||
UPDATE t1_data SET block = X'000202' WHERE rowid=1;
|
UPDATE t1_data SET block = X'000202' WHERE rowid=1;
|
||||||
}
|
}
|
||||||
breakpoint
|
|
||||||
do_catchsql_test 38.3 {
|
do_catchsql_test 38.3 {
|
||||||
SELECT * FROM t1('a b') ORDER BY rank;
|
SELECT * FROM t1('a b') ORDER BY rank;
|
||||||
} {1 {database disk image is malformed}}
|
} {1 {database disk image is malformed}}
|
||||||
@@ -8953,10 +8952,214 @@ do_execsql_test 61.1 {
|
|||||||
CREATE VIRTUAL TABLE t3 USING fts5vocab('t1'(),'col' );
|
CREATE VIRTUAL TABLE t3 USING fts5vocab('t1'(),'col' );
|
||||||
}
|
}
|
||||||
|
|
||||||
do_catchsql_test 62.2 {
|
do_catchsql_test 61.2 {
|
||||||
SELECT * FROM t3 ORDER BY rowid;
|
SELECT * FROM t3 ORDER BY rowid;
|
||||||
} {1 {database disk image is malformed}}
|
} {1 {database disk image is malformed}}
|
||||||
|
|
||||||
|
breakpoint
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
do_test 62.0 {
|
||||||
|
sqlite3 db {}
|
||||||
|
db deserialize [decode_hexdb {
|
||||||
|
.open --hexdb
|
||||||
|
| size 28672 pagesize 4096 filename crash-44942694542e1e.db
|
||||||
|
| page 1 offset 0
|
||||||
|
| 0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 SQLite format 3.
|
||||||
|
| 16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 00 .....@ ........
|
||||||
|
| 96: 00 00 00 00 0d 0f c7 00 07 0d 92 00 0f 8d 0f 36 ...............6
|
||||||
|
| 112: 0e cb 0e 6b 0e 0e 0d b6 0d 92 00 00 00 00 00 00 ...k............
|
||||||
|
| 3472: 00 00 22 08 06 17 11 11 01 31 74 61 62 6c 65 74 .........1tablet
|
||||||
|
| 3488: 32 74 32 08 43 52 45 41 54 45 20 54 41 42 4c 45 2t2.CREATE TABLE
|
||||||
|
| 3504: 20 74 32 28 78 29 56 07 06 17 1f 1f 01 7d 74 61 t2(x)V.......ta
|
||||||
|
| 3520: 62 6c 65 74 31 5f 63 6f 6e 66 79 67 74 31 5f 63 blet1_confygt1_c
|
||||||
|
| 3536: 6f 6e 66 69 67 07 43 52 45 41 54 45 20 54 41 42 onfig.CREATE TAB
|
||||||
|
| 3552: 4c 45 20 27 74 31 5f 63 6f 6e 66 69 67 27 28 6b LE 't1_config'(k
|
||||||
|
| 3568: 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 76 29 PRIMARY KEY, v)
|
||||||
|
| 3584: 20 57 49 54 48 4f 55 54 20 52 4f 57 49 44 5b 06 WITHOUT ROWID[.
|
||||||
|
| 3600: 07 17 21 21 01 81 01 74 61 62 6c 65 74 31 5f 64 ..!!...tablet1_d
|
||||||
|
| 3616: 6f 63 73 69 7a 65 74 31 5f 64 6f 63 73 69 7a 65 ocsizet1_docsize
|
||||||
|
| 3632: 06 43 52 45 41 54 45 20 54 41 42 4c 45 20 27 74 .CREATE TABLE 't
|
||||||
|
| 3648: 31 5f 64 6f 63 73 69 7a 65 27 28 69 64 20 49 4e 1_docsize'(id IN
|
||||||
|
| 3664: 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 TEGER PRIMARY KE
|
||||||
|
| 3680: 59 2c 20 73 7a 20 52 4c 4f 42 29 5e 05 07 17 21 Y, sz RLOB)^...!
|
||||||
|
| 3696: 21 01 81 07 74 61 62 6c 65 74 31 5f 63 6f 6e 74 !...tablet1_cont
|
||||||
|
| 3712: 65 6e 74 74 35 ff 63 6f 6e 74 65 6e 74 05 43 52 entt5.content.CR
|
||||||
|
| 3728: 45 41 54 45 20 54 41 42 4c 45 20 27 74 31 5f 63 EATE TABLE 't1_c
|
||||||
|
| 3744: 6f 6e 74 65 6e 74 27 28 69 64 20 49 4e 54 45 47 ontent'(id INTEG
|
||||||
|
| 3760: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 ER PRIMARY KEY,
|
||||||
|
| 3776: 63 30 2c 20 63 31 2c 20 63 42 29 69 04 07 17 19 c0, c1, cB)i....
|
||||||
|
| 3792: 19 01 81 2d 74 61 62 6c 65 74 31 5f 69 64 78 74 ...-tablet1_idxt
|
||||||
|
| 3808: 31 5f 79 64 78 04 43 52 45 41 54 45 20 54 41 42 1_ydx.CREATE TAB
|
||||||
|
| 3824: 4c 45 20 27 74 31 5f 69 64 78 27 28 73 65 67 69 LE 't1_idx'(segi
|
||||||
|
| 3840: 64 2c 20 74 65 72 6d 2c 20 70 67 6e 6f 2c 20 50 d, term, pgno, P
|
||||||
|
| 3856: 52 49 4d 41 52 59 20 4b 45 59 28 73 65 67 69 64 RIMARY KEY(segid
|
||||||
|
| 3872: 2c 20 74 65 72 6d 29 29 20 57 49 54 48 4f 55 54 , term)) WITHOUT
|
||||||
|
| 3888: 20 52 4f 57 49 44 55 03 07 17 1b 1b 01 81 01 74 ROWIDU........t
|
||||||
|
| 3904: 61 62 6c 65 74 31 5f 64 61 74 61 74 31 5f 74 61 ablet1_datat1_ta
|
||||||
|
| 3920: 74 61 03 43 52 45 41 54 45 20 54 41 42 4c 45 20 ta.CREATE TABLE
|
||||||
|
| 3936: 27 74 31 5f 64 61 74 61 27 28 69 64 20 49 4e 54 't1_data'(id INT
|
||||||
|
| 3952: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 EGER PRIMARY KEY
|
||||||
|
| 3968: 2c 20 62 6c 6f 63 6b 20 42 4c 4f 42 29 38 02 06 , block BLOB)8..
|
||||||
|
| 3984: 17 11 11 08 5f 74 61 62 6c 65 74 31 74 31 43 52 ...._tablet1t1CR
|
||||||
|
| 4000: 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 EATE VIRTUAL TAB
|
||||||
|
| 4016: 4c 45 20 74 31 20 55 53 49 4e 47 20 66 74 73 35 LE t1 USING fts5
|
||||||
|
| 4032: 28 61 2c 62 2c 63 29 00 00 00 00 00 00 00 00 00 (a,b,c).........
|
||||||
|
| page 3 offset 8192
|
||||||
|
| 0: 0d 00 00 00 03 0c 94 00 0f e6 0f ef 0c 94 00 00 ................
|
||||||
|
| 3216: 00 00 00 00 86 4a 84 80 80 80 80 01 04 00 8d 18 .....J..........
|
||||||
|
| 3232: 00 00 03 2b 02 30 30 01 02 06 01 02 06 01 02 06 ...+.00.........
|
||||||
|
| 3248: 2f 02 03 01 02 03 01 02 03 01 08 32 30 31 36 30 /..........20160
|
||||||
|
| 3264: 36 30 39 01 02 07 01 02 07 01 02 07 01 01 34 01 609...........4.
|
||||||
|
| 3280: 02 05 01 02 c7 01 02 05 01 01 35 01 02 04 01 02 ..........5.....
|
||||||
|
| 3296: 04 01 02 04 02 07 30 30 30 30 30 30 30 1c 02 04 ......0000000...
|
||||||
|
| 3312: 01 02 04 01 02 04 01 06 62 69 6e 61 72 79 03 06 ........binary..
|
||||||
|
| 3328: 01 02 02 04 16 01 02 02 03 06 01 02 02 02 06 01 ................
|
||||||
|
| 3344: 02 02 03 06 01 02 02 03 06 01 02 02 03 06 01 02 ................
|
||||||
|
| 3360: 02 03 06 01 02 02 03 06 01 02 02 02 06 01 02 02 ................
|
||||||
|
| 3376: 03 06 01 02 02 03 06 01 02 02 01 08 63 6f 6d 70 ............comp
|
||||||
|
| 3392: 69 6c 65 72 01 02 02 01 02 02 01 02 02 01 06 64 iler...........d
|
||||||
|
| 3408: 62 73 74 61 74 07 02 03 00 02 03 01 02 03 02 04 bstat...........
|
||||||
|
| 3424: 65 62 74 67 04 02 02 01 02 02 01 02 02 01 06 65 ebtg...........e
|
||||||
|
| 3440: 6e 61 62 6c 65 07 02 02 01 02 02 01 02 02 01 02 nable...........
|
||||||
|
| 3456: 02 01 02 02 01 02 02 01 02 02 01 02 01 f1 02 02 ................
|
||||||
|
| 3472: 01 02 02 01 02 02 01 02 02 01 02 02 01 02 02 01 ................
|
||||||
|
| 3488: 02 02 01 02 02 45 02 02 01 02 02 01 02 02 01 02 .....E..........
|
||||||
|
| 3504: 02 01 02 02 02 08 78 74 65 6e 73 69 6f 6e 1f 02 ......xtension..
|
||||||
|
| 3520: 04 01 02 09 c1 02 04 01 04 66 74 73 34 0a 02 03 .........fts4...
|
||||||
|
| 3536: 01 02 03 01 02 03 04 00 35 0d 02 03 01 02 04 01 ........5.......
|
||||||
|
| 3552: 02 03 01 0f d7 63 63 01 02 03 01 02 03 01 02 03 .....cc.........
|
||||||
|
| 3568: 02 06 65 6f 70 6f 6b 79 10 02 03 01 02 03 01 02 ..eopoky........
|
||||||
|
| 3584: 03 01 05 6a 73 6f 6e 31 13 02 03 14 02 03 01 02 ...json1........
|
||||||
|
| 3600: 03 01 04 6c 6f 61 64 1f 02 03 01 02 03 01 02 03 ...load.........
|
||||||
|
| 3616: 01 03 6d 61 78 1c 02 02 01 02 02 01 02 02 02 05 ..max...........
|
||||||
|
| 3632: 65 6d 6f 72 79 1c 02 03 01 02 03 01 02 03 04 04 emory...........
|
||||||
|
| 3648: 73 79 73 35 16 02 03 01 02 03 01 02 03 01 06 6e sys5...........n
|
||||||
|
| 3664: 6f 63 61 73 65 02 06 01 02 12 03 06 01 02 02 03 ocase...........
|
||||||
|
| 3680: 06 01 02 02 03 06 01 02 02 09 f6 01 02 02 03 06 ................
|
||||||
|
| 3696: 01 02 02 03 06 01 02 02 03 06 01 02 02 03 06 01 ................
|
||||||
|
| 3712: 02 02 03 06 01 02 02 03 06 01 02 02 03 06 11 02 ................
|
||||||
|
| 3728: 02 01 04 6f 7d 69 74 1f 02 02 01 02 02 01 02 02 ...o.it.........
|
||||||
|
| 3744: 01 05 72 74 72 65 65 19 02 03 01 02 03 01 02 03 ..rtree.........
|
||||||
|
| 3760: 04 02 69 6d 01 06 01 02 02 03 06 01 02 02 03 06 ..im............
|
||||||
|
| 3776: 01 02 02 03 06 01 02 02 03 06 01 02 02 03 06 01 ................
|
||||||
|
| 3792: 02 02 03 06 01 02 02 03 06 01 02 02 03 06 11 02 ................
|
||||||
|
| 3808: 02 03 06 01 02 02 03 06 01 02 02 03 06 01 02 02 ................
|
||||||
|
| 3824: 00 fa 74 68 72 65 61 64 73 61 66 65 22 02 02 01 ..threadsafe....
|
||||||
|
| 3840: 02 02 01 02 02 01 04 76 74 61 62 07 03 04 01 40 .......vtab....@
|
||||||
|
| 3856: 04 01 02 04 11 01 78 01 06 01 01 02 01 06 01 01 ......x.........
|
||||||
|
| 3872: 02 01 06 01 00 02 01 06 01 01 02 01 03 91 01 02 ................
|
||||||
|
| 3888: 01 06 01 01 02 01 06 01 01 02 01 06 01 01 02 01 ................
|
||||||
|
| 3904: 06 01 01 02 01 06 01 01 02 01 06 01 01 02 01 06 ................
|
||||||
|
| 3920: 01 01 02 01 06 01 01 02 01 06 01 01 02 01 06 01 ................
|
||||||
|
| 3936: 01 02 01 06 01 01 02 01 06 01 01 02 01 06 01 01 ................
|
||||||
|
| 3952: 02 01 06 01 01 02 01 06 01 01 02 01 06 01 01 02 ................
|
||||||
|
| 3968: 01 06 01 01 02 01 76 01 01 02 01 06 01 01 02 5c ......v.........
|
||||||
|
| 3984: 06 01 01 02 01 06 01 01 02 01 06 01 01 02 11 06 ................
|
||||||
|
| 4000: 01 02 02 01 06 08 11 02 01 06 01 01 02 01 06 01 ................
|
||||||
|
| 4016: 01 02 01 06 01 01 02 01 06 01 01 02 01 05 01 01 ................
|
||||||
|
| 4032: 02 01 06 01 01 02 01 06 01 01 02 04 15 13 0c 0c ................
|
||||||
|
| 4048: 12 44 13 11 0f 47 13 0f 0c 0e 11 10 ca 0e 10 0f .D...G..........
|
||||||
|
| 4064: 44 0f 10 40 15 0f 07 01 03 00 14 24 5a 14 24 0f D..@.......$Z.$.
|
||||||
|
| 4080: 0a 03 00 24 ff ff ff ff 01 01 02 00 01 01 01 01 ...$............
|
||||||
|
| page 4 offset 12288
|
||||||
|
| 0: 0a 00 00 00 01 0f fb 00 00 00 00 00 00 00 00 00 ................
|
||||||
|
| 4080: 00 00 00 00 00 00 00 00 00 00 05 04 09 0c 01 02 ................
|
||||||
|
| page 5 offset 16384
|
||||||
|
| 0: 0d 00 00 00 24 0c 09 00 00 00 00 00 00 00 00 00 ....$...........
|
||||||
|
| 3072: 00 00 00 00 00 00 00 00 00 00 18 24 05 00 25 0f ...........$..%.
|
||||||
|
| 3088: 19 54 48 52 45 41 44 53 41 46 45 3d 30 58 42 49 .THREADSAFE=0XBI
|
||||||
|
| 3104: 4e 41 52 59 18 23 05 00 25 0f 19 54 48 52 45 41 NARY.#..%..THREA
|
||||||
|
| 3120: 44 53 41 46 45 3d 30 58 4e 4f 43 41 53 47 17 22 DSAFE=0XNOCASG..
|
||||||
|
| 3136: 05 00 25 0f 17 54 48 52 45 41 44 53 41 46 45 3d ..%..THREADSAFE=
|
||||||
|
| 3152: 30 58 52 54 52 49 4d 1f 21 05 00 33 0f 19 4f 4d 0XRTRIM.!..3..OM
|
||||||
|
| 3168: 49 54 20 4c 3f 41 44 20 45 58 54 45 4e 53 49 4f IT L?AD EXTENSIO
|
||||||
|
| 3184: 4e 58 42 49 4e 41 52 59 1f 20 05 00 33 0f 19 4f NXBINARY. ..3..O
|
||||||
|
| 3200: 4d 49 64 20 4c 4f 41 44 20 45 58 54 45 d9 53 49 MId LOAD EXTE.SI
|
||||||
|
| 3216: 4f 4e 58 4e 4f 43 41 53 45 1e 1f 05 00 33 0f 17 ONXNOCASE....3..
|
||||||
|
| 3232: 4f 4d 39 54 20 4c 4f 41 44 20 45 58 55 45 4e 53 OM9T LOAD EXUENS
|
||||||
|
| 3248: 49 4f 4e 58 52 54 52 49 4d 1f 1e 05 00 33 0f 19 IONXRTRIM....3..
|
||||||
|
| 3264: 4c 41 58 20 4d 45 4d 4f 52 59 3d 35 30 30 30 30 LAX MEMORY=50000
|
||||||
|
| 3280: 30 30 30 58 42 49 4e 41 52 59 1f 1d 05 00 33 0f 000XBINARY....3.
|
||||||
|
| 3296: 19 4d 41 58 20 4d 45 4d 4f 52 59 3d 35 30 30 30 .MAX MEMORY=5000
|
||||||
|
| 3312: 30 30 30 30 58 af 4f 43 41 53 45 1e 1c 05 00 33 0000X.OCASE....3
|
||||||
|
| 3328: 0f 17 4d 41 58 20 4d 45 4d 4f 52 59 3d 35 30 30 ..MAX MEMORY=500
|
||||||
|
| 3344: 30 30 ab 30 30 58 62 54 52 49 4d 18 1b 05 00 25 00.00XbTRIM....%
|
||||||
|
| 3360: 0f 19 45 4e 41 42 4c 45 20 52 54 52 45 45 58 42 ..ENABLE RTREEXB
|
||||||
|
| 3376: 49 4e 41 52 59 18 1b 05 00 25 0f 19 45 4e 41 42 INARY....%..ENAB
|
||||||
|
| 3392: 4c 45 20 52 54 52 45 45 58 4e 4f 43 41 53 45 17 LE RTREEXNOCASE.
|
||||||
|
| 3408: 19 05 00 25 0f 17 45 4e 41 42 4c 45 20 52 54 52 ...%..ENABLE RTR
|
||||||
|
| 3424: 45 45 58 52 54 52 49 4d 1a 18 05 00 29 0f 19 45 EEXRTRIM....)..E
|
||||||
|
| 3440: 4e 41 42 4c 45 20 4d 45 4d 53 59 63 35 58 42 49 NABLE MEMSYc5XBI
|
||||||
|
| 3456: 4e 41 52 59 1a 17 04 00 29 0f 19 45 4e 41 42 4c NARY....)..ENABL
|
||||||
|
| 3472: 45 20 4d 45 4d 53 59 53 35 58 4e 4f 43 41 53 45 E MEMSYS5XNOCASE
|
||||||
|
| 3488: 19 16 05 00 29 0f 17 45 4e 41 42 4c 45 20 3d 45 ....)..ENABLE =E
|
||||||
|
| 3504: 4d 53 59 53 35 58 52 54 52 49 4d 18 15 05 00 25 MSYS5XRTRIM....%
|
||||||
|
| 3520: 0f 19 45 4e 41 42 4c 45 20 4a 53 4f 4e 31 58 42 ..ENABLE JSON1XB
|
||||||
|
| 3536: 49 4e 41 52 59 18 14 05 00 25 0f 19 45 4e 41 42 INARY....%..ENAB
|
||||||
|
| 3552: 4c 46 20 4a 53 4f 4e 31 58 4e 4f 43 41 53 45 17 LF JSON1XNOCASE.
|
||||||
|
| 3568: 13 05 00 25 0f 17 45 4e 41 42 4c 45 20 4a 53 4f ...%..ENABLE JSO
|
||||||
|
| 3584: 4e 31 58 52 54 52 49 4d 1a 12 05 00 29 0f 19 45 N1XRTRIM....)..E
|
||||||
|
| 3600: 4e 41 42 4c 45 20 46 45 46 50 4f 4c 59 57 42 49 NABLE FEFPOLYWBI
|
||||||
|
| 3616: 4e 41 52 59 18 11 05 00 29 0f 19 45 4e 41 42 4c NARY....)..ENABL
|
||||||
|
| 3632: 45 20 47 45 4f 50 4f 4c 59 58 4e 5f 43 41 53 45 E GEOPOLYXN_CASE
|
||||||
|
| 3648: 19 10 05 00 29 0f 17 45 4e 41 42 4c 45 20 47 42 ....)..ENABLE GB
|
||||||
|
| 3664: 2f 50 4f 4c 59 58 51 54 52 49 4d 17 0f 05 00 23 /POLYXQTRIM....#
|
||||||
|
| 3680: 0f 19 45 4e 41 42 4c 45 20 46 54 53 35 58 42 49 ..ENABLE FTS5XBI
|
||||||
|
| 3696: 4e 41 52 59 17 0e 05 00 23 0f 19 45 4e 41 42 4c NARY....#..ENABL
|
||||||
|
| 3712: 45 20 46 54 53 35 58 4e 4f 43 41 53 45 16 0d 05 E FTS5XNOCASE...
|
||||||
|
| 3728: 00 23 0f 17 45 4e 41 42 4c 45 20 46 54 53 35 58 .#..ENABLE FTS5X
|
||||||
|
| 3744: 52 54 52 49 4d 17 1c 05 00 23 0f 19 45 4e 41 42 RTRIM....#..ENAB
|
||||||
|
| 3760: 4c 45 20 46 54 53 34 58 42 49 4e 41 52 59 16 0b LE FTS4XBINARY..
|
||||||
|
| 3776: 05 00 22 0f e9 45 4e 41 42 4c 35 20 46 54 53 34 .....ENABL5 FTS4
|
||||||
|
| 3792: 58 4e 4f 43 41 53 45 16 0a 05 00 23 00 47 45 4e XNOCASE....#.GEN
|
||||||
|
| 3808: 41 42 4c 45 20 46 54 53 34 57 52 54 52 49 4d 1e ABLE FTS4WRTRIM.
|
||||||
|
| 3824: 60 05 00 31 0f 19 45 4e 41 42 4c 55 20 43 42 53 `..1..ENABLU CBS
|
||||||
|
| 3840: 54 41 54 20 56 54 42 42 58 42 49 4e 41 52 59 1e TAT VTBBXBINARY.
|
||||||
|
| 3856: 08 05 00 31 0f 19 45 4e 41 42 4c 45 20 44 42 53 ...1..ENABLE DBS
|
||||||
|
| 3872: 54 40 54 20 56 54 41 42 58 4e 4f 43 41 53 45 1d T@T VTABXNOCASE.
|
||||||
|
| 3888: 07 05 00 31 0f 17 45 4e 41 42 4c 55 20 44 42 53 ...1..ENABLU DBS
|
||||||
|
| 3904: 54 41 54 20 56 54 41 42 58 52 54 52 49 4d 12 06 TAT VTABXRTRIM..
|
||||||
|
| 3920: 05 00 17 0f 19 44 45 42 55 47 58 42 49 4e 41 52 .....DEBUGXBINAR
|
||||||
|
| 3936: 59 21 05 05 00 17 0f 19 44 45 42 55 47 58 4e 4f Y!......DEBUGXNO
|
||||||
|
| 3952: 43 41 53 45 10 04 05 00 17 0f 18 44 45 42 55 47 CASE.......DEBUG
|
||||||
|
| 3968: 58 42 54 52 49 4d 27 11 05 00 43 0f 19 43 4f 4d XBTRIM'...C..COM
|
||||||
|
| 3984: 50 49 48 f5 52 3d 67 63 63 2d 35 2e 34 2e 30 20 PIH.R=gcc-5.4.0
|
||||||
|
| 4000: 32 30 31 36 30 36 30 39 58 42 49 4e 41 52 59 27 20160609XBINARY'
|
||||||
|
| 4016: 02 05 00 43 0f 19 43 4f 4d 50 49 4c 45 52 3d 67 ...C..COMPILER=g
|
||||||
|
| 4032: 63 63 2d 35 2e 34 2e 30 22 32 30 31 36 30 36 30 cc-5.4.0.2016060
|
||||||
|
| 4048: 39 c2 3e 4f 43 41 53 45 26 01 05 00 43 0f 17 43 9.>OCASE&...C..C
|
||||||
|
| 4064: 4f 4d 50 49 4c 45 52 3d 67 63 63 2d 35 2e 34 2e OMPILER=gcc-5.4.
|
||||||
|
| 4080: 30 30 32 30 31 26 30 36 30 39 58 52 54 52 49 4d 00201&0609XRTRIM
|
||||||
|
| page 6 offset 20480
|
||||||
|
| 0: 0d 00 00 00 24 0e e0 00 00 00 00 00 00 00 00 00 ....$...........
|
||||||
|
| 3808: 06 24 03 00 12 02 01 01 06 23 03 00 12 02 01 01 .$.......#......
|
||||||
|
| 3824: 06 22 03 00 12 02 01 01 06 21 03 00 12 03 01 01 .........!......
|
||||||
|
| 3840: 06 20 03 00 12 03 01 01 06 1f 03 00 12 03 01 01 . ..............
|
||||||
|
| 3856: 06 1e 03 00 12 03 01 01 06 1d 03 00 12 03 01 01 ................
|
||||||
|
| 3872: 06 1c 03 00 12 03 01 01 06 1b 03 00 12 02 01 01 ................
|
||||||
|
| 3888: 06 1a 03 00 12 02 01 01 06 19 03 00 12 02 01 01 ................
|
||||||
|
| 3904: 06 18 03 00 12 02 01 00 f6 17 03 00 19 e2 f9 01 ................
|
||||||
|
| 3920: 06 16 03 00 12 02 05 01 06 15 03 00 12 02 01 01 ................
|
||||||
|
| 3936: 06 14 03 00 12 02 01 01 06 13 03 00 12 02 01 01 ................
|
||||||
|
| 3952: 06 12 03 00 12 02 01 01 06 11 03 00 12 02 01 01 ................
|
||||||
|
| 3968: 06 10 03 10 12 02 01 01 06 0f 03 00 12 02 01 01 ................
|
||||||
|
| 3984: 06 0e 03 00 12 02 01 01 06 0d 03 00 12 02 00 f1 ................
|
||||||
|
| 4000: 06 0c 03 00 12 02 01 01 06 0b 03 00 12 02 01 01 ................
|
||||||
|
| 4016: 06 0a 03 00 12 02 01 01 05 09 03 00 12 03 01 01 ................
|
||||||
|
| 4032: 06 08 03 00 12 03 01 01 06 07 03 00 12 03 01 01 ................
|
||||||
|
| 4048: 06 06 03 00 12 01 01 01 06 05 02 ff 84 01 01 01 ................
|
||||||
|
| 4064: 06 04 03 00 12 01 01 01 06 03 03 00 12 06 01 01 ................
|
||||||
|
| 4080: 07 02 03 00 12 06 01 01 06 01 03 00 12 06 01 01 ................
|
||||||
|
| page 7 offset 24576
|
||||||
|
| 0: 0a 00 00 00 01 0f f4 00 0f f4 00 00 00 00 00 00 ................
|
||||||
|
| 4080: 00 00 00 00 0b 03 1b 01 76 65 72 73 69 6f 6e 04 ........version.
|
||||||
|
| end crash-44942694542e1e.db
|
||||||
|
}]} {}
|
||||||
|
|
||||||
|
do_catchsql_test 62.1 {
|
||||||
|
WITH c(x) AS (VALUES(false) UNION ALL SELECT x+1 FROM c WHERE x<72)
|
||||||
|
INSERT INTO t1(a) SELECT randomblob(2829) FROM c;
|
||||||
|
} {0 {}}
|
||||||
|
|
||||||
sqlite3_fts5_may_be_corrupt 0
|
sqlite3_fts5_may_be_corrupt 0
|
||||||
finish_test
|
finish_test
|
||||||
|
61
ext/fts5/test/fts5corrupt4.test
Normal file
61
ext/fts5/test/fts5corrupt4.test
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
# 2019 May 16
|
||||||
|
#
|
||||||
|
# The author disclaims copyright to this source code. In place of
|
||||||
|
# a legal notice, here is a blessing:
|
||||||
|
#
|
||||||
|
# May you do good and not evil.
|
||||||
|
# May you find forgiveness for yourself and forgive others.
|
||||||
|
# May you share freely, never taking more than you give.
|
||||||
|
#
|
||||||
|
#***********************************************************************
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
source [file join [file dirname [info script]] fts5_common.tcl]
|
||||||
|
set testprefix fts5corrupt4
|
||||||
|
|
||||||
|
# If SQLITE_ENABLE_FTS5 is defined, omit this file.
|
||||||
|
ifcapable !fts5 {
|
||||||
|
finish_test
|
||||||
|
return
|
||||||
|
}
|
||||||
|
sqlite3_fts5_may_be_corrupt 1
|
||||||
|
|
||||||
|
do_execsql_test 1.0 {
|
||||||
|
CREATE VIRTUAL TABLE ttt USING fts5(a, b);
|
||||||
|
INSERT INTO ttt
|
||||||
|
VALUES('e ee eee e ee eee e ee eee', 'eee ee e e e ee eee ee ee');
|
||||||
|
INSERT INTO ttt SELECT a||a, b||b FROM ttt;
|
||||||
|
INSERT INTO ttt SELECT a||a, b||b FROM ttt;
|
||||||
|
}
|
||||||
|
|
||||||
|
proc mutate {blob i} {
|
||||||
|
set o [expr {$i % [string length $blob]}]
|
||||||
|
set a [string range $blob 0 $o-1]
|
||||||
|
set b [string range $blob $o+1 end]
|
||||||
|
set v [expr int(rand()*255) - 127]
|
||||||
|
return "$a[binary format c $v]$b"
|
||||||
|
}
|
||||||
|
db func mutate mutate
|
||||||
|
|
||||||
|
for {set j 1000} {$j <= 5000} {incr j 1000} {
|
||||||
|
do_test 1.$j {
|
||||||
|
for {set i 0} {$i < 1000} {incr i} {
|
||||||
|
execsql {
|
||||||
|
BEGIN;
|
||||||
|
UPDATE ttt_data SET block = mutate(block, $i) WHERE id>10;
|
||||||
|
}
|
||||||
|
foreach sql {
|
||||||
|
{SELECT snippet(ttt, -1, '.', '..', '[', ']'), * FROM ttt('e*')}
|
||||||
|
{SELECT snippet(ttt, -1, '.', '..', '[', ']'), * FROM ttt('e* NOT ee*')}
|
||||||
|
} {
|
||||||
|
catch { execsql $sql }
|
||||||
|
}
|
||||||
|
execsql ROLLBACK
|
||||||
|
}
|
||||||
|
} {}
|
||||||
|
}
|
||||||
|
|
||||||
|
sqlite3_fts5_may_be_corrupt 0
|
||||||
|
finish_test
|
||||||
|
|
@@ -1624,7 +1624,9 @@ int sqlite3session_diff(
|
|||||||
}
|
}
|
||||||
sqlite3_free((char*)azCol);
|
sqlite3_free((char*)azCol);
|
||||||
if( bMismatch ){
|
if( bMismatch ){
|
||||||
*pzErrMsg = sqlite3_mprintf("table schemas do not match");
|
if( pzErrMsg ){
|
||||||
|
*pzErrMsg = sqlite3_mprintf("table schemas do not match");
|
||||||
|
}
|
||||||
rc = SQLITE_SCHEMA;
|
rc = SQLITE_SCHEMA;
|
||||||
}
|
}
|
||||||
if( bHasPk==0 ){
|
if( bHasPk==0 ){
|
||||||
@@ -1830,7 +1832,7 @@ int sqlite3session_attach(
|
|||||||
** set *pRc to SQLITE_NOMEM and return non-zero.
|
** set *pRc to SQLITE_NOMEM and return non-zero.
|
||||||
*/
|
*/
|
||||||
static int sessionBufferGrow(SessionBuffer *p, size_t nByte, int *pRc){
|
static int sessionBufferGrow(SessionBuffer *p, size_t nByte, int *pRc){
|
||||||
if( *pRc==SQLITE_OK && p->nAlloc-p->nBuf<nByte ){
|
if( *pRc==SQLITE_OK && (size_t)(p->nAlloc-p->nBuf)<nByte ){
|
||||||
u8 *aNew;
|
u8 *aNew;
|
||||||
i64 nNew = p->nAlloc ? p->nAlloc : 128;
|
i64 nNew = p->nAlloc ? p->nAlloc : 128;
|
||||||
do {
|
do {
|
||||||
|
81
manifest
81
manifest
@@ -1,12 +1,12 @@
|
|||||||
C Merge\sall\sthe\slatest\strunk\senhancements\sinto\sthe\sreuse-schema\sbranch.
|
C Merge\srecent\senhancements\sfrom\strunk.
|
||||||
D 2019-05-14T22:25:26.972
|
D 2019-05-24T13:04:56.001
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||||
F Makefile.in c4b55bbca70511d8757e38358dfbc06dd74abd51d61bf4939d2caea023c9b97b
|
F Makefile.in c4b55bbca70511d8757e38358dfbc06dd74abd51d61bf4939d2caea023c9b97b
|
||||||
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
|
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
|
||||||
F Makefile.msc 93f8f1352fe1a03249a0f7a24c42df04fef01a74a56fe309420b4b3931945bdf
|
F Makefile.msc 93f8f1352fe1a03249a0f7a24c42df04fef01a74a56fe309420b4b3931945bdf
|
||||||
F README.md 74745e53db87fdc86f571dd7ec1bd18e154d0abd6d37d2292a1062e931318a29
|
F README.md 1514a365ffca3c138e00c5cc839906108a01011a6b082bad19b09781e3aa498a
|
||||||
F VERSION cc8cd90333c65cdf4cb346f356a2ce1eb0f5b7fa1d17a34d7350103e7320af1f
|
F VERSION cc8cd90333c65cdf4cb346f356a2ce1eb0f5b7fa1d17a34d7350103e7320af1f
|
||||||
F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
|
F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
|
||||||
F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2
|
F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2
|
||||||
@@ -100,7 +100,7 @@ F ext/fts3/fts3_tokenizer.h 64c6ef6c5272c51ebe60fc607a896e84288fcbc3
|
|||||||
F ext/fts3/fts3_tokenizer1.c 5c98225a53705e5ee34824087478cf477bdb7004
|
F ext/fts3/fts3_tokenizer1.c 5c98225a53705e5ee34824087478cf477bdb7004
|
||||||
F ext/fts3/fts3_unicode.c 4b9af6151c29b35ed09574937083cece7c31e911f69615e168a39677569b684d
|
F ext/fts3/fts3_unicode.c 4b9af6151c29b35ed09574937083cece7c31e911f69615e168a39677569b684d
|
||||||
F ext/fts3/fts3_unicode2.c 416eb7e1e81142703520d284b768ca2751d40e31fa912cae24ba74860532bf0f
|
F ext/fts3/fts3_unicode2.c 416eb7e1e81142703520d284b768ca2751d40e31fa912cae24ba74860532bf0f
|
||||||
F ext/fts3/fts3_write.c 766cfc4140c5609c5178b087697ccc5f5650bd915f3c6718f1547b3e994f674b
|
F ext/fts3/fts3_write.c 05fd879124769bb59af4263c63a4c5bd6370e49b6dc906208150e3ad29ebf813
|
||||||
F ext/fts3/fts3speed.tcl b54caf6a18d38174f1a6e84219950d85e98bb1e9
|
F ext/fts3/fts3speed.tcl b54caf6a18d38174f1a6e84219950d85e98bb1e9
|
||||||
F ext/fts3/mkfts3amal.tcl 252ecb7fe6467854f2aa237bf2c390b74e71f100
|
F ext/fts3/mkfts3amal.tcl 252ecb7fe6467854f2aa237bf2c390b74e71f100
|
||||||
F ext/fts3/tool/fts3cov.sh c331d006359456cf6f8f953e37f2b9c7d568f3863f00bb5f7eb87fea4ac01b73
|
F ext/fts3/tool/fts3cov.sh c331d006359456cf6f8f953e37f2b9c7d568f3863f00bb5f7eb87fea4ac01b73
|
||||||
@@ -117,7 +117,7 @@ F ext/fts5/fts5_buffer.c 5a5fe0159752c0fb0a5a93c722e9db2662822709490769d482b76a6
|
|||||||
F ext/fts5/fts5_config.c d7523cba5e66da077233c023aecbc3e6a37978ff75a18131c5ab5b1229d5bac7
|
F ext/fts5/fts5_config.c d7523cba5e66da077233c023aecbc3e6a37978ff75a18131c5ab5b1229d5bac7
|
||||||
F ext/fts5/fts5_expr.c 840c88d55e78083a5e61a35968df877712ae28791b347eced1e98e3b337d2d3c
|
F ext/fts5/fts5_expr.c 840c88d55e78083a5e61a35968df877712ae28791b347eced1e98e3b337d2d3c
|
||||||
F ext/fts5/fts5_hash.c 1cc0095646f5f3b46721aa112fb4f9bf29ae175cb5338f89dcec66ed97acfe75
|
F ext/fts5/fts5_hash.c 1cc0095646f5f3b46721aa112fb4f9bf29ae175cb5338f89dcec66ed97acfe75
|
||||||
F ext/fts5/fts5_index.c f417615c657e5869649c605baaf38b1343e12f9556f9472159c3f837f856e4e8
|
F ext/fts5/fts5_index.c 5a89e0341297fade9a8f2c7aecc1ebd2e7e0989da84ece4d287a153da73cf0e6
|
||||||
F ext/fts5/fts5_main.c abd04720e2729ba5bab2648d9d541faab18f45d481ae21fc30f125b55e979d6b
|
F ext/fts5/fts5_main.c abd04720e2729ba5bab2648d9d541faab18f45d481ae21fc30f125b55e979d6b
|
||||||
F ext/fts5/fts5_storage.c b24f6916fcdd68989a549f25962f286bdba9d9d59c7581567a6a0eb647cd07cc
|
F ext/fts5/fts5_storage.c b24f6916fcdd68989a549f25962f286bdba9d9d59c7581567a6a0eb647cd07cc
|
||||||
F ext/fts5/fts5_tcl.c 39bcbae507f594aad778172fa914cad0f585bf92fd3b078c686e249282db0d95
|
F ext/fts5/fts5_tcl.c 39bcbae507f594aad778172fa914cad0f585bf92fd3b078c686e249282db0d95
|
||||||
@@ -158,7 +158,8 @@ F ext/fts5/test/fts5connect.test 08030168fc96fc278fa81f28654fb7e90566f33aff269c0
|
|||||||
F ext/fts5/test/fts5content.test 688d5ac7af194ebc67495daea76a69e3cd5480122c2320e72d41241b423b4116
|
F ext/fts5/test/fts5content.test 688d5ac7af194ebc67495daea76a69e3cd5480122c2320e72d41241b423b4116
|
||||||
F ext/fts5/test/fts5corrupt.test 77ae6f41a7eba10620efb921cf7dbe218b0ef232b04519deb43581cb17a57ebe
|
F ext/fts5/test/fts5corrupt.test 77ae6f41a7eba10620efb921cf7dbe218b0ef232b04519deb43581cb17a57ebe
|
||||||
F ext/fts5/test/fts5corrupt2.test 7453752ba12ce91690c469a6449d412561cc604b1dec994e16ab132952e7805f
|
F ext/fts5/test/fts5corrupt2.test 7453752ba12ce91690c469a6449d412561cc604b1dec994e16ab132952e7805f
|
||||||
F ext/fts5/test/fts5corrupt3.test 9f64bc23eff5c89d01fdbf2214bf05109d5759ebb32c07d9740175fb80e2f89d
|
F ext/fts5/test/fts5corrupt3.test ee32b76e1b4beae8051f0bd5bc9cc9609667fdaed87886eda69b96b305d21897
|
||||||
|
F ext/fts5/test/fts5corrupt4.test ea805c4d7c68b5f185b9db5d2060a7ae5875339738dd48203c92162f41e7ca91
|
||||||
F ext/fts5/test/fts5delete.test cbf87e3b8867c4d5cfcaed975c7475fd3f99d072bce2075fcedf43d1f82af775
|
F ext/fts5/test/fts5delete.test cbf87e3b8867c4d5cfcaed975c7475fd3f99d072bce2075fcedf43d1f82af775
|
||||||
F ext/fts5/test/fts5detail.test 31b240dbf6d44ac3507e2f8b65f29fdc12465ffd531212378c7ce1066766f54e
|
F ext/fts5/test/fts5detail.test 31b240dbf6d44ac3507e2f8b65f29fdc12465ffd531212378c7ce1066766f54e
|
||||||
F ext/fts5/test/fts5determin.test 1b77879b2ae818b5b71c859e534ee334dac088b7cf3ff3bf76a2c82b1c788d11
|
F ext/fts5/test/fts5determin.test 1b77879b2ae818b5b71c859e534ee334dac088b7cf3ff3bf76a2c82b1c788d11
|
||||||
@@ -435,7 +436,7 @@ F ext/session/sessioninvert.test ae1a003a9ab1f8d64227dbb5c3a4c97e65b561b01e7b295
|
|||||||
F ext/session/sessionrebase.test ccfa716b23bd1d3b03217ee58cfd90c78d4b99f53e6a9a2f05e82363b9142810
|
F ext/session/sessionrebase.test ccfa716b23bd1d3b03217ee58cfd90c78d4b99f53e6a9a2f05e82363b9142810
|
||||||
F ext/session/sessionstat1.test 218d351cf9fcd6648f125a26b607b140310160184723c2666091b54450a68fb5
|
F ext/session/sessionstat1.test 218d351cf9fcd6648f125a26b607b140310160184723c2666091b54450a68fb5
|
||||||
F ext/session/sessionwor.test 67b5ab91d4f93ce65ff1f58240ac5ddf73f8670facc1ffa49cef56293d52818d
|
F ext/session/sessionwor.test 67b5ab91d4f93ce65ff1f58240ac5ddf73f8670facc1ffa49cef56293d52818d
|
||||||
F ext/session/sqlite3session.c 12c958dcd093fca229ca3d3fd833f2f99f1d9c70093dca60f697d5f8e20ebde1
|
F ext/session/sqlite3session.c 3d9d3a414be386b87d83e642f4d93c8cbe83fe7b975d17b398f96caa1bfdc2cf
|
||||||
F ext/session/sqlite3session.h 919be6649d39d6413ce7a63fc3e3bca3270e18bc2d57ad4040a70007b9e54397
|
F ext/session/sqlite3session.h 919be6649d39d6413ce7a63fc3e3bca3270e18bc2d57ad4040a70007b9e54397
|
||||||
F ext/session/test_session.c 98797aba475a799376c9a42214f2d1debf2d0c3cb657d9c8bbf4f70bf3fb4aec
|
F ext/session/test_session.c 98797aba475a799376c9a42214f2d1debf2d0c3cb657d9c8bbf4f70bf3fb4aec
|
||||||
F ext/userauth/sqlite3userauth.h 7f3ea8c4686db8e40b0a0e7a8e0b00fac13aa7a3
|
F ext/userauth/sqlite3userauth.h 7f3ea8c4686db8e40b0a0e7a8e0b00fac13aa7a3
|
||||||
@@ -463,10 +464,10 @@ F src/auth.c 0fac71038875693a937e506bceb492c5f136dd7b1249fbd4ae70b4e8da14f9df
|
|||||||
F src/backup.c b1d37f6f7f5913944583733ed0f9e182f3ece0d42c27f46701142141a6e6fd33
|
F src/backup.c b1d37f6f7f5913944583733ed0f9e182f3ece0d42c27f46701142141a6e6fd33
|
||||||
F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33
|
F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33
|
||||||
F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6
|
F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6
|
||||||
F src/btree.c 5e15f903fd44b076b864a8d2449d63b44a546efabb66fca7dfed90f106f5c756
|
F src/btree.c 1dbc191e5c1d9bca84a956fed5d73924c574ae5390855009f067bd0f6422e462
|
||||||
F src/btree.h c11446f07ec0e9dc85af8041cb0855c52f5359c8b2a43e47e02a685282504d89
|
F src/btree.h c11446f07ec0e9dc85af8041cb0855c52f5359c8b2a43e47e02a685282504d89
|
||||||
F src/btreeInt.h 6111c15868b90669f79081039d19e7ea8674013f907710baa3c814dc3f8bfd3f
|
F src/btreeInt.h 6111c15868b90669f79081039d19e7ea8674013f907710baa3c814dc3f8bfd3f
|
||||||
F src/build.c ae462f7766fa342ad6700f958111a0028253709ed0c2e01a458bf575e49b44fe
|
F src/build.c 20965f9b0674fa32777af179e71c733070967660427d3aa4462fcdc9aa370c82
|
||||||
F src/callback.c 5a9a83d7cecce452902da0a24bf51f6e4d232b5dc54b67418276ca9ad82c5bde
|
F src/callback.c 5a9a83d7cecce452902da0a24bf51f6e4d232b5dc54b67418276ca9ad82c5bde
|
||||||
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
|
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
|
||||||
F src/ctime.c 109e58d00f62e8e71ee1eb5944ac18b90171c928ab2e082e058056e1137cc20b
|
F src/ctime.c 109e58d00f62e8e71ee1eb5944ac18b90171c928ab2e082e058056e1137cc20b
|
||||||
@@ -474,7 +475,7 @@ F src/date.c ebe1dc7c8a347117bb02570f1a931c62dd78f4a2b1b516f4837d45b7d6426957
|
|||||||
F src/dbpage.c 135eb3b5e74f9ef74bde5cec2571192c90c86984fa534c88bf4a055076fa19b7
|
F src/dbpage.c 135eb3b5e74f9ef74bde5cec2571192c90c86984fa534c88bf4a055076fa19b7
|
||||||
F src/dbstat.c c12833de69cb655751487d2c5a59607e36be1c58ba1f4bd536609909ad47b319
|
F src/dbstat.c c12833de69cb655751487d2c5a59607e36be1c58ba1f4bd536609909ad47b319
|
||||||
F src/delete.c d08c9e01a2664afd12edcfa3a9c6578517e8ff8735f35509582693adbe0edeaf
|
F src/delete.c d08c9e01a2664afd12edcfa3a9c6578517e8ff8735f35509582693adbe0edeaf
|
||||||
F src/expr.c a41e5a03d60e2d99a8eac1535f21258e3833b29a3f52789e76284d97b54bed5f
|
F src/expr.c 6b18f022871816c80b772abc3657276562630004b48f588085b404f104fd4430
|
||||||
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
|
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
|
||||||
F src/fkey.c 4b54ea67779fb17590861382acc0243d05bde9f3ce680504506db2f5428ee00e
|
F src/fkey.c 4b54ea67779fb17590861382acc0243d05bde9f3ce680504506db2f5428ee00e
|
||||||
F src/func.c 08d6d07d138735dd79f12a2b0c623d1dc9270d0eea61b8be584625391ef84475
|
F src/func.c 08d6d07d138735dd79f12a2b0c623d1dc9270d0eea61b8be584625391ef84475
|
||||||
@@ -511,23 +512,23 @@ F src/os_win.c 85d9e532d0444ab6c16d7431490c2e279e282aa0917b0e988996b1ae0de5c5a0
|
|||||||
F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
|
F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
|
||||||
F src/pager.c 422fd8cfa59fb9173eff36a95878904a0eeb0dcc62ba49350acc8b1e51c4dc7b
|
F src/pager.c 422fd8cfa59fb9173eff36a95878904a0eeb0dcc62ba49350acc8b1e51c4dc7b
|
||||||
F src/pager.h 217921e81eb5fe455caa5cda96061959706bcdd29ddb57166198645ef7822ac3
|
F src/pager.h 217921e81eb5fe455caa5cda96061959706bcdd29ddb57166198645ef7822ac3
|
||||||
F src/parse.y 22f64d8a8910acd17580450513b58d64187b0962848380c7f0a39376b8a48cee
|
F src/parse.y 91f76f436db1c0ed3cc8a82ba6c945a592dc24a036f0ff7b48313bd80977d382
|
||||||
F src/pcache.c 696a01f1a6370c1b50a09c15972bc3bee3333f8fcd1f2da8e9a76b1b062c59ee
|
F src/pcache.c 696a01f1a6370c1b50a09c15972bc3bee3333f8fcd1f2da8e9a76b1b062c59ee
|
||||||
F src/pcache.h 4f87acd914cef5016fae3030343540d75f5b85a1877eed1a2a19b9f284248586
|
F src/pcache.h 4f87acd914cef5016fae3030343540d75f5b85a1877eed1a2a19b9f284248586
|
||||||
F src/pcache1.c be64b2f3908a7f97c56c963676eb12f0d6254c95b28cdc1d73a186eff213219d
|
F src/pcache1.c be64b2f3908a7f97c56c963676eb12f0d6254c95b28cdc1d73a186eff213219d
|
||||||
F src/pragma.c 5e8c63fd746a6a521c657b7d2ce02205286c6a0b90b9fdf3f682d8d8b9e7cd66
|
F src/pragma.c fb7d6499e1133c05b1fbd82b47383ab3763716ec46b614a273f7220f40fd73ea
|
||||||
F src/pragma.h 85a1a57c0c9f63f615cf4bde60f8a413a42e1931eef577dfa0e41934fca492bb
|
F src/pragma.h 089d20e01c735fcb9707f5947961008e4f0764b03f4a383ba1eacaa5b891fa6e
|
||||||
F src/prepare.c ed5110154bd7644665398b8e5801937f83af3a069c928244235462b5e3adcef3
|
F src/prepare.c ed5110154bd7644665398b8e5801937f83af3a069c928244235462b5e3adcef3
|
||||||
F src/printf.c 67f79227273a9009d86a017619717c3f554f50b371294526da59faa6014ed2cd
|
F src/printf.c 67f79227273a9009d86a017619717c3f554f50b371294526da59faa6014ed2cd
|
||||||
F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
|
F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
|
||||||
F src/resolve.c 408632d9531ca8f1df8591f00530797daaa7bde3fe0d3211de4d431cbb99347e
|
F src/resolve.c bae0a7562db77b02d87101b587819d5a5dcd8625e477d2d8a228a20bba4fead6
|
||||||
F src/rowset.c d977b011993aaea002cab3e0bb2ce50cf346000dff94e944d547b989f4b1fe93
|
F src/rowset.c d977b011993aaea002cab3e0bb2ce50cf346000dff94e944d547b989f4b1fe93
|
||||||
F src/select.c ef860c7e5882c89c030432a6d2cf13c67d1d51fd511cf45cbdfd5c2faf44d51d
|
F src/select.c ccd314a204ef27edadeb58faebc7ded1f967fa83d6b9b858cd422c80ef171643
|
||||||
F src/shell.c.in 9353bb93d04b31c823fdd9140beb10d7dc9f19c878d79f081fe08bdede11f6e7
|
F src/shell.c.in 9353bb93d04b31c823fdd9140beb10d7dc9f19c878d79f081fe08bdede11f6e7
|
||||||
F src/sqlite.h.in 66e5751c85cd2602213e86945adf26387dba919ac578e55eac0e9b08e453c914
|
F src/sqlite.h.in 4571ab9105a6b9f49d5f4ea5333025f298a41c955091767e4f67deb376a05b99
|
||||||
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
||||||
F src/sqlite3ext.h 9ecc93b8493bd20c0c07d52e2ac0ed8bab9b549c7f7955b59869597b650dd8b5
|
F src/sqlite3ext.h 9ecc93b8493bd20c0c07d52e2ac0ed8bab9b549c7f7955b59869597b650dd8b5
|
||||||
F src/sqliteInt.h b14459b20bfccd8e0a58d463b7df605908ffd4adc8a360c5ed15e98e95e0d828
|
F src/sqliteInt.h 193e2321cee819815369923fb1d4fb8279b6621d53689c735b02ffec52da5f78
|
||||||
F src/sqliteLimit.h 1513bfb7b20378aa0041e7022d04acb73525de35b80b252f1b83fedb4de6a76b
|
F src/sqliteLimit.h 1513bfb7b20378aa0041e7022d04acb73525de35b80b252f1b83fedb4de6a76b
|
||||||
F src/status.c d9f7d66ae8bee9ffbe4cf7ae72a8d3d429a269336dee1e705ecb3dbea27fa5e2
|
F src/status.c d9f7d66ae8bee9ffbe4cf7ae72a8d3d429a269336dee1e705ecb3dbea27fa5e2
|
||||||
F src/table.c b46ad567748f24a326d9de40e5b9659f96ffff34
|
F src/table.c b46ad567748f24a326d9de40e5b9659f96ffff34
|
||||||
@@ -595,13 +596,13 @@ F src/upsert.c 0dd81b40206841814d46942a7337786932475f085716042d0cb2fc7791bf8ca4
|
|||||||
F src/utf.c 2f0fac345c7660d5c5bd3df9e9d8d33d4c27f366bcfb09e07443064d751a0507
|
F src/utf.c 2f0fac345c7660d5c5bd3df9e9d8d33d4c27f366bcfb09e07443064d751a0507
|
||||||
F src/util.c 4c0669e042b4e50a08a9e5fd14cecc76e5f877efa288533dccddb6fe98f4d6b5
|
F src/util.c 4c0669e042b4e50a08a9e5fd14cecc76e5f877efa288533dccddb6fe98f4d6b5
|
||||||
F src/vacuum.c 5b9b4771ffb47aaef038c4ad5f1acd76dfbc9e0a4f101c1ba7f7ac9c2ba96374
|
F src/vacuum.c 5b9b4771ffb47aaef038c4ad5f1acd76dfbc9e0a4f101c1ba7f7ac9c2ba96374
|
||||||
F src/vdbe.c 28d2d2a821c8b2b125c0f3bad976cb50db384f8c912eb1c7676ca96828f9cd2e
|
F src/vdbe.c 2a543ecb92ed1caedfac17038a65d7454b9a82bb8c8e3591078c351ac08b9d92
|
||||||
F src/vdbe.h 323218c4bfd64c719ba85d05fbc87cdd126991cadb39e73ccac7b59f30c3d53e
|
F src/vdbe.h 323218c4bfd64c719ba85d05fbc87cdd126991cadb39e73ccac7b59f30c3d53e
|
||||||
F src/vdbeInt.h 3ba14553508d66f58753952d6dd287dce4ec735de02c6440858b4891aed51c17
|
F src/vdbeInt.h 3ba14553508d66f58753952d6dd287dce4ec735de02c6440858b4891aed51c17
|
||||||
F src/vdbeapi.c f9161e5c77f512fbb80091ce8af621d19c9556bda5e734cffaac1198407400da
|
F src/vdbeapi.c f9161e5c77f512fbb80091ce8af621d19c9556bda5e734cffaac1198407400da
|
||||||
F src/vdbeaux.c 95cabb0e8c49b762f4ced25a54b38036a3975e65140e623ce034979cc3e7d93b
|
F src/vdbeaux.c 198ca785169ee9ec903f642b19cd3db7b70bd850c1cc2b275c86b1b6fd993a11
|
||||||
F src/vdbeblob.c 08e58c6bef990008b8c2dbad4c99c56d3b622ee79433004484cce29b536e2ab9
|
F src/vdbeblob.c 08e58c6bef990008b8c2dbad4c99c56d3b622ee79433004484cce29b536e2ab9
|
||||||
F src/vdbemem.c b76b42ac9d6a36fc55a0797929fc94cc33e1334eea2792f5ee1eef868ce13320
|
F src/vdbemem.c e9a0aa2feb93356333bcd94491c25bac041e63e3d87e4caac67fde742dd2deba
|
||||||
F src/vdbesort.c 66592d478dbb46f19aed0b42222325eadb84deb40a90eebe25c6e7c1d8468f47
|
F src/vdbesort.c 66592d478dbb46f19aed0b42222325eadb84deb40a90eebe25c6e7c1d8468f47
|
||||||
F src/vdbetrace.c fa3bf238002f0bbbdfb66cc8afb0cea284ff9f148d6439bc1f6f2b4c3b7143f0
|
F src/vdbetrace.c fa3bf238002f0bbbdfb66cc8afb0cea284ff9f148d6439bc1f6f2b4c3b7143f0
|
||||||
F src/vtab.c 4bb7440736c84abc5500ab0bf4946db4f5e48775513d58b28df212043ba5c2d1
|
F src/vtab.c 4bb7440736c84abc5500ab0bf4946db4f5e48775513d58b28df212043ba5c2d1
|
||||||
@@ -726,7 +727,7 @@ F test/capi3d.test aba917805573a03deed961a21f07a5a84505ad0a616f7e3fc1508844a15bc
|
|||||||
F test/capi3e.test 3d49c01ef2a1a55f41d73cba2b23b5059ec460fe
|
F test/capi3e.test 3d49c01ef2a1a55f41d73cba2b23b5059ec460fe
|
||||||
F test/cast.test 5ceb920718d280b61163500a7d29e0e0a86458b1cbd92d96f962c9d970aa3857
|
F test/cast.test 5ceb920718d280b61163500a7d29e0e0a86458b1cbd92d96f962c9d970aa3857
|
||||||
F test/cffault.test 9d6b20606afe712374952eec4f8fd74b1a8097ef
|
F test/cffault.test 9d6b20606afe712374952eec4f8fd74b1a8097ef
|
||||||
F test/check.test 33a698e8c63613449d85d624a38ef669bf20331daabebe3891c9405dd6df463a
|
F test/check.test dcc952a127c394ce0de2aa634d26c78207e855327cc63a24d3638ca8fbfa641e
|
||||||
F test/close.test 799ea4599d2f5704b0a30f477d17c2c760d8523fa5d0c8be4a7df2a8cad787d8
|
F test/close.test 799ea4599d2f5704b0a30f477d17c2c760d8523fa5d0c8be4a7df2a8cad787d8
|
||||||
F test/closure01.test 9905883f1b171a4638f98fc764879f154e214a306d3d8daf412a15e7f3a9b1e0
|
F test/closure01.test 9905883f1b171a4638f98fc764879f154e214a306d3d8daf412a15e7f3a9b1e0
|
||||||
F test/coalesce.test cee0dccb9fbd2d494b77234bccf9dc6c6786eb91
|
F test/coalesce.test cee0dccb9fbd2d494b77234bccf9dc6c6786eb91
|
||||||
@@ -767,10 +768,10 @@ F test/corruptH.test 79801d97ec5c2f9f3c87739aa1ec2eb786f96454
|
|||||||
F test/corruptI.test a17bbf54fdde78d43cf3cc34b0057719fd4a173a3d824285b67dc5257c064c7b
|
F test/corruptI.test a17bbf54fdde78d43cf3cc34b0057719fd4a173a3d824285b67dc5257c064c7b
|
||||||
F test/corruptJ.test 4d5ccc4bf959464229a836d60142831ef76a5aa4
|
F test/corruptJ.test 4d5ccc4bf959464229a836d60142831ef76a5aa4
|
||||||
F test/corruptK.test 5b4212fe346699831c5ad559a62c54e11c0611bdde1ea8423a091f9c01aa32af
|
F test/corruptK.test 5b4212fe346699831c5ad559a62c54e11c0611bdde1ea8423a091f9c01aa32af
|
||||||
F test/corruptL.test b6ea0f657b26a8fe10405a9f5970f94de47fdfcc02fce2a635954aef13e55a88
|
F test/corruptL.test 15882a75d06de29df9ad33a3503eb0fe21efbd1afcd676949c0d82e1f4e55360
|
||||||
F test/cost.test 51f4fcaae6e78ad5a57096831259ed6c760e2ac6876836e91c00030fad385b34
|
F test/cost.test 51f4fcaae6e78ad5a57096831259ed6c760e2ac6876836e91c00030fad385b34
|
||||||
F test/count.test cb2e0f934c6eb33670044520748d2ecccd46259c
|
F test/count.test cb2e0f934c6eb33670044520748d2ecccd46259c
|
||||||
F test/countofview.test e3d4cd6900e4e4f074968ab24b8b87d3671cd624961bef40fd3a6b8f574343cf
|
F test/countofview.test e17d6e6688cf74f22783c9ec6e788c0790ee4fbbaee713affd00b1ac0bb39b86
|
||||||
F test/coveridxscan.test 5ec98719a2e2914e8908dc75f7247d9b54a26df04625f846ac7900d5483f7296
|
F test/coveridxscan.test 5ec98719a2e2914e8908dc75f7247d9b54a26df04625f846ac7900d5483f7296
|
||||||
F test/crash.test fb9dc4a02dcba30d4aa5c2c226f98b220b2b959f
|
F test/crash.test fb9dc4a02dcba30d4aa5c2c226f98b220b2b959f
|
||||||
F test/crash2.test 5b14d4eb58b880e231361d3b609b216acda86651
|
F test/crash2.test 5b14d4eb58b880e231361d3b609b216acda86651
|
||||||
@@ -850,6 +851,7 @@ F test/exclusive2.test 984090e8e9d1b331d2e8111daf6e5d61dda0bef7
|
|||||||
F test/exec.test e949714dc127eaa5ecc7d723efec1ec27118fdd7
|
F test/exec.test e949714dc127eaa5ecc7d723efec1ec27118fdd7
|
||||||
F test/exists.test 79a75323c78f02bbe9c251ea502a092f9ef63dac
|
F test/exists.test 79a75323c78f02bbe9c251ea502a092f9ef63dac
|
||||||
F test/expr.test 7cb55e80aeb41d65fec968c08212505123063fea60bdc355d764d747670e9eea
|
F test/expr.test 7cb55e80aeb41d65fec968c08212505123063fea60bdc355d764d747670e9eea
|
||||||
|
F test/expr2.test c27327ae9c017a7ff6280123f67aff496f912da74d78c888926d68b46ec75fd8
|
||||||
F test/extension01.test 00d13cec817f331a687a243e0e5a2d87b0e358c9
|
F test/extension01.test 00d13cec817f331a687a243e0e5a2d87b0e358c9
|
||||||
F test/extraquick.test cb254400bd42bfb777ff675356aabf3287978f79
|
F test/extraquick.test cb254400bd42bfb777ff675356aabf3287978f79
|
||||||
F test/fallocate.test 37a62e396a68eeede8f8d2ecf23573a80faceb630788d314d0a073d862616717
|
F test/fallocate.test 37a62e396a68eeede8f8d2ecf23573a80faceb630788d314d0a073d862616717
|
||||||
@@ -929,7 +931,8 @@ F test/fts3conf.test c84bbaec81281c1788aa545ac6e78a6bd6cde2bdbbce2da261690e3659f
|
|||||||
F test/fts3corrupt.test 46b9ddda7f6588fd5a5b1f4bb4fc0618dc45010e7dddb8a3a188baf3197177ae
|
F test/fts3corrupt.test 46b9ddda7f6588fd5a5b1f4bb4fc0618dc45010e7dddb8a3a188baf3197177ae
|
||||||
F test/fts3corrupt2.test bf55c3fa0b0dc8ea1c0fe5543623bd27714585da6a129038fd6999fe3b0d25f3
|
F test/fts3corrupt2.test bf55c3fa0b0dc8ea1c0fe5543623bd27714585da6a129038fd6999fe3b0d25f3
|
||||||
F test/fts3corrupt3.test 0d5b69a0998b4adf868cc301fc78f3d0707745f1d984ce044c205cdb764b491f
|
F test/fts3corrupt3.test 0d5b69a0998b4adf868cc301fc78f3d0707745f1d984ce044c205cdb764b491f
|
||||||
F test/fts3corrupt4.test 72d8f1269f3ee1eb76fdf6133618225f7fc1abeece2d02456b292c90c822d78e
|
F test/fts3corrupt4.test e4c038936bca89cddfb8636a442a0a5f7e027a9f6d90f194491534a2d53ea31b
|
||||||
|
F test/fts3corrupt5.test 1911bd38381fe7eb28b204e7171937d09e113e5ceb018399ded9f42ec7e6ae66
|
||||||
F test/fts3cov.test cb932743da52a1c79a1ab8983e26c8121cf02263d6ff16e1f642e6f9b8348338
|
F test/fts3cov.test cb932743da52a1c79a1ab8983e26c8121cf02263d6ff16e1f642e6f9b8348338
|
||||||
F test/fts3d.test 2bd8c97bcb9975f2334147173b4872505b6a41359a4f9068960a36afe07a679f
|
F test/fts3d.test 2bd8c97bcb9975f2334147173b4872505b6a41359a4f9068960a36afe07a679f
|
||||||
F test/fts3defer.test f4c20e4c7153d20a98ee49ee5f3faef624fefc9a067f8d8d629db380c4d9f1de
|
F test/fts3defer.test f4c20e4c7153d20a98ee49ee5f3faef624fefc9a067f8d8d629db380c4d9f1de
|
||||||
@@ -1003,8 +1006,8 @@ F test/fuzzdata3.db c6586d3e3cef0fbc18108f9bb649aa77bfc38aba
|
|||||||
F test/fuzzdata4.db b502c7d5498261715812dd8b3c2005bad08b3a26e6489414bd13926cd3e42ed2
|
F test/fuzzdata4.db b502c7d5498261715812dd8b3c2005bad08b3a26e6489414bd13926cd3e42ed2
|
||||||
F test/fuzzdata5.db e35f64af17ec48926481cfaf3b3855e436bd40d1cfe2d59a9474cb4b748a52a5
|
F test/fuzzdata5.db e35f64af17ec48926481cfaf3b3855e436bd40d1cfe2d59a9474cb4b748a52a5
|
||||||
F test/fuzzdata6.db 92a80e4afc172c24f662a10a612d188fb272de4a9bd19e017927c95f737de6d7
|
F test/fuzzdata6.db 92a80e4afc172c24f662a10a612d188fb272de4a9bd19e017927c95f737de6d7
|
||||||
F test/fuzzdata7.db 2b13f8d7a4e475f164c733e64c9ebc459424ec58d0876ef103de62c1a99e2fca
|
F test/fuzzdata7.db babb1c560fef766171972c119c1bc3b7be20b134e2f46ae0c52390cd3059b6f4
|
||||||
F test/fuzzdata8.db ae3f4f364f798cd73b1769ca701878e40cbaa6fb8726a94148bce8062fada5c3
|
F test/fuzzdata8.db e7f7ac454c41df87408e591584e3980cd88f85bb2a8311075e93853d1b7e5b71
|
||||||
F test/fuzzer1.test 3d4c4b7e547aba5e5511a2991e3e3d07166cfbb8
|
F test/fuzzer1.test 3d4c4b7e547aba5e5511a2991e3e3d07166cfbb8
|
||||||
F test/fuzzer2.test a85ef814ce071293bce1ad8dffa217cbbaad4c14
|
F test/fuzzer2.test a85ef814ce071293bce1ad8dffa217cbbaad4c14
|
||||||
F test/fuzzerfault.test 8792cd77fd5bce765b05d0c8e01b9edcf8af8536
|
F test/fuzzerfault.test 8792cd77fd5bce765b05d0c8e01b9edcf8af8536
|
||||||
@@ -1041,12 +1044,12 @@ F test/index3.test 51685f39345462b84fcf77eb8537af847fdf438cc96b05c45d6aaca4e473a
|
|||||||
F test/index4.test ab92e736d5946840236cd61ac3191f91a7856bf6
|
F test/index4.test ab92e736d5946840236cd61ac3191f91a7856bf6
|
||||||
F test/index5.test 8621491915800ec274609e42e02a97d67e9b13e7
|
F test/index5.test 8621491915800ec274609e42e02a97d67e9b13e7
|
||||||
F test/index6.test a6cf96bb70bf57b2221e102060a18af46bc366f704722f410d6f42c13a75534a
|
F test/index6.test a6cf96bb70bf57b2221e102060a18af46bc366f704722f410d6f42c13a75534a
|
||||||
F test/index7.test be02a0b4e53ac4ad7db4995fe02b428597a2e104c4f574b0d4b2f6b082e96b28
|
F test/index7.test 2222ccd1858097f734d6ac3d39117334fd1cc26460f92fced4ef57cd15c940c1
|
||||||
F test/index8.test bc2e3db70e8e62459aaa1bd7e4a9b39664f8f9d7
|
F test/index8.test bc2e3db70e8e62459aaa1bd7e4a9b39664f8f9d7
|
||||||
F test/index9.test 0aa3e509dddf81f93380396e40e9bb386904c1054924ba8fa9bcdfe85a8e7721
|
F test/index9.test 0aa3e509dddf81f93380396e40e9bb386904c1054924ba8fa9bcdfe85a8e7721
|
||||||
F test/indexedby.test a52c8c6abfae4fbfb51d99440de4ca1840dbacc606b05e29328a2a8ba7cd914e
|
F test/indexedby.test a52c8c6abfae4fbfb51d99440de4ca1840dbacc606b05e29328a2a8ba7cd914e
|
||||||
F test/indexexpr1.test 635261197bcdc19b9b2c59bbfa7227d525c00e9587faddb2d293c44d287ce60e
|
F test/indexexpr1.test 635261197bcdc19b9b2c59bbfa7227d525c00e9587faddb2d293c44d287ce60e
|
||||||
F test/indexexpr2.test 38020c247ee77ba19322fadde99db84bdf2aef34f714866786563c3834bb2dce
|
F test/indexexpr2.test d319e7d1b1043403f39a20c892d512e02b5549c6004806b977030f2430c60208
|
||||||
F test/indexfault.test 98d78a8ff1f5335628b62f886a1cb7c7dac1ef6d48fa39c51ec871c87dce9811
|
F test/indexfault.test 98d78a8ff1f5335628b62f886a1cb7c7dac1ef6d48fa39c51ec871c87dce9811
|
||||||
F test/init.test 15c823093fdabbf7b531fe22cf037134d09587a7
|
F test/init.test 15c823093fdabbf7b531fe22cf037134d09587a7
|
||||||
F test/insert.test 9773604f8e1a2595f51488a5643c359d8a11dc55a11cb185910d93387d378458
|
F test/insert.test 9773604f8e1a2595f51488a5643c359d8a11dc55a11cb185910d93387d378458
|
||||||
@@ -1061,7 +1064,7 @@ F test/intarray.test 8319986182af37c8eb4879c6bfe9cf0074e9d43b193a4c728a0efa3417c
|
|||||||
F test/interrupt.test 16ea879ec728cb76414c148c5f24afd5d1f91054
|
F test/interrupt.test 16ea879ec728cb76414c148c5f24afd5d1f91054
|
||||||
F test/interrupt2.test e4408ca770a6feafbadb0801e54a0dcd1a8d108d
|
F test/interrupt2.test e4408ca770a6feafbadb0801e54a0dcd1a8d108d
|
||||||
F test/intpkey.test ac71107a49a06492b69b82aafaf225400598d3c8
|
F test/intpkey.test ac71107a49a06492b69b82aafaf225400598d3c8
|
||||||
F test/intreal.test 1d03e48c53224b69efc8cb7349f009e388c116790bfdb4d320b233d603aaba9a
|
F test/intreal.test 2c80b5c90c597e65c6606b333515261c73a534b6c527b7009e97ed6b78f8b79a
|
||||||
F test/io.test f95bca1783b01ea7761671560d023360d2dfa4cc
|
F test/io.test f95bca1783b01ea7761671560d023360d2dfa4cc
|
||||||
F test/ioerr.test 470fcc78e9cd352d162baf782fe301ea807d764241f58a48fc58109c2dfcdb6b
|
F test/ioerr.test 470fcc78e9cd352d162baf782fe301ea807d764241f58a48fc58109c2dfcdb6b
|
||||||
F test/ioerr2.test 2593563599e2cc6b6b4fcf5878b177bdd5d8df26
|
F test/ioerr2.test 2593563599e2cc6b6b4fcf5878b177bdd5d8df26
|
||||||
@@ -1074,12 +1077,12 @@ F test/join.test d53a3662762eff50b65da8775201e609878a27dd0885a1ae7bcde9bb46cecbc
|
|||||||
F test/join2.test 10f7047e723ebd68b2f47189be8eed20451a6f665d8bf46f1774c640d1062417
|
F test/join2.test 10f7047e723ebd68b2f47189be8eed20451a6f665d8bf46f1774c640d1062417
|
||||||
F test/join3.test 6f0c774ff1ba0489e6c88a3e77b9d3528fb4fda0
|
F test/join3.test 6f0c774ff1ba0489e6c88a3e77b9d3528fb4fda0
|
||||||
F test/join4.test 1a352e4e267114444c29266ce79e941af5885916
|
F test/join4.test 1a352e4e267114444c29266ce79e941af5885916
|
||||||
F test/join5.test f8b5ffdf3c1513486b52ad4e49225507ecee5005f210eb18688f791d25370972
|
F test/join5.test 3a96dc62f0b45402d7207e22d1993fe0c2fce1c57644a11439891dd62b990eb7
|
||||||
F test/join6.test cfe6503791ceb0cbb509966740286ec423cbf10b
|
F test/join6.test cfe6503791ceb0cbb509966740286ec423cbf10b
|
||||||
F test/journal1.test c7b768041b7f494471531e17abc2f4f5ebf9e5096984f43ed17c4eb80ba34497
|
F test/journal1.test c7b768041b7f494471531e17abc2f4f5ebf9e5096984f43ed17c4eb80ba34497
|
||||||
F test/journal2.test 9dac6b4ba0ca79c3b21446bbae993a462c2397c4
|
F test/journal2.test 9dac6b4ba0ca79c3b21446bbae993a462c2397c4
|
||||||
F test/journal3.test 939a3578396dffa0cdaa9b2685088c5a1a644db90d61aca08bd7e19d33932c00
|
F test/journal3.test 939a3578396dffa0cdaa9b2685088c5a1a644db90d61aca08bd7e19d33932c00
|
||||||
F test/jrnlmode.test a6693f2bed4541a21e703aaa37bb3e10de154130645952933b82b2dec0a8b539
|
F test/jrnlmode.test 9b5bc01dac22223cb60ec2d5f97acf568d73820794386de5634dcadbea9e1946
|
||||||
F test/jrnlmode2.test 8759a1d4657c064637f8b079592651530db738419e1d649c6df7048cd724363d
|
F test/jrnlmode2.test 8759a1d4657c064637f8b079592651530db738419e1d649c6df7048cd724363d
|
||||||
F test/jrnlmode3.test 556b447a05be0e0963f4311e95ab1632b11c9eaa
|
F test/jrnlmode3.test 556b447a05be0e0963f4311e95ab1632b11c9eaa
|
||||||
F test/json101.test 8f8977b00ba02f9a26c1d1f52f29f540f6d5eb162cbd5eb78bb805366d4ab26d
|
F test/json101.test 8f8977b00ba02f9a26c1d1f52f29f540f6d5eb162cbd5eb78bb805366d4ab26d
|
||||||
@@ -1213,7 +1216,7 @@ F test/pg_common.tcl 4740dc35190d6acdab14c097783331361301ab504a94d948f6afbb56ce0
|
|||||||
F test/pragma.test cf066fe0f7f5d49f4758de4986407b8676c61aaa7871599340d64f42a8edc352
|
F test/pragma.test cf066fe0f7f5d49f4758de4986407b8676c61aaa7871599340d64f42a8edc352
|
||||||
F test/pragma2.test e5d5c176360c321344249354c0c16aec46214c9f
|
F test/pragma2.test e5d5c176360c321344249354c0c16aec46214c9f
|
||||||
F test/pragma3.test 8300aa9c63cff1027006ca34bf413a148abbd6dcd471fa9a1ded322fe18c0df9
|
F test/pragma3.test 8300aa9c63cff1027006ca34bf413a148abbd6dcd471fa9a1ded322fe18c0df9
|
||||||
F test/pragma4.test 26b250531f1c58d9b6187b663f411cd6baf227a4afeffa8f75d0f4c101f4920d
|
F test/pragma4.test 1cb4b32f1a304ed9e291d7c4d49c91c2c8dc1b9450e6d2c1198b2cc895d40d77
|
||||||
F test/pragma5.test 824ce6ced5d6b7ec71abe37fc6005ff836fe39d638273dc5192b39864b9ee983
|
F test/pragma5.test 824ce6ced5d6b7ec71abe37fc6005ff836fe39d638273dc5192b39864b9ee983
|
||||||
F test/pragmafault.test 275edaf3161771d37de60e5c2b412627ac94cef11739236bec12ed1258b240f8
|
F test/pragmafault.test 275edaf3161771d37de60e5c2b412627ac94cef11739236bec12ed1258b240f8
|
||||||
F test/prefixes.test b524a1c44bffec225b9aec98bd728480352aa8532ac4c15771fb85e8beef65d9
|
F test/prefixes.test b524a1c44bffec225b9aec98bd728480352aa8532ac4c15771fb85e8beef65d9
|
||||||
@@ -1227,7 +1230,7 @@ F test/quick.test 1681febc928d686362d50057c642f77a02c62e57
|
|||||||
F test/quota-glob.test 32901e9eed6705d68ca3faee2a06b73b57cb3c26
|
F test/quota-glob.test 32901e9eed6705d68ca3faee2a06b73b57cb3c26
|
||||||
F test/quota.test bfb269ce81ea52f593f9648316cd5013d766dd2a
|
F test/quota.test bfb269ce81ea52f593f9648316cd5013d766dd2a
|
||||||
F test/quota2.test 7dc12e08b11cbc4c16c9ba2aa2e040ea8d8ab4b8
|
F test/quota2.test 7dc12e08b11cbc4c16c9ba2aa2e040ea8d8ab4b8
|
||||||
F test/quote.test 215897dbe8de1a6f701265836d6601cc6ed103e6
|
F test/quote.test 8258838e5135ff1034e4de929d14bfb5bdd73d2df5a2281404ae79d927b8fa70
|
||||||
F test/randexpr1.tcl 40dec52119ed3a2b8b2a773bce24b63a3a746459
|
F test/randexpr1.tcl 40dec52119ed3a2b8b2a773bce24b63a3a746459
|
||||||
F test/randexpr1.test eda062a97e60f9c38ae8d806b03b0ddf23d796df
|
F test/randexpr1.test eda062a97e60f9c38ae8d806b03b0ddf23d796df
|
||||||
F test/rbu.test 168573d353cd0fd10196b87b0caa322c144ef736
|
F test/rbu.test 168573d353cd0fd10196b87b0caa322c144ef736
|
||||||
@@ -1608,7 +1611,7 @@ F test/vacuum5.test 263b144d537e92ad8e9ca8a73cc6e1583f41cfd0dda9432b87f7806174a2
|
|||||||
F test/vacuummem.test 7b42abb3208bd82dd23a7536588396f295a314f2
|
F test/vacuummem.test 7b42abb3208bd82dd23a7536588396f295a314f2
|
||||||
F test/varint.test bbce22cda8fc4d135bcc2b589574be8410614e62
|
F test/varint.test bbce22cda8fc4d135bcc2b589574be8410614e62
|
||||||
F test/veryquick.test 57ab846bacf7b90cf4e9a672721ea5c5b669b661
|
F test/veryquick.test 57ab846bacf7b90cf4e9a672721ea5c5b669b661
|
||||||
F test/view.test ee9262cee79c7f4002fd2869887d3e8eccf70d9a4e1016f847242851edb18964
|
F test/view.test 40d54c9ddf5b9fdee692bf936d3352159fe467838f92742aa1d08c7c7d1eac73
|
||||||
F test/vtab1.test 60b4f70aafa6078d6fdfc11417af3bd216d7ef5eafce16707a6ca3dae5166d20
|
F test/vtab1.test 60b4f70aafa6078d6fdfc11417af3bd216d7ef5eafce16707a6ca3dae5166d20
|
||||||
F test/vtab2.test 14d4ab26cee13ba6cf5c5601b158e4f57552d3b055cdd9406cf7f711e9c84082
|
F test/vtab2.test 14d4ab26cee13ba6cf5c5601b158e4f57552d3b055cdd9406cf7f711e9c84082
|
||||||
F test/vtab3.test b45f47d20f225ccc9c28dc915d92740c2dee311e
|
F test/vtab3.test b45f47d20f225ccc9c28dc915d92740c2dee311e
|
||||||
@@ -1714,7 +1717,7 @@ F test/window8.test df187dc19921f7be0ab709d531d681bd80ccaac96a913a89ecee8b272b91
|
|||||||
F test/windowerr.tcl abf4d6d0c6d360213af98ed7d538295d905689e83692106f3ece0e3afb9d7f36
|
F test/windowerr.tcl abf4d6d0c6d360213af98ed7d538295d905689e83692106f3ece0e3afb9d7f36
|
||||||
F test/windowerr.test 675b5e6debfc9370bfacb0b91e2a93a8923512f92600b16f4ea70a1cd9b8e6e4
|
F test/windowerr.test 675b5e6debfc9370bfacb0b91e2a93a8923512f92600b16f4ea70a1cd9b8e6e4
|
||||||
F test/windowfault.test 16e906a2c4110c88372ff4bd5de59ac7397ec2f025912eff8e5677eedd126898
|
F test/windowfault.test 16e906a2c4110c88372ff4bd5de59ac7397ec2f025912eff8e5677eedd126898
|
||||||
F test/with1.test a07b5aad7f77acdf13e52e8814ea94606fcc72e9ea4c99baf293e9d7c63940be
|
F test/with1.test d32792084dcb5f6c047d77bb8a032822ef9fe050ade07d0aeffa37753a05e3c9
|
||||||
F test/with2.test e0030e2f0267a910d6c0e4f46f2dfe941c1cc0d4f659ba69b3597728e7e8f1ab
|
F test/with2.test e0030e2f0267a910d6c0e4f46f2dfe941c1cc0d4f659ba69b3597728e7e8f1ab
|
||||||
F test/with3.test b5f1372097690c6ef84db2f13fc7e64a88c7263c3f88493605f90597e8a68d45
|
F test/with3.test b5f1372097690c6ef84db2f13fc7e64a88c7263c3f88493605f90597e8a68d45
|
||||||
F test/with4.test 257be66c0c67fee1defbbac0f685c3465e2cad037f21ce65f23f86084f198205
|
F test/with4.test 257be66c0c67fee1defbbac0f685c3465e2cad037f21ce65f23f86084f198205
|
||||||
@@ -1766,7 +1769,7 @@ F tool/mkmsvcmin.tcl cad0c7b54d7dd92bc87d59f36d4cc4f070eb2e625f14159dc2f5c4204e6
|
|||||||
F tool/mkopcodec.tcl d1b6362bd3aa80d5520d4d6f3765badf01f6c43c
|
F tool/mkopcodec.tcl d1b6362bd3aa80d5520d4d6f3765badf01f6c43c
|
||||||
F tool/mkopcodeh.tcl 352a4319c0ad869eb26442bf7c3b015aa15594c21f1cce5a6420dbe999367c21
|
F tool/mkopcodeh.tcl 352a4319c0ad869eb26442bf7c3b015aa15594c21f1cce5a6420dbe999367c21
|
||||||
F tool/mkopts.tcl 680f785fdb09729fd9ac50632413da4eadbdf9071535e3f26d03795828ab07fa
|
F tool/mkopts.tcl 680f785fdb09729fd9ac50632413da4eadbdf9071535e3f26d03795828ab07fa
|
||||||
F tool/mkpragmatab.tcl 34f68553b3903fda0707fa282dd6eb267de07dbafd1f05342014a82f87fc8a96
|
F tool/mkpragmatab.tcl 15241b904c222876bedbbad42ba2fa529bd2cc20e6fbdf51cbed3a5837465069
|
||||||
F tool/mkshellc.tcl 70a9978e363b0f3280ca9ce1c46d72563ff479c1930a12a7375e3881b7325712
|
F tool/mkshellc.tcl 70a9978e363b0f3280ca9ce1c46d72563ff479c1930a12a7375e3881b7325712
|
||||||
F tool/mksourceid.c d458f9004c837bee87a6382228ac20d3eae3c49ea3b0a5aace936f8b60748d3b
|
F tool/mksourceid.c d458f9004c837bee87a6382228ac20d3eae3c49ea3b0a5aace936f8b60748d3b
|
||||||
F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97
|
F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97
|
||||||
@@ -1833,7 +1836,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P 5c6c9e7f6f83d565b317e3442e8bc664478adb407fe416d068fe0dcd17ffa5b5 bc7d2c1656396bb4f5f1f814e60dbf816cc91c5a521b54ad593cd3da0fe8dcb4
|
P 018f3199b9ba043fbbf88ec46b4fa16728f6507e000f4813ed346aaf6665add6 600daa9c27206628bf74892376ded35dac11fe0a34894fcd975ad5041a0a0fda
|
||||||
R 253230c497ea5d35d5c003fbd477012b
|
R 21e8d841a6b695c86650d17fadc07cff
|
||||||
U drh
|
U drh
|
||||||
Z fae651c1a82209099a4f420d4dbb336e
|
Z 52e0caacf1d07985fdb6419efd891d6a
|
||||||
|
@@ -1 +1 @@
|
|||||||
018f3199b9ba043fbbf88ec46b4fa16728f6507e000f4813ed346aaf6665add6
|
ff9f3e09510b4418cb166fa2557598a279e7baedc315a5d1c3ae63beb92c238d
|
@@ -5524,6 +5524,7 @@ int sqlite3BtreeMovetoUnpacked(
|
|||||||
** case this happens. */
|
** case this happens. */
|
||||||
void *pCellKey;
|
void *pCellKey;
|
||||||
u8 * const pCellBody = pCell - pPage->childPtrSize;
|
u8 * const pCellBody = pCell - pPage->childPtrSize;
|
||||||
|
const int nOverrun = 18; /* Size of the overrun padding */
|
||||||
pPage->xParseCell(pPage, pCellBody, &pCur->info);
|
pPage->xParseCell(pPage, pCellBody, &pCur->info);
|
||||||
nCell = (int)pCur->info.nKey;
|
nCell = (int)pCur->info.nKey;
|
||||||
testcase( nCell<0 ); /* True if key size is 2^32 or more */
|
testcase( nCell<0 ); /* True if key size is 2^32 or more */
|
||||||
@@ -5534,13 +5535,14 @@ int sqlite3BtreeMovetoUnpacked(
|
|||||||
rc = SQLITE_CORRUPT_PAGE(pPage);
|
rc = SQLITE_CORRUPT_PAGE(pPage);
|
||||||
goto moveto_finish;
|
goto moveto_finish;
|
||||||
}
|
}
|
||||||
pCellKey = sqlite3Malloc( nCell+18 );
|
pCellKey = sqlite3Malloc( nCell+nOverrun );
|
||||||
if( pCellKey==0 ){
|
if( pCellKey==0 ){
|
||||||
rc = SQLITE_NOMEM_BKPT;
|
rc = SQLITE_NOMEM_BKPT;
|
||||||
goto moveto_finish;
|
goto moveto_finish;
|
||||||
}
|
}
|
||||||
pCur->ix = (u16)idx;
|
pCur->ix = (u16)idx;
|
||||||
rc = accessPayload(pCur, 0, nCell, (unsigned char*)pCellKey, 0);
|
rc = accessPayload(pCur, 0, nCell, (unsigned char*)pCellKey, 0);
|
||||||
|
memset(((u8*)pCellKey)+nCell,0,nOverrun); /* Fix uninit warnings */
|
||||||
pCur->curFlags &= ~BTCF_ValidOvfl;
|
pCur->curFlags &= ~BTCF_ValidOvfl;
|
||||||
if( rc ){
|
if( rc ){
|
||||||
sqlite3_free(pCellKey);
|
sqlite3_free(pCellKey);
|
||||||
|
@@ -3106,6 +3106,14 @@ static void sqlite3RefillIndex(Parse *pParse, Index *pIndex, int memRootPage){
|
|||||||
sqlite3UniqueConstraint(pParse, OE_Abort, pIndex);
|
sqlite3UniqueConstraint(pParse, OE_Abort, pIndex);
|
||||||
sqlite3VdbeJumpHere(v, j2);
|
sqlite3VdbeJumpHere(v, j2);
|
||||||
}else{
|
}else{
|
||||||
|
/* Most CREATE INDEX and REINDEX statements that are not UNIQUE can not
|
||||||
|
** abort. The exception is if one of the indexed expressions contains a
|
||||||
|
** user function that throws an exception when it is evaluated. But the
|
||||||
|
** overhead of adding a statement journal to a CREATE INDEX statement is
|
||||||
|
** very small (since most of the pages written do not contain content that
|
||||||
|
** needs to be restored if the statement aborts), so we call
|
||||||
|
** sqlite3MayAbort() for all CREATE INDEX statements. */
|
||||||
|
sqlite3MayAbort(pParse);
|
||||||
addr2 = sqlite3VdbeCurrentAddr(v);
|
addr2 = sqlite3VdbeCurrentAddr(v);
|
||||||
}
|
}
|
||||||
sqlite3VdbeAddOp3(v, OP_SorterData, iSorter, regRecord, iIdx);
|
sqlite3VdbeAddOp3(v, OP_SorterData, iSorter, regRecord, iIdx);
|
||||||
|
@@ -2808,6 +2808,7 @@ void sqlite3CodeRhsOfIN(
|
|||||||
*/
|
*/
|
||||||
if( addrOnce && !sqlite3ExprIsConstant(pE2) ){
|
if( addrOnce && !sqlite3ExprIsConstant(pE2) ){
|
||||||
sqlite3VdbeChangeToNoop(v, addrOnce);
|
sqlite3VdbeChangeToNoop(v, addrOnce);
|
||||||
|
ExprClearProperty(pExpr, EP_Subrtn);
|
||||||
addrOnce = 0;
|
addrOnce = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4861,6 +4862,7 @@ int sqlite3ExprCompare(Parse *pParse, Expr *pA, Expr *pB, int iTab){
|
|||||||
&& (combinedFlags & EP_Reduced)==0
|
&& (combinedFlags & EP_Reduced)==0
|
||||||
){
|
){
|
||||||
if( pA->iColumn!=pB->iColumn ) return 2;
|
if( pA->iColumn!=pB->iColumn ) return 2;
|
||||||
|
if( pA->op2!=pB->op2 ) return 2;
|
||||||
if( pA->iTable!=pB->iTable
|
if( pA->iTable!=pB->iTable
|
||||||
&& (pA->iTable!=iTab || NEVER(pB->iTable>=0)) ) return 2;
|
&& (pA->iTable!=iTab || NEVER(pB->iTable>=0)) ) return 2;
|
||||||
}
|
}
|
||||||
|
18
src/parse.y
18
src/parse.y
@@ -301,6 +301,10 @@ scanpt(A) ::= . {
|
|||||||
assert( yyLookahead!=YYNOCODE );
|
assert( yyLookahead!=YYNOCODE );
|
||||||
A = yyLookaheadToken.z;
|
A = yyLookaheadToken.z;
|
||||||
}
|
}
|
||||||
|
scantok(A) ::= . {
|
||||||
|
assert( yyLookahead!=YYNOCODE );
|
||||||
|
A = yyLookaheadToken;
|
||||||
|
}
|
||||||
|
|
||||||
// "carglist" is a list of additional constraints that come after the
|
// "carglist" is a list of additional constraints that come after the
|
||||||
// column name and column type in a CREATE TABLE statement.
|
// column name and column type in a CREATE TABLE statement.
|
||||||
@@ -308,17 +312,17 @@ scanpt(A) ::= . {
|
|||||||
carglist ::= carglist ccons.
|
carglist ::= carglist ccons.
|
||||||
carglist ::= .
|
carglist ::= .
|
||||||
ccons ::= CONSTRAINT nm(X). {pParse->constraintName = X;}
|
ccons ::= CONSTRAINT nm(X). {pParse->constraintName = X;}
|
||||||
ccons ::= DEFAULT scanpt(A) term(X) scanpt(Z).
|
ccons ::= DEFAULT scantok(A) term(X).
|
||||||
{sqlite3AddDefaultValue(pParse,X,A,Z);}
|
{sqlite3AddDefaultValue(pParse,X,A.z,&A.z[A.n]);}
|
||||||
ccons ::= DEFAULT LP(A) expr(X) RP(Z).
|
ccons ::= DEFAULT LP(A) expr(X) RP(Z).
|
||||||
{sqlite3AddDefaultValue(pParse,X,A.z+1,Z.z);}
|
{sqlite3AddDefaultValue(pParse,X,A.z+1,Z.z);}
|
||||||
ccons ::= DEFAULT PLUS(A) term(X) scanpt(Z).
|
ccons ::= DEFAULT PLUS(A) scantok(Z) term(X).
|
||||||
{sqlite3AddDefaultValue(pParse,X,A.z,Z);}
|
{sqlite3AddDefaultValue(pParse,X,A.z,&Z.z[Z.n]);}
|
||||||
ccons ::= DEFAULT MINUS(A) term(X) scanpt(Z). {
|
ccons ::= DEFAULT MINUS(A) scantok(Z) term(X). {
|
||||||
Expr *p = sqlite3PExpr(pParse, TK_UMINUS, X, 0);
|
Expr *p = sqlite3PExpr(pParse, TK_UMINUS, X, 0);
|
||||||
sqlite3AddDefaultValue(pParse,p,A.z,Z);
|
sqlite3AddDefaultValue(pParse,p,A.z,&Z.z[Z.n]);
|
||||||
}
|
}
|
||||||
ccons ::= DEFAULT scanpt id(X). {
|
ccons ::= DEFAULT scantok id(X). {
|
||||||
Expr *p = tokenExpr(pParse, TK_STRING, X);
|
Expr *p = tokenExpr(pParse, TK_STRING, X);
|
||||||
if( p ){
|
if( p ){
|
||||||
sqlite3ExprIdToTrueFalse(p);
|
sqlite3ExprIdToTrueFalse(p);
|
||||||
|
43
src/pragma.c
43
src/pragma.c
@@ -650,6 +650,11 @@ void sqlite3Pragma(
|
|||||||
** then do a query */
|
** then do a query */
|
||||||
eMode = PAGER_JOURNALMODE_QUERY;
|
eMode = PAGER_JOURNALMODE_QUERY;
|
||||||
}
|
}
|
||||||
|
if( eMode==PAGER_JOURNALMODE_OFF && (db->flags & SQLITE_Defensive)!=0 ){
|
||||||
|
/* Do not allow journal-mode "OFF" in defensive since the database
|
||||||
|
** can become corrupted using ordinary SQL when the journal is off */
|
||||||
|
eMode = PAGER_JOURNALMODE_QUERY;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if( eMode==PAGER_JOURNALMODE_QUERY && pId2->n==0 ){
|
if( eMode==PAGER_JOURNALMODE_QUERY && pId2->n==0 ){
|
||||||
/* Convert "PRAGMA journal_mode" into "PRAGMA main.journal_mode" */
|
/* Convert "PRAGMA journal_mode" into "PRAGMA main.journal_mode" */
|
||||||
@@ -2132,28 +2137,30 @@ void sqlite3Pragma(
|
|||||||
*/
|
*/
|
||||||
case PragTyp_KEY: {
|
case PragTyp_KEY: {
|
||||||
if( zRight ){
|
if( zRight ){
|
||||||
int n = pPragma->iArg<4 ? sqlite3Strlen30(zRight) : -1;
|
char zBuf[40];
|
||||||
if( (pPragma->iArg & 1)==0 ){
|
const char *zKey = zRight;
|
||||||
sqlite3_key_v2(db, zDb, zRight, n);
|
int n;
|
||||||
|
if( pPragma->iArg==2 || pPragma->iArg==3 ){
|
||||||
|
u8 iByte;
|
||||||
|
int i;
|
||||||
|
for(i=0, iByte=0; i<sizeof(zBuf)*2 && sqlite3Isxdigit(zRight[i]); i++){
|
||||||
|
iByte = (iByte<<4) + sqlite3HexToInt(zRight[i]);
|
||||||
|
if( (i&1)!=0 ) zBuf[i/2] = iByte;
|
||||||
|
}
|
||||||
|
zKey = zBuf;
|
||||||
|
n = i/2;
|
||||||
}else{
|
}else{
|
||||||
sqlite3_rekey_v2(db, zDb, zRight, n);
|
n = pPragma->iArg<4 ? sqlite3Strlen30(zRight) : -1;
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case PragTyp_HEXKEY: {
|
|
||||||
if( zRight ){
|
|
||||||
u8 iByte;
|
|
||||||
int i;
|
|
||||||
char zKey[40];
|
|
||||||
for(i=0, iByte=0; i<sizeof(zKey)*2 && sqlite3Isxdigit(zRight[i]); i++){
|
|
||||||
iByte = (iByte<<4) + sqlite3HexToInt(zRight[i]);
|
|
||||||
if( (i&1)!=0 ) zKey[i/2] = iByte;
|
|
||||||
}
|
}
|
||||||
if( (pPragma->iArg & 1)==0 ){
|
if( (pPragma->iArg & 1)==0 ){
|
||||||
sqlite3_key_v2(db, zDb, zKey, i/2);
|
rc = sqlite3_key_v2(db, zDb, zKey, n);
|
||||||
}else{
|
}else{
|
||||||
sqlite3_rekey_v2(db, zDb, zKey, i/2);
|
rc = sqlite3_rekey_v2(db, zDb, zKey, n);
|
||||||
|
}
|
||||||
|
if( rc==SQLITE_OK && n!=0 ){
|
||||||
|
sqlite3VdbeSetNumCols(v, 1);
|
||||||
|
sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "ok", SQLITE_STATIC);
|
||||||
|
returnSingleText(v, "ok");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
11
src/pragma.h
11
src/pragma.h
@@ -46,10 +46,9 @@
|
|||||||
#define PragTyp_WAL_AUTOCHECKPOINT 38
|
#define PragTyp_WAL_AUTOCHECKPOINT 38
|
||||||
#define PragTyp_WAL_CHECKPOINT 39
|
#define PragTyp_WAL_CHECKPOINT 39
|
||||||
#define PragTyp_ACTIVATE_EXTENSIONS 40
|
#define PragTyp_ACTIVATE_EXTENSIONS 40
|
||||||
#define PragTyp_HEXKEY 41
|
#define PragTyp_KEY 41
|
||||||
#define PragTyp_KEY 42
|
#define PragTyp_LOCK_STATUS 42
|
||||||
#define PragTyp_LOCK_STATUS 43
|
#define PragTyp_STATS 43
|
||||||
#define PragTyp_STATS 44
|
|
||||||
|
|
||||||
/* Property flags associated with various pragma. */
|
/* Property flags associated with various pragma. */
|
||||||
#define PragFlg_NeedSchema 0x01 /* Force schema load before running */
|
#define PragFlg_NeedSchema 0x01 /* Force schema load before running */
|
||||||
@@ -329,12 +328,12 @@ static const PragmaName aPragmaName[] = {
|
|||||||
#endif
|
#endif
|
||||||
#if defined(SQLITE_HAS_CODEC)
|
#if defined(SQLITE_HAS_CODEC)
|
||||||
{/* zName: */ "hexkey",
|
{/* zName: */ "hexkey",
|
||||||
/* ePragTyp: */ PragTyp_HEXKEY,
|
/* ePragTyp: */ PragTyp_KEY,
|
||||||
/* ePragFlg: */ 0,
|
/* ePragFlg: */ 0,
|
||||||
/* ColNames: */ 0, 0,
|
/* ColNames: */ 0, 0,
|
||||||
/* iArg: */ 2 },
|
/* iArg: */ 2 },
|
||||||
{/* zName: */ "hexrekey",
|
{/* zName: */ "hexrekey",
|
||||||
/* ePragTyp: */ PragTyp_HEXKEY,
|
/* ePragTyp: */ PragTyp_KEY,
|
||||||
/* ePragFlg: */ 0,
|
/* ePragFlg: */ 0,
|
||||||
/* ColNames: */ 0, 0,
|
/* ColNames: */ 0, 0,
|
||||||
/* iArg: */ 3 },
|
/* iArg: */ 3 },
|
||||||
|
@@ -476,7 +476,9 @@ static int lookupName(
|
|||||||
*/
|
*/
|
||||||
if( cnt==0 && zTab==0 ){
|
if( cnt==0 && zTab==0 ){
|
||||||
assert( pExpr->op==TK_ID );
|
assert( pExpr->op==TK_ID );
|
||||||
if( ExprHasProperty(pExpr,EP_DblQuoted) ){
|
if( ExprHasProperty(pExpr,EP_DblQuoted)
|
||||||
|
&& 0==(pTopNC->ncFlags&NC_NoDblQStr)
|
||||||
|
){
|
||||||
/* If a double-quoted identifier does not match any known column name,
|
/* If a double-quoted identifier does not match any known column name,
|
||||||
** then treat it as a string.
|
** then treat it as a string.
|
||||||
**
|
**
|
||||||
@@ -1654,7 +1656,7 @@ int sqlite3ResolveExprNames(
|
|||||||
NameContext *pNC, /* Namespace to resolve expressions in. */
|
NameContext *pNC, /* Namespace to resolve expressions in. */
|
||||||
Expr *pExpr /* The expression to be analyzed. */
|
Expr *pExpr /* The expression to be analyzed. */
|
||||||
){
|
){
|
||||||
u16 savedHasAgg;
|
int savedHasAgg;
|
||||||
Walker w;
|
Walker w;
|
||||||
|
|
||||||
if( pExpr==0 ) return SQLITE_OK;
|
if( pExpr==0 ) return SQLITE_OK;
|
||||||
@@ -1769,6 +1771,9 @@ int sqlite3ResolveSelfReference(
|
|||||||
sNC.pParse = pParse;
|
sNC.pParse = pParse;
|
||||||
sNC.pSrcList = &sSrc;
|
sNC.pSrcList = &sSrc;
|
||||||
sNC.ncFlags = type;
|
sNC.ncFlags = type;
|
||||||
|
if( !pParse->db->init.busy && !sqlite3WritableSchema(pParse->db) ){
|
||||||
|
sNC.ncFlags |= NC_NoDblQStr;
|
||||||
|
}
|
||||||
if( (rc = sqlite3ResolveExprNames(&sNC, pExpr))!=SQLITE_OK ) return rc;
|
if( (rc = sqlite3ResolveExprNames(&sNC, pExpr))!=SQLITE_OK ) return rc;
|
||||||
if( pList ) rc = sqlite3ResolveExprListNames(&sNC, pList);
|
if( pList ) rc = sqlite3ResolveExprListNames(&sNC, pList);
|
||||||
return rc;
|
return rc;
|
||||||
|
19
src/select.c
19
src/select.c
@@ -4843,6 +4843,10 @@ static int selectExpander(Walker *pWalker, Select *p){
|
|||||||
if( (selFlags & SF_Expanded)!=0 ){
|
if( (selFlags & SF_Expanded)!=0 ){
|
||||||
return WRC_Prune;
|
return WRC_Prune;
|
||||||
}
|
}
|
||||||
|
if( pWalker->eCode ){
|
||||||
|
/* Renumber selId because it has been copied from a view */
|
||||||
|
p->selId = ++pParse->nSelect;
|
||||||
|
}
|
||||||
pTabList = p->pSrc;
|
pTabList = p->pSrc;
|
||||||
pEList = p->pEList;
|
pEList = p->pEList;
|
||||||
sqlite3WithPush(pParse, p->pWith, 0);
|
sqlite3WithPush(pParse, p->pWith, 0);
|
||||||
@@ -4892,12 +4896,15 @@ static int selectExpander(Walker *pWalker, Select *p){
|
|||||||
#if !defined(SQLITE_OMIT_VIEW) || !defined (SQLITE_OMIT_VIRTUALTABLE)
|
#if !defined(SQLITE_OMIT_VIEW) || !defined (SQLITE_OMIT_VIRTUALTABLE)
|
||||||
if( IsVirtual(pTab) || pTab->pSelect ){
|
if( IsVirtual(pTab) || pTab->pSelect ){
|
||||||
i16 nCol;
|
i16 nCol;
|
||||||
|
u8 eCodeOrig = pWalker->eCode;
|
||||||
if( sqlite3ViewGetColumnNames(pParse, pTab) ) return WRC_Abort;
|
if( sqlite3ViewGetColumnNames(pParse, pTab) ) return WRC_Abort;
|
||||||
assert( pFrom->pSelect==0 );
|
assert( pFrom->pSelect==0 );
|
||||||
pFrom->pSelect = sqlite3SelectDup(db, pTab->pSelect, 0);
|
pFrom->pSelect = sqlite3SelectDup(db, pTab->pSelect, 0);
|
||||||
nCol = pTab->nCol;
|
nCol = pTab->nCol;
|
||||||
pTab->nCol = -1;
|
pTab->nCol = -1;
|
||||||
|
pWalker->eCode = 1; /* Turn on Select.selId renumbering */
|
||||||
sqlite3WalkSelect(pWalker, pFrom->pSelect);
|
sqlite3WalkSelect(pWalker, pFrom->pSelect);
|
||||||
|
pWalker->eCode = eCodeOrig;
|
||||||
pTab->nCol = nCol;
|
pTab->nCol = nCol;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -5147,6 +5154,7 @@ static void sqlite3SelectExpand(Parse *pParse, Select *pSelect){
|
|||||||
}
|
}
|
||||||
w.xSelectCallback = selectExpander;
|
w.xSelectCallback = selectExpander;
|
||||||
w.xSelectCallback2 = selectPopWith;
|
w.xSelectCallback2 = selectPopWith;
|
||||||
|
w.eCode = 0;
|
||||||
sqlite3WalkSelect(&w, pSelect);
|
sqlite3WalkSelect(&w, pSelect);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5473,10 +5481,12 @@ static struct SrcList_item *isSelfJoinView(
|
|||||||
if( pItem->pSelect==0 ) continue;
|
if( pItem->pSelect==0 ) continue;
|
||||||
if( pItem->fg.viaCoroutine ) continue;
|
if( pItem->fg.viaCoroutine ) continue;
|
||||||
if( pItem->zName==0 ) continue;
|
if( pItem->zName==0 ) continue;
|
||||||
if( sqlite3_stricmp(pItem->zDatabase, pThis->zDatabase)!=0 ) continue;
|
assert( pItem->pTab!=0 );
|
||||||
|
assert( pThis->pTab!=0 );
|
||||||
|
if( pItem->pTab->pSchema!=pThis->pTab->pSchema ) continue;
|
||||||
if( sqlite3_stricmp(pItem->zName, pThis->zName)!=0 ) continue;
|
if( sqlite3_stricmp(pItem->zName, pThis->zName)!=0 ) continue;
|
||||||
pS1 = pItem->pSelect;
|
pS1 = pItem->pSelect;
|
||||||
if( pThis->pSelect->selId!=pS1->selId ){
|
if( pItem->pTab->pSchema==0 && pThis->pSelect->selId!=pS1->selId ){
|
||||||
/* The query flattener left two different CTE tables with identical
|
/* The query flattener left two different CTE tables with identical
|
||||||
** names in the same FROM clause. */
|
** names in the same FROM clause. */
|
||||||
continue;
|
continue;
|
||||||
@@ -5508,7 +5518,8 @@ static struct SrcList_item *isSelfJoinView(
|
|||||||
** * The subquery is a UNION ALL of two or more terms
|
** * The subquery is a UNION ALL of two or more terms
|
||||||
** * The subquery does not have a LIMIT clause
|
** * The subquery does not have a LIMIT clause
|
||||||
** * There is no WHERE or GROUP BY or HAVING clauses on the subqueries
|
** * There is no WHERE or GROUP BY or HAVING clauses on the subqueries
|
||||||
** * The outer query is a simple count(*)
|
** * The outer query is a simple count(*) with no WHERE clause or other
|
||||||
|
** extraneous syntax.
|
||||||
**
|
**
|
||||||
** Return TRUE if the optimization is undertaken.
|
** Return TRUE if the optimization is undertaken.
|
||||||
*/
|
*/
|
||||||
@@ -5519,6 +5530,8 @@ static int countOfViewOptimization(Parse *pParse, Select *p){
|
|||||||
sqlite3 *db;
|
sqlite3 *db;
|
||||||
if( (p->selFlags & SF_Aggregate)==0 ) return 0; /* This is an aggregate */
|
if( (p->selFlags & SF_Aggregate)==0 ) return 0; /* This is an aggregate */
|
||||||
if( p->pEList->nExpr!=1 ) return 0; /* Single result column */
|
if( p->pEList->nExpr!=1 ) return 0; /* Single result column */
|
||||||
|
if( p->pWhere ) return 0;
|
||||||
|
if( p->pGroupBy ) return 0;
|
||||||
pExpr = p->pEList->a[0].pExpr;
|
pExpr = p->pEList->a[0].pExpr;
|
||||||
if( pExpr->op!=TK_AGG_FUNCTION ) return 0; /* Result is an aggregate */
|
if( pExpr->op!=TK_AGG_FUNCTION ) return 0; /* Result is an aggregate */
|
||||||
if( sqlite3_stricmp(pExpr->u.zToken,"count") ) return 0; /* Is count() */
|
if( sqlite3_stricmp(pExpr->u.zToken,"count") ) return 0; /* Is count() */
|
||||||
|
@@ -2200,6 +2200,7 @@ struct sqlite3_mem_methods {
|
|||||||
** features include but are not limited to the following:
|
** features include but are not limited to the following:
|
||||||
** <ul>
|
** <ul>
|
||||||
** <li> The [PRAGMA writable_schema=ON] statement.
|
** <li> The [PRAGMA writable_schema=ON] statement.
|
||||||
|
** <li> The [PRAGMA journal_mode=OFF] statement.
|
||||||
** <li> Writes to the [sqlite_dbpage] virtual table.
|
** <li> Writes to the [sqlite_dbpage] virtual table.
|
||||||
** <li> Direct writes to [shadow tables].
|
** <li> Direct writes to [shadow tables].
|
||||||
** </ul>
|
** </ul>
|
||||||
|
@@ -830,12 +830,13 @@ typedef INT16_TYPE LogEst;
|
|||||||
** at run-time.
|
** at run-time.
|
||||||
*/
|
*/
|
||||||
#ifndef SQLITE_BYTEORDER
|
#ifndef SQLITE_BYTEORDER
|
||||||
# if defined(i386) || defined(__i386__) || defined(_M_IX86) || \
|
# if defined(i386) || defined(__i386__) || defined(_M_IX86) || \
|
||||||
defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || \
|
defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || \
|
||||||
defined(_M_AMD64) || defined(_M_ARM) || defined(__x86) || \
|
defined(_M_AMD64) || defined(_M_ARM) || defined(__x86) || \
|
||||||
defined(__arm__) || defined(_M_ARM64)
|
defined(__ARMEL__) || defined(__AARCH64EL__) || defined(_M_ARM64)
|
||||||
# define SQLITE_BYTEORDER 1234
|
# define SQLITE_BYTEORDER 1234
|
||||||
# elif defined(sparc) || defined(__ppc__)
|
# elif defined(sparc) || defined(__ppc__) || \
|
||||||
|
defined(__ARMEB__) || defined(__AARCH64EB__)
|
||||||
# define SQLITE_BYTEORDER 4321
|
# define SQLITE_BYTEORDER 4321
|
||||||
# else
|
# else
|
||||||
# define SQLITE_BYTEORDER 0
|
# define SQLITE_BYTEORDER 0
|
||||||
@@ -2501,7 +2502,7 @@ struct Expr {
|
|||||||
** TK_SELECT_COLUMN: column of the result vector */
|
** TK_SELECT_COLUMN: column of the result vector */
|
||||||
i16 iAgg; /* Which entry in pAggInfo->aCol[] or ->aFunc[] */
|
i16 iAgg; /* Which entry in pAggInfo->aCol[] or ->aFunc[] */
|
||||||
i16 iRightJoinTable; /* If EP_FromJoin, the right table of the join */
|
i16 iRightJoinTable; /* If EP_FromJoin, the right table of the join */
|
||||||
u8 op2; /* TK_REGISTER: original value of Expr.op
|
u8 op2; /* TK_REGISTER/TK_TRUTH: original value of Expr.op
|
||||||
** TK_COLUMN: the value of p5 for OP_Column
|
** TK_COLUMN: the value of p5 for OP_Column
|
||||||
** TK_AGG_FUNCTION: nesting depth */
|
** TK_AGG_FUNCTION: nesting depth */
|
||||||
AggInfo *pAggInfo; /* Used by TK_AGG_COLUMN and TK_AGG_FUNCTION */
|
AggInfo *pAggInfo; /* Used by TK_AGG_COLUMN and TK_AGG_FUNCTION */
|
||||||
@@ -2786,7 +2787,7 @@ struct NameContext {
|
|||||||
NameContext *pNext; /* Next outer name context. NULL for outermost */
|
NameContext *pNext; /* Next outer name context. NULL for outermost */
|
||||||
int nRef; /* Number of names resolved by this context */
|
int nRef; /* Number of names resolved by this context */
|
||||||
int nErr; /* Number of errors encountered while resolving names */
|
int nErr; /* Number of errors encountered while resolving names */
|
||||||
u16 ncFlags; /* Zero or more NC_* flags defined below */
|
int ncFlags; /* Zero or more NC_* flags defined below */
|
||||||
Select *pWinSelect; /* SELECT statement for any window functions */
|
Select *pWinSelect; /* SELECT statement for any window functions */
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -2813,6 +2814,8 @@ struct NameContext {
|
|||||||
#define NC_Complex 0x2000 /* True if a function or subquery seen */
|
#define NC_Complex 0x2000 /* True if a function or subquery seen */
|
||||||
#define NC_AllowWin 0x4000 /* Window functions are allowed here */
|
#define NC_AllowWin 0x4000 /* Window functions are allowed here */
|
||||||
#define NC_HasWin 0x8000 /* One or more window functions seen */
|
#define NC_HasWin 0x8000 /* One or more window functions seen */
|
||||||
|
#define NC_NoDblQStr 0x10000 /* Do not allow double-quoted string hack.
|
||||||
|
** Mnemonic: "NO DouBLe-Quoted STRings" */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** An instance of the following object describes a single ON CONFLICT
|
** An instance of the following object describes a single ON CONFLICT
|
||||||
|
@@ -1501,7 +1501,7 @@ case OP_Concat: { /* same as TK_CONCAT, in1, in2, out3 */
|
|||||||
if( nByte>db->aLimit[SQLITE_LIMIT_LENGTH] ){
|
if( nByte>db->aLimit[SQLITE_LIMIT_LENGTH] ){
|
||||||
goto too_big;
|
goto too_big;
|
||||||
}
|
}
|
||||||
if( sqlite3VdbeMemGrow(pOut, (int)nByte+2, pOut==pIn2) ){
|
if( sqlite3VdbeMemGrow(pOut, (int)nByte+3, pOut==pIn2) ){
|
||||||
goto no_mem;
|
goto no_mem;
|
||||||
}
|
}
|
||||||
MemSetTypeFlag(pOut, MEM_Str);
|
MemSetTypeFlag(pOut, MEM_Str);
|
||||||
@@ -1515,6 +1515,7 @@ case OP_Concat: { /* same as TK_CONCAT, in1, in2, out3 */
|
|||||||
pIn1->flags = flags1;
|
pIn1->flags = flags1;
|
||||||
pOut->z[nByte]=0;
|
pOut->z[nByte]=0;
|
||||||
pOut->z[nByte+1] = 0;
|
pOut->z[nByte+1] = 0;
|
||||||
|
pOut->z[nByte+2] = 0;
|
||||||
pOut->flags |= MEM_Term;
|
pOut->flags |= MEM_Term;
|
||||||
pOut->n = (int)nByte;
|
pOut->n = (int)nByte;
|
||||||
pOut->enc = encoding;
|
pOut->enc = encoding;
|
||||||
@@ -2883,6 +2884,10 @@ case OP_MakeRecord: {
|
|||||||
pRec = pData0;
|
pRec = pData0;
|
||||||
do{
|
do{
|
||||||
applyAffinity(pRec, zAffinity[0], encoding);
|
applyAffinity(pRec, zAffinity[0], encoding);
|
||||||
|
if( zAffinity[0]==SQLITE_AFF_REAL && (pRec->flags & MEM_Int) ){
|
||||||
|
pRec->flags |= MEM_IntReal;
|
||||||
|
pRec->flags &= ~(MEM_Int);
|
||||||
|
}
|
||||||
REGISTER_TRACE((int)(pRec-aMem), pRec);
|
REGISTER_TRACE((int)(pRec-aMem), pRec);
|
||||||
zAffinity++;
|
zAffinity++;
|
||||||
pRec++;
|
pRec++;
|
||||||
@@ -4783,7 +4788,7 @@ case OP_Delete: {
|
|||||||
** OP_Delete will have also set the pC->movetoTarget field to the rowid of
|
** OP_Delete will have also set the pC->movetoTarget field to the rowid of
|
||||||
** the row that is being deleted */
|
** the row that is being deleted */
|
||||||
i64 iKey = sqlite3BtreeIntegerKey(pC->uc.pCursor);
|
i64 iKey = sqlite3BtreeIntegerKey(pC->uc.pCursor);
|
||||||
assert( pC->movetoTarget==iKey );
|
assert( CORRUPT_DB || pC->movetoTarget==iKey );
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -631,6 +631,7 @@ int sqlite3VdbeAssertMayAbort(Vdbe *v, int mayAbort){
|
|||||||
int hasAbort = 0;
|
int hasAbort = 0;
|
||||||
int hasFkCounter = 0;
|
int hasFkCounter = 0;
|
||||||
int hasCreateTable = 0;
|
int hasCreateTable = 0;
|
||||||
|
int hasCreateIndex = 0;
|
||||||
int hasInitCoroutine = 0;
|
int hasInitCoroutine = 0;
|
||||||
Op *pOp;
|
Op *pOp;
|
||||||
VdbeOpIter sIter;
|
VdbeOpIter sIter;
|
||||||
@@ -649,6 +650,14 @@ int sqlite3VdbeAssertMayAbort(Vdbe *v, int mayAbort){
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if( opcode==OP_CreateBtree && pOp->p3==BTREE_INTKEY ) hasCreateTable = 1;
|
if( opcode==OP_CreateBtree && pOp->p3==BTREE_INTKEY ) hasCreateTable = 1;
|
||||||
|
if( mayAbort ){
|
||||||
|
/* hasCreateIndex may also be set for some DELETE statements that use
|
||||||
|
** OP_Clear. So this routine may end up returning true in the case
|
||||||
|
** where a "DELETE FROM tbl" has a statement-journal but does not
|
||||||
|
** require one. This is not so bad - it is an inefficiency, not a bug. */
|
||||||
|
if( opcode==OP_CreateBtree && pOp->p3==BTREE_BLOBKEY ) hasCreateIndex = 1;
|
||||||
|
if( opcode==OP_Clear ) hasCreateIndex = 1;
|
||||||
|
}
|
||||||
if( opcode==OP_InitCoroutine ) hasInitCoroutine = 1;
|
if( opcode==OP_InitCoroutine ) hasInitCoroutine = 1;
|
||||||
#ifndef SQLITE_OMIT_FOREIGN_KEY
|
#ifndef SQLITE_OMIT_FOREIGN_KEY
|
||||||
if( opcode==OP_FkCounter && pOp->p1==0 && pOp->p2==1 ){
|
if( opcode==OP_FkCounter && pOp->p1==0 && pOp->p2==1 ){
|
||||||
@@ -664,7 +673,8 @@ int sqlite3VdbeAssertMayAbort(Vdbe *v, int mayAbort){
|
|||||||
** true for this case to prevent the assert() in the callers frame
|
** true for this case to prevent the assert() in the callers frame
|
||||||
** from failing. */
|
** from failing. */
|
||||||
return ( v->db->mallocFailed || hasAbort==mayAbort || hasFkCounter
|
return ( v->db->mallocFailed || hasAbort==mayAbort || hasFkCounter
|
||||||
|| (hasCreateTable && hasInitCoroutine) );
|
|| (hasCreateTable && hasInitCoroutine) || hasCreateIndex
|
||||||
|
);
|
||||||
}
|
}
|
||||||
#endif /* SQLITE_DEBUG - the sqlite3AssertMayAbort() function */
|
#endif /* SQLITE_DEBUG - the sqlite3AssertMayAbort() function */
|
||||||
|
|
||||||
|
@@ -118,7 +118,10 @@ static void vdbeMemRenderNum(int sz, char *zBuf, Mem *p){
|
|||||||
|
|
||||||
#ifdef SQLITE_DEBUG
|
#ifdef SQLITE_DEBUG
|
||||||
/*
|
/*
|
||||||
** Check that string value of pMem agrees with its integer or real value.
|
** Validity checks on pMem. pMem holds a string.
|
||||||
|
**
|
||||||
|
** (1) Check that string value of pMem agrees with its integer or real value.
|
||||||
|
** (2) Check that the string is correctly zero terminated
|
||||||
**
|
**
|
||||||
** A single int or real value always converts to the same strings. But
|
** A single int or real value always converts to the same strings. But
|
||||||
** many different strings can be converted into the same int or real.
|
** many different strings can be converted into the same int or real.
|
||||||
@@ -136,11 +139,22 @@ static void vdbeMemRenderNum(int sz, char *zBuf, Mem *p){
|
|||||||
**
|
**
|
||||||
** This routine is for use inside of assert() statements only.
|
** This routine is for use inside of assert() statements only.
|
||||||
*/
|
*/
|
||||||
int sqlite3VdbeMemConsistentDualRep(Mem *p){
|
int sqlite3VdbeMemValidStrRep(Mem *p){
|
||||||
char zBuf[100];
|
char zBuf[100];
|
||||||
char *z;
|
char *z;
|
||||||
int i, j, incr;
|
int i, j, incr;
|
||||||
if( (p->flags & MEM_Str)==0 ) return 1;
|
if( (p->flags & MEM_Str)==0 ) return 1;
|
||||||
|
if( p->flags & MEM_Term ){
|
||||||
|
/* Insure that the string is properly zero-terminated. Pay particular
|
||||||
|
** attention to the case where p->n is odd */
|
||||||
|
if( p->szMalloc>0 && p->z==p->zMalloc ){
|
||||||
|
assert( p->enc==SQLITE_UTF8 || p->szMalloc >= ((p->n+1)&~1)+2 );
|
||||||
|
assert( p->enc!=SQLITE_UTF8 || p->szMalloc >= p->n+1 );
|
||||||
|
}
|
||||||
|
assert( p->z[p->n]==0 );
|
||||||
|
assert( p->enc==SQLITE_UTF8 || p->z[(p->n+1)&~1]==0 );
|
||||||
|
assert( p->enc==SQLITE_UTF8 || p->z[((p->n+1)&~1)+1]==0 );
|
||||||
|
}
|
||||||
if( (p->flags & (MEM_Int|MEM_Real|MEM_IntReal))==0 ) return 1;
|
if( (p->flags & (MEM_Int|MEM_Real|MEM_IntReal))==0 ) return 1;
|
||||||
vdbeMemRenderNum(sizeof(zBuf), zBuf, p);
|
vdbeMemRenderNum(sizeof(zBuf), zBuf, p);
|
||||||
z = p->z;
|
z = p->z;
|
||||||
@@ -1221,7 +1235,7 @@ static SQLITE_NOINLINE const void *valueToText(sqlite3_value* pVal, u8 enc){
|
|||||||
assert(pVal->enc==(enc & ~SQLITE_UTF16_ALIGNED) || pVal->db==0
|
assert(pVal->enc==(enc & ~SQLITE_UTF16_ALIGNED) || pVal->db==0
|
||||||
|| pVal->db->mallocFailed );
|
|| pVal->db->mallocFailed );
|
||||||
if( pVal->enc==(enc & ~SQLITE_UTF16_ALIGNED) ){
|
if( pVal->enc==(enc & ~SQLITE_UTF16_ALIGNED) ){
|
||||||
assert( sqlite3VdbeMemConsistentDualRep(pVal) );
|
assert( sqlite3VdbeMemValidStrRep(pVal) );
|
||||||
return pVal->z;
|
return pVal->z;
|
||||||
}else{
|
}else{
|
||||||
return 0;
|
return 0;
|
||||||
@@ -1244,7 +1258,7 @@ const void *sqlite3ValueText(sqlite3_value* pVal, u8 enc){
|
|||||||
assert( (enc&3)==(enc&~SQLITE_UTF16_ALIGNED) );
|
assert( (enc&3)==(enc&~SQLITE_UTF16_ALIGNED) );
|
||||||
assert( !sqlite3VdbeMemIsRowSet(pVal) );
|
assert( !sqlite3VdbeMemIsRowSet(pVal) );
|
||||||
if( (pVal->flags&(MEM_Str|MEM_Term))==(MEM_Str|MEM_Term) && pVal->enc==enc ){
|
if( (pVal->flags&(MEM_Str|MEM_Term))==(MEM_Str|MEM_Term) && pVal->enc==enc ){
|
||||||
assert( sqlite3VdbeMemConsistentDualRep(pVal) );
|
assert( sqlite3VdbeMemValidStrRep(pVal) );
|
||||||
return pVal->z;
|
return pVal->z;
|
||||||
}
|
}
|
||||||
if( pVal->flags&MEM_Null ){
|
if( pVal->flags&MEM_Null ){
|
||||||
|
@@ -117,11 +117,13 @@ do_test check-1.17 {
|
|||||||
|
|
||||||
do_test check-2.1 {
|
do_test check-2.1 {
|
||||||
execsql {
|
execsql {
|
||||||
|
PRAGMA writable_schema = 1;
|
||||||
CREATE TABLE t2(
|
CREATE TABLE t2(
|
||||||
x INTEGER CONSTRAINT one CHECK( typeof(coalesce(x,0))=="integer" ),
|
x INTEGER CONSTRAINT one CHECK( typeof(coalesce(x,0))=="integer" ),
|
||||||
y REAL CONSTRAINT two CHECK( typeof(coalesce(y,0.1))=='real' ),
|
y REAL CONSTRAINT two CHECK( typeof(coalesce(y,0.1))=='real' ),
|
||||||
z TEXT CONSTRAINT three CHECK( typeof(coalesce(z,''))=='text' )
|
z TEXT CONSTRAINT three CHECK( typeof(coalesce(z,''))=='text' )
|
||||||
);
|
);
|
||||||
|
PRAGMA writable_schema = 0;
|
||||||
}
|
}
|
||||||
} {}
|
} {}
|
||||||
do_test check-2.2 {
|
do_test check-2.2 {
|
||||||
|
@@ -1008,4 +1008,56 @@ do_catchsql_test 10.1 {
|
|||||||
} {1 {database disk image is malformed}}
|
} {1 {database disk image is malformed}}
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
reset_db
|
||||||
|
do_test 11.0 {
|
||||||
|
sqlite3 db {}
|
||||||
|
db deserialize [decode_hexdb {
|
||||||
|
| size 595 pagesize 512 filename x.db
|
||||||
|
| page 1 offset 0
|
||||||
|
| 0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 SQLite format 3.
|
||||||
|
| 16: 02 00 00 01 00 40 20 20 00 01 00 0c 00 00 00 07 .....@ ........
|
||||||
|
| 32: 00 00 00 05 07 a1 1f fa 00 00 00 08 00 00 00 04 ................
|
||||||
|
| 48: 00 00 01 00 00 49 00 00 00 00 00 05 00 00 00 00 .....I..........
|
||||||
|
| 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1c ................
|
||||||
|
| 96: 00 2e 2c 50 0d 00 00 00 06 01 06 00 01 da 01 b0 ..,P............
|
||||||
|
| 112: 01 56 01 86 01 2a 01 06 00 00 62 00 00 00 00 00 .V...*....b.....
|
||||||
|
| 128: 00 ed e2 78 74 64 33 ff 43 52 45 41 54 45 20 49 ...xtd3.CREATE I
|
||||||
|
| 144: 4e 44 45 58 20 74 33 78 20 4f 4e 20 74 33 28 38 NDEX t3x ON t3(8
|
||||||
|
| 160: 29 2e 04 06 17 15 11 01 45 69 6e 64 65 68 74 32 ).......Eindeht2
|
||||||
|
| 176: 63 64 74 31 e5 43 52 45 41 54 45 20 49 4e 44 45 cdt1.CREATE INDE
|
||||||
|
| 192: 58 20 74 32 63 c4 20 4f 4e 20 74 32 28 63 2c 64 X t2c. ON t2(c,d
|
||||||
|
| 208: 29 28 05 06 17 01 11 11 3d 74 61 6c 36 74 62 74 )(......=tal6tbt
|
||||||
|
| 224: 65 32 04 43 52 45 41 54 45 20 54 41 42 4c 45 20 e2.CREATE TABLE
|
||||||
|
| 240: 74 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 t...............
|
||||||
|
| 256: 00 00 00 00 00 00 22 07 06 17 11 11 01 30 e8 03 .............0..
|
||||||
|
| 272: 62 6c 65 74 34 74 35 02 43 52 45 41 54 45 20 54 blet4t5.CREATE T
|
||||||
|
| 288: 41 42 4c 45 20 74 34 28 94 29 2a 06 06 17 13 11 ABLE t4(.)*.....
|
||||||
|
| 304: 01 3f 69 33 74 6e 65 78 78 74 64 33 ff 43 52 45 .?i3tnexxtd3.CRE
|
||||||
|
| 320: 41 54 45 20 49 4e 44 45 58 20 74 33 78 20 4f 4e ATE INDEX t3x ON
|
||||||
|
| 336: 20 74 31 28 38 29 2e 04 06 17 15 11 01 45 69 6e t1(8).......Ein
|
||||||
|
| 352: 64 65 68 74 32 63 64 74 31 e5 43 52 45 41 54 45 deht2cdt1.CREATE
|
||||||
|
| 368: 20 49 4e 44 45 58 20 74 32 63 c4 20 4f 4e 20 74 INDEX t2c. ON t
|
||||||
|
| 384: 32 28 63 2c 64 29 28 05 06 17 01 11 11 3d 74 61 2(c,d)(......=ta
|
||||||
|
| 400: 6c 32 74 62 74 65 32 04 43 52 45 41 54 45 20 54 l2tbte2.CREATE T
|
||||||
|
| 416: 41 42 4c 45 20 74 33 28 63 2c 78 2c 65 2c 66 29 ABLE t3(c,x,e,f)
|
||||||
|
| 432: 28 02 06 17 11 11 01 3d 74 61 9e 93 65 74 32 74 (......=ta..et2t
|
||||||
|
| 448: 32 03 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 2.CREATE TABLE t
|
||||||
|
| 464: 32 28 63 2c 64 2c 65 2c 66 29 24 01 06 17 11 11 2(c,d,e,f)$.....
|
||||||
|
| 480: 01 35 55 61 62 6c 88 74 31 74 31 02 43 52 45 41 .5Uabl.t1t1.CREA
|
||||||
|
| 496: 54 45 20 54 41 42 4c 45 20 74 31 28 61 2c 62 29 TE TABLE t1(a,b)
|
||||||
|
| page 2 offset 512
|
||||||
|
| 0: 0d 00 00 00 0d 25 00 01 cf 00 01 fa 01 f3 01 de .....%..........
|
||||||
|
| 16: 01 00 00 00 fd 00 00 0d 00 00 00 00 45 20 54 41 ............E TA
|
||||||
|
| 32: 42 4c 45 20 74 34 28 94 29 2a 06 06 17 13 11 01 BLE t4(.)*......
|
||||||
|
| 48: 3f 69 33 74 6e 65 78 78 74 64 33 ff 43 52 45 a0 ?i3tnexxtd3.CRE.
|
||||||
|
| 64: a0 a0 a0 a0 a0 a0 a0 a0 a0 a0 a0 a0 74 13 11 01 ............t...
|
||||||
|
| 80: 49 45 74 00 00 00 00 00 00 00 00 00 00 00 00 00 IEt.............
|
||||||
|
| end x.db
|
||||||
|
}]} {}
|
||||||
|
|
||||||
|
do_catchsql_test 11.1 {
|
||||||
|
DELETE FROM t3 WHERE x IN (SELECT x FROM t4);
|
||||||
|
} {1 {database disk image is malformed}}
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
@@ -40,4 +40,17 @@ do_execsql_test 1.3 {
|
|||||||
)
|
)
|
||||||
} {3}
|
} {3}
|
||||||
|
|
||||||
|
# 2019-05-15
|
||||||
|
do_execsql_test 2.0 {
|
||||||
|
CREATE TABLE t1(x);
|
||||||
|
INSERT INTO t1 VALUES(1),(99),('abc');
|
||||||
|
CREATE VIEW v1(x,y) AS SELECT x,1 FROM t1 UNION ALL SELECT x,2 FROM t1;
|
||||||
|
SELECT count(*) FROM v1 WHERE x<>1;
|
||||||
|
} {4}
|
||||||
|
do_execsql_test 2.1 {
|
||||||
|
SELECT count(*) FROM v1 GROUP BY y;
|
||||||
|
} {3 3}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
54
test/expr2.test
Normal file
54
test/expr2.test
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
# 2019 May 20
|
||||||
|
#
|
||||||
|
# The author disclaims copyright to this source code. In place of
|
||||||
|
# a legal notice, here is a blessing:
|
||||||
|
#
|
||||||
|
# May you do good and not evil.
|
||||||
|
# May you find forgiveness for yourself and forgive others.
|
||||||
|
# May you share freely, never taking more than you give.
|
||||||
|
#
|
||||||
|
#***********************************************************************
|
||||||
|
# This file implements regression tests for SQLite library. The
|
||||||
|
# focus of this file is testing expressions.
|
||||||
|
#
|
||||||
|
|
||||||
|
set testdir [file dirname $argv0]
|
||||||
|
source $testdir/tester.tcl
|
||||||
|
set testprefix expr2
|
||||||
|
|
||||||
|
do_execsql_test 1.0 {
|
||||||
|
CREATE TABLE t0(c0);
|
||||||
|
INSERT INTO t0(c0) VALUES ('val');
|
||||||
|
}
|
||||||
|
|
||||||
|
do_execsql_test 1.1 {
|
||||||
|
SELECT * FROM t0 WHERE (
|
||||||
|
( (0 IS NOT FALSE) OR NOT (0 IS FALSE OR (t0.c0 = 1)) ) IS 0
|
||||||
|
)
|
||||||
|
} {val}
|
||||||
|
|
||||||
|
do_execsql_test 1.2.1 {
|
||||||
|
SELECT
|
||||||
|
( (0 IS NOT FALSE) OR NOT (0 IS FALSE OR (t0.c0 = 1)) ) IS 0
|
||||||
|
FROM t0
|
||||||
|
} {1}
|
||||||
|
|
||||||
|
do_execsql_test 1.2.2 {
|
||||||
|
SELECT
|
||||||
|
( (0 IS NOT FALSE) OR NOT (0 IS 0 OR (t0.c0 = 1)) ) IS 0
|
||||||
|
FROM t0
|
||||||
|
} {1}
|
||||||
|
|
||||||
|
do_execsql_test 1.3 {
|
||||||
|
SELECT ( (0 IS NOT FALSE) OR NOT (0 IS FALSE OR (t0.c0 = 1)) ) FROM t0
|
||||||
|
} {0}
|
||||||
|
|
||||||
|
do_execsql_test 1.4.1 {
|
||||||
|
SELECT (0 IS NOT FALSE) FROM t0
|
||||||
|
} {0}
|
||||||
|
do_execsql_test 1.4.2 {
|
||||||
|
SELECT NOT (0 IS FALSE OR (t0.c0 = 1)) FROM t0
|
||||||
|
} {0}
|
||||||
|
|
||||||
|
|
||||||
|
finish_test
|
@@ -1946,7 +1946,7 @@ do_test 13.0 {
|
|||||||
|
|
||||||
do_catchsql_test 13.1 {
|
do_catchsql_test 13.1 {
|
||||||
SELECT quote(matchinfo(t1,'pcxybs'))==0 FROM t1 WHERE b MATCH 'e*';
|
SELECT quote(matchinfo(t1,'pcxybs'))==0 FROM t1 WHERE b MATCH 'e*';
|
||||||
} {0 {0 0}}
|
} {0 {}}
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
reset_db
|
reset_db
|
||||||
@@ -2826,7 +2826,7 @@ do_test 18.0 {
|
|||||||
|
|
||||||
do_catchsql_test 18.1 {
|
do_catchsql_test 18.1 {
|
||||||
SELECT quote(matchinfo(t1,'pcxybs'))==0 FROM t1 WHERE b MATCH 'e*';
|
SELECT quote(matchinfo(t1,'pcxybs'))==0 FROM t1 WHERE b MATCH 'e*';
|
||||||
} {0 0}
|
} {0 {}}
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
reset_db
|
reset_db
|
||||||
@@ -4400,6 +4400,217 @@ do_catchsql_test 25.6 {
|
|||||||
INSERT INTO t1(t1) SELECT x FROM t2;
|
INSERT INTO t1(t1) SELECT x FROM t2;
|
||||||
INSERT INTO t1(t1) SELECT x FROM t2;
|
INSERT INTO t1(t1) SELECT x FROM t2;
|
||||||
} {1 {database disk image is malformed}}
|
} {1 {database disk image is malformed}}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
reset_db
|
||||||
|
do_test 26.0 {
|
||||||
|
sqlite3 db {}
|
||||||
|
db deserialize [decode_hexdb {
|
||||||
|
.open --hexdb
|
||||||
|
| size 28672 pagesize 4096 filename crash-26682721375870.db
|
||||||
|
| page 1 offset 0
|
||||||
|
| 0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 SQLite format 3.
|
||||||
|
| 16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 00 .....@ ........
|
||||||
|
| 96: 00 00 00 00 0d 0e b1 00 06 0d a4 00 0f 8d 0f 21 ...............!
|
||||||
|
| 112: 0e b9 0d c8 0e 7e 0d a4 00 00 00 00 00 00 00 00 .....~..........
|
||||||
|
| 3488: 00 00 00 00 22 07 06 17 11 11 01 31 74 61 62 6c ...........1tabl
|
||||||
|
| 3504: 65 74 32 74 32 07 43 52 45 41 54 45 20 54 41 42 et2t2.CREATE TAB
|
||||||
|
| 3520: 4c 45 20 74 32 28 78 29 81 33 05 07 17 1f 1f 01 LE t2(x).3......
|
||||||
|
| 3536: 82 35 74 61 62 6c 65 74 31 5f 73 65 67 64 69 72 .5tablet1_segdir
|
||||||
|
| 3552: 74 31 5f 73 65 67 64 69 72 05 43 52 45 41 54 45 t1_segdir.CREATE
|
||||||
|
| 3568: 20 54 41 42 4c 45 20 27 74 31 5f 73 65 67 64 69 TABLE 't1_segdi
|
||||||
|
| 3584: 72 27 28 6c 65 76 65 6c 20 49 4e 54 45 47 45 51 r'(level INTEGEQ
|
||||||
|
| 3600: 2c 69 64 78 20 49 4e 54 45 47 45 52 2c 73 74 61 ,idx INTEGER,sta
|
||||||
|
| 3616: 72 74 5f 62 6c 6f 63 6b 20 49 4e 54 45 47 45 52 rt_block INTEGER
|
||||||
|
| 3632: 2c 6c 65 61 76 65 73 5f 65 6e 64 5f 62 6c 6f 63 ,leaves_end_bloc
|
||||||
|
| 3648: 6b 20 49 4e 54 45 47 45 52 2c 65 6e 64 5f 62 6c k INTEGER,end_bl
|
||||||
|
| 3664: 6f 63 6b 20 49 4e 54 45 47 45 62 2c 72 6f 6f 74 ock INTEGEb,root
|
||||||
|
| 3680: 20 42 4c 4f 42 2c 50 52 49 4d 41 52 59 20 4b 45 BLOB,PRIMARY KE
|
||||||
|
| 3696: 59 28 6c 65 76 65 6c 2c 20 69 64 78 29 29 31 06 Y(level, idx))1.
|
||||||
|
| 3712: 06 17 45 1f 01 00 69 6e 64 65 78 73 71 6c 69 74 ..E...indexsqlit
|
||||||
|
| 3728: 65 5f 61 75 74 6f 69 6e 64 65 78 5f 74 31 5f 73 e_autoindex_t1_s
|
||||||
|
| 3744: 65 67 64 69 72 5f 31 74 31 5f 73 65 67 64 69 72 egdir_1t1_segdir
|
||||||
|
| 3760: 06 0f c7 00 08 00 00 00 00 66 04 07 17 23 23 01 .........f...##.
|
||||||
|
| 3776: 81 13 74 61 62 6c 65 74 31 5f 73 65 66 6d 65 6e ..tablet1_sefmen
|
||||||
|
| 3792: 74 73 74 31 5f 73 65 67 6d 65 6e 74 73 04 43 52 tst1_segments.CR
|
||||||
|
| 3808: 45 41 54 45 20 54 41 42 4c 45 20 27 74 31 5f 73 EATE TABLE 't1_s
|
||||||
|
| 3824: 65 67 6d 65 6e 74 73 27 28 62 6c 6f 63 6b 69 64 egments'(blockid
|
||||||
|
| 3840: 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 INTEGER PRIMARY
|
||||||
|
| 3856: 20 4b 45 59 2c 20 62 6c 6f 63 6b 20 42 4c 4f 42 KEY, block BLOB
|
||||||
|
| 3872: 29 6a 03 07 17 21 21 01 81 1f 74 61 62 6c 65 74 )j...!!...tablet
|
||||||
|
| 3888: 31 5f 63 6f 6e 74 65 6e 74 74 31 5f 63 6f 6e 74 1_contentt1_cont
|
||||||
|
| 3904: 65 6e 74 03 43 52 45 41 54 45 20 54 41 42 4c 45 ent.CREATE TABLE
|
||||||
|
| 3920: 20 27 74 31 5f 63 6f 6e 74 65 6e 74 27 28 64 6f 't1_content'(do
|
||||||
|
| 3936: 63 69 64 20 49 4e 54 45 47 45 52 20 50 52 49 4d cid INTEGER PRIM
|
||||||
|
| 3952: 41 52 59 20 4b 45 59 2c 20 27 63 30 61 27 2c 20 ARY KEY, 'c0a',
|
||||||
|
| 3968: 27 63 31 62 27 2c 20 27 63 32 63 27 29 38 02 06 'c1b', 'c2c')8..
|
||||||
|
| 3984: 17 11 11 08 5f 74 61 62 6c 65 74 31 74 31 43 52 ...._tablet1t1CR
|
||||||
|
| 4000: 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 EATE VIRTUAL TAB
|
||||||
|
| 4016: 4c 45 20 74 31 20 55 53 49 4e 47 20 66 74 73 33 LE t1 USING fts3
|
||||||
|
| 4032: 28 61 2c 62 2c 63 29 00 00 00 00 00 00 00 00 00 (a,b,c).........
|
||||||
|
| page 3 offset 8192
|
||||||
|
| 0: 0d 00 00 00 25 0b 48 00 0f d8 0f af 0f 86 0f 74 ....%.H........t
|
||||||
|
| 16: 0f 61 0f 4e 0f 2f 0f 0f 0e ef 0e d7 0e be 0e a5 .a.N./..........
|
||||||
|
| 32: 0e 8d 0e 74 0e 5b 0e 40 0e 24 0e 08 0d ef 00 00 ...t.[.@.$......
|
||||||
|
| 2880: 00 00 00 00 00 00 00 00 81 3f 25 06 00 82 7f 00 .........?%.....
|
||||||
|
| 2896: 00 43 4f 4d 50 49 4c 45 52 3d 67 63 63 2d 35 2e .COMPILER=gcc-5.
|
||||||
|
| 2912: 34 23 00 20 32 2f 31 36 30 36 30 39 20 44 45 42 4#. 2/160609 DEB
|
||||||
|
| 2928: 55 47 20 45 4e 41 42 4c 45 20 44 42 53 54 41 54 UG ENABLE DBSTAT
|
||||||
|
| 2944: 20 56 54 41 42 20 45 4e 41 42 4c 45 20 46 54 53 VTAB ENABLE FTS
|
||||||
|
| 2960: 34 20 45 4e 41 42 4c 45 20 46 54 53 35 20 45 4e 4 ENABLE FTS5 EN
|
||||||
|
| 2976: 41 42 4c 45 20 47 45 4f 50 4f 4c 59 20 45 4e 41 ABLE GEOPOLY ENA
|
||||||
|
| 2992: 42 4c 45 20 4a 53 4f 4e 31 20 45 4e 41 42 4c 45 BLE JSON1 ENABLE
|
||||||
|
| 3008: 20 4d 45 4d 53 59 53 35 20 45 4e 41 42 4c 45 20 MEMSYS5 ENABLE
|
||||||
|
| 3024: 52 54 52 45 45 20 4d 41 58 20 4d 45 4d 4f 52 59 RTREE MAX MEMORY
|
||||||
|
| 3040: 3d 35 30 30 30 30 30 30 30 20 4f 4d 49 54 20 4c =50000000 OMIT L
|
||||||
|
| 3056: 4f 41 44 20 45 58 54 45 4e 53 59 4f 4e 20 54 48 OAD EXTENSYON TH
|
||||||
|
| 3072: 52 45 41 44 53 41 46 45 3d 30 18 24 05 00 25 0f READSAFE=0.$..%.
|
||||||
|
| 3088: 19 54 48 52 45 41 44 53 41 46 45 3d 30 58 42 49 .THREADSAFE=0XBI
|
||||||
|
| 3104: 4e 41 52 59 18 23 05 00 25 0f 19 54 48 52 45 41 NARY.#..%..THREA
|
||||||
|
| 3120: 44 53 41 46 45 3d 30 58 4e 4f 43 41 53 45 17 22 DSAFE=0XNOCASE..
|
||||||
|
| 3136: 05 00 25 0f 17 54 38 52 45 41 44 53 41 46 45 3d ..%..T8READSAFE=
|
||||||
|
| 3152: 30 58 52 54 52 49 4d 1f 21 05 00 33 0f 19 4f 4d 0XRTRIM.!..3..OM
|
||||||
|
| 3168: 49 54 20 4c 4f 41 44 20 45 58 54 45 fc 53 49 4f IT LOAD EXTE.SIO
|
||||||
|
| 3184: 4e 68 42 49 4e 4a c2 59 1f 20 05 00 33 0f 19 4f NhBINJ.Y. ..3..O
|
||||||
|
| 3200: 4d 49 54 20 4c 4f 41 44 20 45 58 54 45 4e 53 49 MIT LOAD EXTENSI
|
||||||
|
| 3216: 4f 4e 58 4e 4f 43 41 53 45 1e 1f 05 00 33 0f 17 ONXNOCASE....3..
|
||||||
|
| 3232: 4f 4d 49 54 20 4c 4f 41 44 20 45 58 54 45 4e 53 OMIT LOAD EXTENS
|
||||||
|
| 3248: 49 4f 4e 58 52 54 52 49 4d 1f 1e 05 00 33 0f 19 IONXRTRIM....3..
|
||||||
|
| 3264: 4d 41 58 20 4d 45 4d 4f 52 59 3d 35 30 2f 30 30 MAX MEMORY=50/00
|
||||||
|
| 3280: 30 30 30 58 42 49 4e 41 52 59 1f 1d 05 00 33 0f 000XBINARY....3.
|
||||||
|
| 3296: 19 4d 41 58 20 4d 45 4d 4f 52 59 3d 35 30 30 30 .MAX MEMORY=5000
|
||||||
|
| 3312: 30 30 30 30 48 4e 4f 43 41 53 45 1e 1c 05 00 33 0000HNOCASE....3
|
||||||
|
| 3328: 0f 17 4d 41 58 20 4d 45 4d 4f 52 59 3d 35 30 30 ..MAX MEMORY=500
|
||||||
|
| 3344: 30 30 30 30 30 58 52 54 52 49 4d 18 1b 05 00 25 00000XRTRIM....%
|
||||||
|
| 3360: 0f 19 45 4e 41 42 4c 45 20 52 54 52 45 45 58 42 ..ENABLE RTREEXB
|
||||||
|
| 3376: 49 4e 41 52 59 18 1a 05 00 25 0f 19 45 4e 41 42 INARY....%..ENAB
|
||||||
|
| 3392: 4c 45 20 52 54 52 45 45 58 4e 4f 53 41 53 45 17 LE RTREEXNOSASE.
|
||||||
|
| 3408: 19 05 00 25 0f 17 45 4e 41 42 4c 45 20 52 54 52 ...%..ENABLE RTR
|
||||||
|
| 3424: 45 45 58 52 54 52 49 4d 1a 18 05 00 29 0f 19 45 EEXRTRIM....)..E
|
||||||
|
| 3440: 4e 41 42 4c 45 20 4d 45 4d 53 59 53 35 58 42 49 NABLE MEMSYS5XBI
|
||||||
|
| 3456: 4e 41 52 59 1a 17 05 00 29 0f 19 45 4e 41 42 4c NARY....)..ENABL
|
||||||
|
| 3472: 45 20 4d 45 4d 53 59 53 35 58 4e 4f 43 41 53 45 E MEMSYS5XNOCASE
|
||||||
|
| 3488: 19 16 05 00 29 0f 17 45 4e 41 42 4c 45 20 4d 45 ....)..ENABLE ME
|
||||||
|
| 3504: 4d 53 59 53 35 58 52 54 52 49 4d 18 15 05 00 25 MSYS5XRTRIM....%
|
||||||
|
| 3520: 0f 19 45 4e 41 42 4c 45 20 4a 53 4f 4e 31 58 42 ..ENABLE JSON1XB
|
||||||
|
| 3536: 49 4e 41 52 59 18 14 05 00 25 0f 19 45 4e 42 42 INARY....%..ENBB
|
||||||
|
| 3552: 4d 45 20 4a 53 4f 4e 31 58 4e 4f 43 41 53 45 17 ME JSON1XNOCASE.
|
||||||
|
| 3568: 13 05 00 25 0f 17 45 4e 41 42 4c 45 20 4a 53 4f ...%..ENABLE JSO
|
||||||
|
| 3584: 4e 31 58 52 54 52 49 4d 1a 12 05 00 29 0f 19 45 N1XRTRIM....)..E
|
||||||
|
| 3600: 4e 41 42 4c 45 20 47 45 4f 50 4f 4c 59 58 42 49 NABLE GEOPOLYXBI
|
||||||
|
| 3616: 4e 41 52 59 1a 11 05 00 29 0f 19 45 4e 41 1e 4c NARY....)..ENA.L
|
||||||
|
| 3632: 45 20 47 45 4f 50 4f 4c 59 58 4e 4f 43 41 53 45 E GEOPOLYXNOCASE
|
||||||
|
| 3648: 19 10 05 00 29 0f 17 45 4e 41 42 4c 45 20 47 45 ....)..ENABLE GE
|
||||||
|
| 3664: 4f 50 4f 4c 59 58 62 54 52 49 4d 17 0f 05 00 23 OPOLYXbTRIM....#
|
||||||
|
| 3680: 0f 19 45 4e 41 42 4c 45 20 46 54 53 35 58 42 49 ..ENABLE FTS5XBI
|
||||||
|
| 3696: 4e 41 52 59 17 0e 05 00 23 0f 19 45 4e 41 42 4c NARY....#..ENABL
|
||||||
|
| 3712: 45 20 46 54 fc 35 58 4e 4f 43 41 53 45 16 0d 05 E FT.5XNOCASE...
|
||||||
|
| 3728: 00 23 0f 17 45 4e 41 42 4c 45 20 46 54 53 35 58 .#..ENABLE FTS5X
|
||||||
|
| 3744: 52 54 52 49 4d 17 0c 05 00 23 0f 19 45 4e 41 42 RTRIM....#..ENAB
|
||||||
|
| 3760: 4c 45 20 46 54 53 34 58 42 49 4e 41 52 59 17 0b LE FTS4XBINARY..
|
||||||
|
| 3776: 05 00 23 0f 19 45 4e 41 42 4c 45 20 46 54 53 35 ..#..ENABLE FTS5
|
||||||
|
| 3792: 58 4e 4f 43 40 53 45 16 0a 05 00 23 0f 17 45 4e XNOC@SE....#..EN
|
||||||
|
| 3808: 41 42 4c 45 20 56 54 53 34 58 52 54 52 49 4d 1e ABLE VTS4XRTRIM.
|
||||||
|
| 3824: 09 05 00 31 0f 19 45 4e 41 42 4c 45 20 44 42 53 ...1..ENABLE DBS
|
||||||
|
| 3840: 54 41 54 20 56 54 41 42 58 42 49 4e 41 b3 58 1e TAT VTABXBINA.X.
|
||||||
|
| 3856: 08 05 00 31 0f 19 45 4e 40 42 4c 45 20 44 42 53 ...1..EN@BLE DBS
|
||||||
|
| 3872: 54 41 54 20 56 54 41 42 58 4e 4f 43 41 53 45 1d TAT VTABXNOCASE.
|
||||||
|
| 3888: 07 05 00 31 0f 17 45 4e 41 42 4c 45 20 45 42 53 ...1..ENABLE EBS
|
||||||
|
| 3904: 54 41 54 20 56 54 41 42 58 52 54 52 49 4d 11 06 TAT VTABXRTRIM..
|
||||||
|
| 3920: 05 00 17 0f 19 44 45 42 55 47 58 42 49 4e 41 52 .....DEBUGXBINAR
|
||||||
|
| 3936: 59 11 05 05 00 17 0f 19 44 45 42 55 47 58 4e 4f Y.......DEBUGXNO
|
||||||
|
| 3952: 43 41 53 45 10 04 05 00 17 0f 17 44 45 42 55 47 CASE.......DEBUG
|
||||||
|
| 3968: 58 52 54 52 49 4d 27 03 05 00 43 0f 19 43 4f 4d XRTRIM'...C..COM
|
||||||
|
| 3984: 50 49 4c 45 52 3d 67 63 63 2d 35 2e 34 2e 30 20 PILER=gcc-5.4.0
|
||||||
|
| 4000: 32 30 31 36 30 36 30 39 58 4b 19 4e 41 52 59 27 20160609XK.NARY'
|
||||||
|
| 4016: 02 05 00 43 0f 19 43 4f 4d 50 49 4c 45 52 3d 67 ...C..COMPILER=g
|
||||||
|
| 4032: 63 63 2d 35 2e 34 2e 30 20 32 30 31 36 30 36 30 cc-5.4.0 2016060
|
||||||
|
| page 5 offset 16384
|
||||||
|
| 0: 0d 00 00 00 02 0b a0 00 0c ad 0b a0 00 00 00 00 ................
|
||||||
|
| 2976: 82 0a 02 08 08 09 08 08 17 84 06 30 20 32 34 33 ...........0 243
|
||||||
|
| 2992: 00 01 30 04 25 06 1b 00 00 08 32 30 31 36 30 36 ..0.%.....201606
|
||||||
|
| 3008: 30 39 03 25 07 00 00 01 34 03 25 05 00 00 01 35 09.%....4.%....5
|
||||||
|
| 3024: 03 25 04 00 01 07 30 30 30 30 30 30 30 03 25 1a .%....0000000.%.
|
||||||
|
| 3040: 00 00 08 63 6f 6d 70 69 6c 65 72 03 25 02 00 00 ...compiler.%...
|
||||||
|
| 3056: 06 64 62 73 74 51 74 03 25 0a 00 01 04 65 62 75 .dbstQt.%....ebu
|
||||||
|
| 3072: 67 03 25 08 00 00 06 65 6e 61 62 6c 65 09 25 09 g.%....enable.%.
|
||||||
|
| 3088: 05 04 04 04 04 04 00 01 08 78 74 65 6e 73 69 6f .........xtensio
|
||||||
|
| 3104: 6e 03 25 1d 00 00 04 66 74 73 34 03 25 0d 00 03 n.%....fts4.%...
|
||||||
|
| 3120: 01 35 03 25 0f 00 00 03 67 63 63 03 25 03 00 01 .5.%....gcc.%...
|
||||||
|
| 3136: 06 65 6f 70 6f 6c 79 03 25 11 00 00 05 6a 73 6f .eopoly.%....jso
|
||||||
|
| 3152: 6e 31 03 25 13 00 00 04 6c 6f 61 64 03 25 1c 00 n1.%....load.%..
|
||||||
|
| 3168: 00 03 6d 61 78 03 25 18 00 01 05 65 6d 6f 72 79 ..max.%....emory
|
||||||
|
| 3184: 03 25 19 00 03 04 73 79 73 35 03 25 15 00 00 04 .%....sys5.%....
|
||||||
|
| 3200: 6f 6d 69 74 03 25 1b 00 00 05 72 74 72 65 65 03 omit.%....rtree.
|
||||||
|
| 3216: 25 17 00 00 0a 74 68 72 65 61 64 73 61 66 65 03 %....threadsafe.
|
||||||
|
| 3232: 25 1e 00 00 04 76 74 61 62 03 25 0b 00 86 50 01 %....vtab.%...P.
|
||||||
|
| 3248: 08 08 08 08 08 17 8d 12 30 20 38 33 35 00 01 30 ........0 835..0
|
||||||
|
| 3264: 12 01 06 00 01 06 00 01 06 00 1e f3 00 01 03 00 ................
|
||||||
|
| 3280: 01 03 00 00 08 32 30 31 36 30 36 30 39 09 01 07 .....20160609...
|
||||||
|
| 3296: 00 01 07 00 01 07 00 00 01 34 09 01 05 00 01 05 .........4......
|
||||||
|
| 3312: 00 01 05 00 00 01 35 09 01 04 00 01 04 00 01 04 ......5.........
|
||||||
|
| 3328: 00 01 07 30 30 30 30 2f 30 30 09 1c 04 00 01 04 ...0000/00......
|
||||||
|
| 3344: 00 01 04 00 00 06 62 69 6e 61 72 79 3c 03 01 02 ......binary<...
|
||||||
|
| 3360: 02 00 03 01 02 02 00 03 01 02 02 00 03 01 02 02 ................
|
||||||
|
| 3376: 00 03 01 02 02 00 03 01 02 02 00 03 01 02 02 00 ................
|
||||||
|
| 3392: 03 01 02 02 00 03 01 02 02 00 03 01 02 02 00 03 ................
|
||||||
|
| 3408: 01 02 02 00 03 01 02 02 00 00 08 63 6f 6d 70 69 ...........compi
|
||||||
|
| 3424: 6c 65 72 09 01 02 00 01 02 00 01 02 00 00 06 64 ler............d
|
||||||
|
| 3440: 62 73 74 61 74 09 07 03 00 01 03 00 01 03 00 01 bstat...........
|
||||||
|
| 3456: 04 65 62 75 67 09 04 02 00 01 02 00 01 02 00 00 .ebug...........
|
||||||
|
| 3472: 06 65 6e 61 62 6c 65 3f 07 02 00 01 02 00 01 02 .enable?........
|
||||||
|
| 3488: 00 01 02 00 01 02 00 01 01 f0 01 02 00 57 02 00 .............W..
|
||||||
|
| 3504: 01 02 00 01 02 00 01 02 00 01 02 00 01 02 10 01 ................
|
||||||
|
| 3520: 02 00 01 02 00 01 02 00 01 02 00 01 02 00 01 02 ................
|
||||||
|
| 3536: 00 00 02 00 01 02 00 01 08 78 74 65 6e 73 69 6f .........xtensio
|
||||||
|
| 3552: 6e 09 1f 04 00 01 04 00 01 04 00 00 04 66 74 73 n............fts
|
||||||
|
| 3568: 34 09 0a 03 00 01 03 00 01 03 00 03 01 35 09 0d 4............5..
|
||||||
|
| 3584: 03 00 01 03 00 a9 03 00 00 03 67 63 63 09 01 03 ..........gcc...
|
||||||
|
| 3600: 00 01 03 00 01 03 00 01 06 65 6f 70 6f 6c 79 09 .........eopoly.
|
||||||
|
| 3616: 10 03 00 01 03 00 01 03 00 00 05 6a 73 6f 6e 31 ...........json1
|
||||||
|
| 3632: 09 13 03 00 01 03 00 01 03 00 00 04 6c 6f 61 64 ............load
|
||||||
|
| 3648: 09 1f 03 00 01 03 00 01 03 00 00 03 6d 61 78 09 ............max.
|
||||||
|
| 3664: 1c 02 0b 31 02 00 01 02 00 01 05 65 6d 6f 72 79 ...1.......emory
|
||||||
|
| 3680: 09 1c 03 00 01 03 00 01 03 00 03 04 73 79 73 35 ............sys5
|
||||||
|
| 3696: 09 16 03 00 01 03 00 01 03 00 00 06 6e 6f 63 61 ............noca
|
||||||
|
| 3712: 73 65 3c 02 01 02 02 00 03 01 02 02 00 03 01 02 se<.............
|
||||||
|
| 3728: 02 00 03 01 02 02 00 03 01 02 02 00 03 01 02 02 ................
|
||||||
|
| 3744: 00 03 01 02 02 00 f3 01 02 02 00 03 01 02 02 00 ................
|
||||||
|
| 3760: 03 01 02 02 00 03 01 02 02 00 03 01 02 02 00 00 ................
|
||||||
|
| 3776: 04 6f 6d 69 74 09 1f 02 00 01 02 00 01 02 00 00 .omit...........
|
||||||
|
| 3792: 05 72 74 72 65 65 09 19 03 00 01 03 00 01 03 00 .rtree..........
|
||||||
|
| 3808: 03 02 69 6d 3c 01 01 02 02 00 03 01 02 02 00 03 ..im<...........
|
||||||
|
| 3824: 01 02 02 00 03 01 02 02 00 03 01 02 02 00 03 01 ................
|
||||||
|
| 3840: 02 02 00 03 01 02 02 00 03 01 02 02 00 03 01 02 ................
|
||||||
|
| 3856: 02 00 03 01 02 02 00 03 01 02 02 00 03 01 02 02 ................
|
||||||
|
| 3872: 00 00 0a 74 68 72 65 61 64 63 61 66 65 09 22 02 ...threadcafe...
|
||||||
|
| 3888: 00 01 02 00 02 02 00 00 04 76 74 61 62 09 07 04 .........vtab...
|
||||||
|
| 3904: 00 01 04 00 01 04 00 00 01 78 b4 01 01 01 01 02 .........x......
|
||||||
|
| 3920: 00 01 01 01 02 00 01 01 01 02 00 01 01 01 02 00 ................
|
||||||
|
| 3936: 01 01 01 02 00 01 01 01 02 00 01 01 01 02 00 01 ................
|
||||||
|
| 3952: 01 01 02 00 01 01 01 02 00 01 01 01 02 00 01 01 ................
|
||||||
|
| 3968: 01 02 00 01 01 01 02 00 01 01 01 02 00 01 01 01 ................
|
||||||
|
| 3984: 02 00 01 01 01 02 00 01 01 01 02 00 01 01 01 02 ................
|
||||||
|
| 4000: 00 01 01 01 02 00 01 01 01 02 00 01 01 01 02 00 ................
|
||||||
|
| 4016: 01 01 01 02 00 01 01 01 02 00 01 00 01 02 00 01 ................
|
||||||
|
| 4032: 01 01 02 00 01 01 00 e2 00 01 01 01 02 00 01 01 ................
|
||||||
|
| 4048: 01 02 00 01 01 01 02 00 01 01 01 02 00 01 01 01 ................
|
||||||
|
| 4064: 02 00 01 01 01 02 00 01 01 01 02 00 01 01 01 02 ................
|
||||||
|
| 4080: 00 01 01 01 02 00 01 01 01 02 00 01 01 01 02 00 ................
|
||||||
|
| page 6 offset 20480
|
||||||
|
| 0: 0a 00 00 00 02 0f f5 00 0f fb 0f f5 00 00 00 00 ................
|
||||||
|
| 4080: 00 00 00 00 00 05 04 08 09 01 02 04 04 08 08 09 ................
|
||||||
|
| page 7 offset 24576
|
||||||
|
| 0: 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
|
||||||
|
| 4016: 00 00 00 00 00 00 00 00 0d 05 02 23 61 00 00 00 ...........#a...
|
||||||
|
| end crash-26682721375870.db
|
||||||
|
}]} {}
|
||||||
|
|
||||||
|
do_execsql_test 26.1 {
|
||||||
|
SELECT count(*) FROM (
|
||||||
|
SELECT t1, (t1) FROM t1 WHERE b MATCH 'x'
|
||||||
|
)
|
||||||
|
} 34
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
|
||||||
|
60
test/fts3corrupt5.test
Normal file
60
test/fts3corrupt5.test
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
# 2019 May 22
|
||||||
|
#
|
||||||
|
# The author disclaims copyright to this source code. In place of
|
||||||
|
# a legal notice, here is a blessing:
|
||||||
|
#
|
||||||
|
# May you do good and not evil.
|
||||||
|
# May you find forgiveness for yourself and forgive others.
|
||||||
|
# May you share freely, never taking more than you give.
|
||||||
|
#
|
||||||
|
#*************************************************************************
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
set testdir [file dirname $argv0]
|
||||||
|
source $testdir/tester.tcl
|
||||||
|
source $testdir/fts3_common.tcl
|
||||||
|
set testprefix fts3corrupt5
|
||||||
|
|
||||||
|
# If SQLITE_ENABLE_FTS3 is defined, omit this file.
|
||||||
|
ifcapable !fts3 {
|
||||||
|
finish_test
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
sqlite3_fts3_may_be_corrupt 1
|
||||||
|
|
||||||
|
do_execsql_test 1.0 {
|
||||||
|
BEGIN;
|
||||||
|
CREATE VIRTUAL TABLE ft USING fts3(a, b, c);
|
||||||
|
INSERT INTO ft VALUES('one', 'one', 'one');
|
||||||
|
COMMIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
do_execsql_test 1.1 {
|
||||||
|
SELECT * FROM ft WHERE ft MATCH 'b:one'
|
||||||
|
} {one one one}
|
||||||
|
|
||||||
|
do_execsql_test 1.2 {
|
||||||
|
SELECT quote(root) FROM ft_segdir;
|
||||||
|
} {X'00036F6E6509010201010201020200'}
|
||||||
|
|
||||||
|
breakpoint
|
||||||
|
foreach {tn val q bCorrupt} {
|
||||||
|
1 X'00036F6E650901' 'b:one' 1
|
||||||
|
2 X'00036F6E6509010201010201FFFFFF' 'c:one' 1
|
||||||
|
3 X'00036F6E6501' 'b:one' 1
|
||||||
|
4 X'00036F6E650101' 'b:one' 1
|
||||||
|
5 X'00036F6E650100' 'b:one' 0
|
||||||
|
} {
|
||||||
|
do_execsql_test 1.3.$tn.1 "UPDATE ft_segdir SET root = $val"
|
||||||
|
|
||||||
|
set res {0 {}}
|
||||||
|
if {$bCorrupt} { set res {1 {database disk image is malformed}}}
|
||||||
|
do_catchsql_test 1.3.$tn.2 {
|
||||||
|
SELECT * FROM ft WHERE ft MATCH $q
|
||||||
|
} $res
|
||||||
|
}
|
||||||
|
|
||||||
|
finish_test
|
||||||
|
|
Binary file not shown.
Binary file not shown.
@@ -327,5 +327,17 @@ do_catchsql_test index7-6.5 {
|
|||||||
CREATE INDEX t5a ON t5(a) WHERE a=#1;
|
CREATE INDEX t5a ON t5(a) WHERE a=#1;
|
||||||
} {1 {near "#1": syntax error}}
|
} {1 {near "#1": syntax error}}
|
||||||
|
|
||||||
|
do_execsql_test index7-7.0 {
|
||||||
|
CREATE TABLE t6(x, y);
|
||||||
|
INSERT INTO t6 VALUES(1, 1);
|
||||||
|
INSERT INTO t6 VALUES(0, 0);
|
||||||
|
SELECT * FROM t6 WHERE y IS TRUE ORDER BY x;
|
||||||
|
} {1 1}
|
||||||
|
|
||||||
|
do_execsql_test index7-7.1 {
|
||||||
|
CREATE INDEX i6 ON t6(x) WHERE y IS NOT TRUE;
|
||||||
|
SELECT * FROM t6 WHERE y IS TRUE ORDER BY x;
|
||||||
|
} {1 1}
|
||||||
|
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
@@ -278,5 +278,23 @@ do_eqp_test 6.2.3 {
|
|||||||
SELECT a, b FROM x1 WHERE CAST(b AS TEXT) = 123;
|
SELECT a, b FROM x1 WHERE CAST(b AS TEXT) = 123;
|
||||||
} {SEARCH TABLE x1 USING INDEX x1i2 (<expr>=?)}
|
} {SEARCH TABLE x1 USING INDEX x1i2 (<expr>=?)}
|
||||||
|
|
||||||
|
do_execsql_test 7.0 {
|
||||||
|
CREATE TABLE IF NOT EXISTS t0(c0);
|
||||||
|
INSERT INTO t0(c0) VALUES (-9223372036854775808);
|
||||||
|
BEGIN;
|
||||||
|
}
|
||||||
|
do_catchsql_test 7.1 {
|
||||||
|
CREATE INDEX i0 ON t0(ABS(c0));
|
||||||
|
} {1 {integer overflow}}
|
||||||
|
do_execsql_test 7.2 {
|
||||||
|
COMMIT;
|
||||||
|
SELECT sql FROM sqlite_master WHERE tbl_name = 't0';
|
||||||
|
CREATE INDEX i0 ON t0(c0);
|
||||||
|
} {{CREATE TABLE t0(c0)}}
|
||||||
|
do_execsql_test 7.3 {
|
||||||
|
REINDEX;
|
||||||
|
} {}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
@@ -46,7 +46,41 @@ do_execsql_test 180 {
|
|||||||
max(1,intreal(5),intreal(3),4);
|
max(1,intreal(5),intreal(3),4);
|
||||||
} {5.0 5.0}
|
} {5.0 5.0}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
do_execsql_test 2.1 {
|
||||||
|
CREATE TABLE t2(a REAL);
|
||||||
|
INSERT INTO t2 VALUES( 836627109860825358 );
|
||||||
|
SELECT substr(a,1,4) FROM t2 WHERE a = CAST(836627109860825358 AS REAL);
|
||||||
|
} {8.36}
|
||||||
|
|
||||||
|
do_execsql_test 2.2 {
|
||||||
|
CREATE INDEX i2 ON t2(a);
|
||||||
|
SELECT substr(a,1,4) FROM t2 WHERE a = CAST(836627109860825358 AS REAL);
|
||||||
|
} {8.36}
|
||||||
|
|
||||||
|
do_execsql_test 2.3 {
|
||||||
|
CREATE TABLE t0 (c0);
|
||||||
|
CREATE TABLE t1 (c1 REAL);
|
||||||
|
INSERT INTO t1(c1) VALUES (8366271098608253588);
|
||||||
|
INSERT INTO t0(c0) VALUES ('a');
|
||||||
|
}
|
||||||
|
set D [db one {SELECT c1 FROM t1}]
|
||||||
|
|
||||||
|
do_execsql_test 2.4 {
|
||||||
|
SELECT * FROM t1 WHERE (t1.c1 = CAST(8366271098608253588 AS REAL));
|
||||||
|
} $D
|
||||||
|
|
||||||
|
do_execsql_test 2.5 {
|
||||||
|
SELECT * FROM t0, t1 WHERE (t1.c1 = CAST(8366271098608253588 AS REAL));
|
||||||
|
} [list a $D]
|
||||||
|
|
||||||
|
do_execsql_test 2.6 {
|
||||||
|
SELECT * FROM t0, t1
|
||||||
|
WHERE (
|
||||||
|
t1.c1 >= CAST(8366271098608253588 AS REAL)
|
||||||
|
AND t1.c1 <= CAST(8366271098608253588 AS REAL)
|
||||||
|
);
|
||||||
|
} [list a $D]
|
||||||
|
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
@@ -306,4 +306,25 @@ do_eqp_test 7.4 {
|
|||||||
`--SEARCH TABLE t4 USING INDEX t4xz (x=?)
|
`--SEARCH TABLE t4 USING INDEX t4xz (x=?)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reset_db
|
||||||
|
do_execsql_test 8.0 {
|
||||||
|
CREATE TABLE t0 (c0, c1, PRIMARY KEY (c0, c1));
|
||||||
|
CREATE TABLE t1 (c0);
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (2);
|
||||||
|
|
||||||
|
INSERT INTO t0 VALUES(0, 10);
|
||||||
|
INSERT INTO t0 VALUES(1, 10);
|
||||||
|
INSERT INTO t0 VALUES(2, 10);
|
||||||
|
INSERT INTO t0 VALUES(3, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
do_execsql_test 8.1 {
|
||||||
|
SELECT * FROM t0, t1
|
||||||
|
WHERE (t0.c1 >= 1 OR t0.c1 < 1) AND t0.c0 IN (1, t1.c0) ORDER BY 1;
|
||||||
|
} {
|
||||||
|
1 10 2
|
||||||
|
2 10 2
|
||||||
|
}
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
@@ -65,7 +65,16 @@ do_test jrnlmode-1.2 {
|
|||||||
PRAGMA temp.journal_mode;
|
PRAGMA temp.journal_mode;
|
||||||
}
|
}
|
||||||
} [list persist persist [temp_journal_mode persist]]
|
} [list persist persist [temp_journal_mode persist]]
|
||||||
do_test jrnlmode-1.4 {
|
do_test jrnlmode-1.4a {
|
||||||
|
# When defensive is on, unable to set journal_mode to OFF
|
||||||
|
sqlite3_db_config db DEFENSIVE 1
|
||||||
|
execsql {
|
||||||
|
PRAGMA journal_mode = off;
|
||||||
|
}
|
||||||
|
} {persist}
|
||||||
|
do_test jrnlmode-1.4b {
|
||||||
|
# When defensive is on, unable to set journal_mode to OFF
|
||||||
|
sqlite3_db_config db DEFENSIVE 0
|
||||||
execsql {
|
execsql {
|
||||||
PRAGMA journal_mode = off;
|
PRAGMA journal_mode = off;
|
||||||
}
|
}
|
||||||
|
@@ -249,4 +249,14 @@ do_catchsql_test 4.6.5 {
|
|||||||
pragma foreign_key_check('c2')
|
pragma foreign_key_check('c2')
|
||||||
} {1 {no such table: c2}}
|
} {1 {no such table: c2}}
|
||||||
|
|
||||||
|
do_execsql_test 5.0 {
|
||||||
|
CREATE TABLE t4(a DEFAULT 'abc' /* comment */, b DEFAULT -1 -- comment
|
||||||
|
, c DEFAULT +4.0 /* another comment */
|
||||||
|
);
|
||||||
|
PRAGMA table_info = t4;
|
||||||
|
} {
|
||||||
|
0 a {} 0 'abc' 0 1 b {} 0 -1 0 2 c {} 0 +4.0 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
set testdir [file dirname $argv0]
|
set testdir [file dirname $argv0]
|
||||||
source $testdir/tester.tcl
|
source $testdir/tester.tcl
|
||||||
|
set testprefix quote
|
||||||
|
|
||||||
# Create a table with a strange name and with strange column names.
|
# Create a table with a strange name and with strange column names.
|
||||||
#
|
#
|
||||||
@@ -84,6 +85,58 @@ do_test quote-1.6 {
|
|||||||
} msg ]
|
} msg ]
|
||||||
lappend r $msg
|
lappend r $msg
|
||||||
} {0 {}}
|
} {0 {}}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# Check that it is not possible to use double-quotes for a string
|
||||||
|
# constant in a CHECK constraint or CREATE INDEX statement. However,
|
||||||
|
# SQLite can load such a schema from disk.
|
||||||
|
#
|
||||||
|
reset_db
|
||||||
|
do_execsql_test 2.0 {
|
||||||
|
CREATE TABLE t1(x, y, z);
|
||||||
|
}
|
||||||
|
foreach {tn sql errname} {
|
||||||
|
1 { CREATE TABLE xyz(a, b, c CHECK (c!="null") ) } null
|
||||||
|
2 { CREATE INDEX i2 ON t1(x, y, z||"abc") } abc
|
||||||
|
3 { CREATE INDEX i3 ON t1("w") } w
|
||||||
|
4 { CREATE INDEX i4 ON t1(x) WHERE z="w" } w
|
||||||
|
} {
|
||||||
|
do_catchsql_test 2.1.$tn $sql [list 1 "no such column: $errname"]
|
||||||
|
}
|
||||||
|
|
||||||
|
do_execsql_test 2.2 {
|
||||||
|
PRAGMA writable_schema = 1;
|
||||||
|
CREATE TABLE xyz(a, b, c CHECK (c!="null") );
|
||||||
|
CREATE INDEX i2 ON t1(x, y, z||"abc");
|
||||||
|
CREATE INDEX i3 ON t1("w");
|
||||||
|
CREATE INDEX i4 ON t1(x) WHERE z="w";
|
||||||
|
}
|
||||||
|
|
||||||
|
db close
|
||||||
|
sqlite3 db test.db
|
||||||
|
|
||||||
|
do_execsql_test 2.3.1 {
|
||||||
|
INSERT INTO xyz VALUES(1, 2, 3);
|
||||||
|
}
|
||||||
|
do_catchsql_test 2.3.2 {
|
||||||
|
INSERT INTO xyz VALUES(1, 2, 'null');
|
||||||
|
} {1 {CHECK constraint failed: xyz}}
|
||||||
|
|
||||||
|
do_execsql_test 2.4 {
|
||||||
|
INSERT INTO t1 VALUES(1, 2, 3);
|
||||||
|
INSERT INTO t1 VALUES(4, 5, 'w');
|
||||||
|
SELECT * FROM t1 WHERE z='w';
|
||||||
|
} {4 5 w}
|
||||||
|
do_execsql_test 2.5 {
|
||||||
|
SELECT sql FROM sqlite_master;
|
||||||
|
} {
|
||||||
|
{CREATE TABLE t1(x, y, z)}
|
||||||
|
{CREATE TABLE xyz(a, b, c CHECK (c!="null") )}
|
||||||
|
{CREATE INDEX i2 ON t1(x, y, z||"abc")}
|
||||||
|
{CREATE INDEX i3 ON t1("w")}
|
||||||
|
{CREATE INDEX i4 ON t1(x) WHERE z="w"}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
@@ -715,5 +715,13 @@ do_execsql_test view-26.0 {
|
|||||||
1 1 2 2
|
1 1 2 2
|
||||||
1 1 3 3
|
1 1 3 3
|
||||||
}
|
}
|
||||||
|
do_execsql_test view-26.1 {
|
||||||
|
WITH v17(x,y) AS (SELECT max(a), min(b) FROM t16 GROUP BY c)
|
||||||
|
SELECT * FROM v17 AS one, v17 AS two WHERE one.x=1;
|
||||||
|
} {
|
||||||
|
1 1 1 1
|
||||||
|
1 1 2 2
|
||||||
|
1 1 3 3
|
||||||
|
}
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
@@ -1091,4 +1091,53 @@ do_catchsql_test 22.1 {
|
|||||||
SELECT 4 FROM c,c,c,c,c,c,c,c,c;
|
SELECT 4 FROM c,c,c,c,c,c,c,c,c;
|
||||||
} {1 {too many FROM clause terms, max: 200}}
|
} {1 {too many FROM clause terms, max: 200}}
|
||||||
|
|
||||||
|
# 2019-05-22
|
||||||
|
# ticket https://www.sqlite.org/src/tktview/ce823231949d3abf42453c8f20
|
||||||
|
#
|
||||||
|
sqlite3 db :memory:
|
||||||
|
do_execsql_test 23.1 {
|
||||||
|
CREATE TABLE t1(id INTEGER NULL PRIMARY KEY, name Text);
|
||||||
|
INSERT INTO t1 VALUES (1, 'john');
|
||||||
|
INSERT INTO t1 VALUES (2, 'james');
|
||||||
|
INSERT INTO t1 VALUES (3, 'jingle');
|
||||||
|
INSERT INTO t1 VALUES (4, 'himer');
|
||||||
|
INSERT INTO t1 VALUES (5, 'smith');
|
||||||
|
CREATE VIEW v2 AS
|
||||||
|
WITH t4(Name) AS (VALUES ('A'), ('B'))
|
||||||
|
SELECT Name Name FROM t4;
|
||||||
|
CREATE VIEW v3 AS
|
||||||
|
WITH t4(Att, Val, Act) AS (VALUES
|
||||||
|
('C', 'D', 'E'),
|
||||||
|
('F', 'G', 'H')
|
||||||
|
)
|
||||||
|
SELECT D.Id Id, P.Name Protocol, T.Att Att, T.Val Val, T.Act Act
|
||||||
|
FROM t1 D
|
||||||
|
CROSS JOIN v2 P
|
||||||
|
CROSS JOIN t4 T;
|
||||||
|
SELECT * FROM v3;
|
||||||
|
} {1 A C D E 1 A F G H 1 B C D E 1 B F G H 2 A C D E 2 A F G H 2 B C D E 2 B F G H 3 A C D E 3 A F G H 3 B C D E 3 B F G H 4 A C D E 4 A F G H 4 B C D E 4 B F G H 5 A C D E 5 A F G H 5 B C D E 5 B F G H}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
reset_db
|
||||||
|
do_execsql_test 24.1 {
|
||||||
|
CREATE TABLE t1(a, b, c);
|
||||||
|
CREATE VIEW v1 AS SELECT max(a), min(b) FROM t1 GROUP BY c;
|
||||||
|
}
|
||||||
|
do_test 24.1 {
|
||||||
|
set program [db eval {EXPLAIN SELECT 1 FROM v1,v1,v1}]
|
||||||
|
expr [lsearch $program OpenDup]>0
|
||||||
|
} {1}
|
||||||
|
do_execsql_test 24.2 {
|
||||||
|
ATTACH "" AS aux;
|
||||||
|
CREATE VIEW aux.v3 AS VALUES(1);
|
||||||
|
CREATE VIEW main.v3 AS VALUES(3);
|
||||||
|
|
||||||
|
CREATE VIEW aux.v2 AS SELECT * FROM v3;
|
||||||
|
CREATE VIEW main.v2 AS SELECT * FROM v3;
|
||||||
|
|
||||||
|
SELECT * FROM main.v2 AS a, aux.v2 AS b, aux.v2 AS c, main.v2 AS d;
|
||||||
|
} {
|
||||||
|
3 1 1 3
|
||||||
|
}
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
@@ -381,12 +381,12 @@ set pragma_def {
|
|||||||
IF: defined(SQLITE_HAS_CODEC)
|
IF: defined(SQLITE_HAS_CODEC)
|
||||||
|
|
||||||
NAME: hexkey
|
NAME: hexkey
|
||||||
TYPE: HEXKEY
|
TYPE: KEY
|
||||||
ARG: 2
|
ARG: 2
|
||||||
IF: defined(SQLITE_HAS_CODEC)
|
IF: defined(SQLITE_HAS_CODEC)
|
||||||
|
|
||||||
NAME: hexrekey
|
NAME: hexrekey
|
||||||
TYPE: HEXKEY
|
TYPE: KEY
|
||||||
ARG: 3
|
ARG: 3
|
||||||
IF: defined(SQLITE_HAS_CODEC)
|
IF: defined(SQLITE_HAS_CODEC)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user