mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-07 02:42:48 +03:00
Rename the new test-control to SQLITE_TESTCTRL_JSON_SELFCHECK. Make it so
that the current value of the setting can be interrogated. FossilOrigin-Name: 7aff1d9a4cb17ecd5abab21ab032f35a78741dd641ddd8cbcc85fc4a81a0707d
This commit is contained in:
22
manifest
22
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Add\sSQLITE_TESTCTRL_VALIDATE_JSONB,\swhich\sif\senabled\sunder\sSQLITE_DEBUG\scauses\ncross-checking\sof\sgenerate\sJSONB.
|
C Rename\sthe\snew\stest-control\sto\sSQLITE_TESTCTRL_JSON_SELFCHECK.\s\sMake\sit\sso\nthat\sthe\scurrent\svalue\sof\sthe\ssetting\scan\sbe\sinterrogated.
|
||||||
D 2023-12-11T17:03:12.559
|
D 2023-12-11T19:00:44.322
|
||||||
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
|
||||||
@@ -690,16 +690,16 @@ F src/expr.c 05278def9c186b5875d6903ea26148c7461b9ce0344f0fd7be9a0dfea0a4538a
|
|||||||
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
|
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
|
||||||
F src/fkey.c a47610f0a5c6cb0ad79f8fcef039c01833dec0c751bb695f28dc0ec6a4c3ba00
|
F src/fkey.c a47610f0a5c6cb0ad79f8fcef039c01833dec0c751bb695f28dc0ec6a4c3ba00
|
||||||
F src/func.c 472f6dcfa39cf54f89a6aec76c79c225fb880a6c14469c15d361331662b9bf43
|
F src/func.c 472f6dcfa39cf54f89a6aec76c79c225fb880a6c14469c15d361331662b9bf43
|
||||||
F src/global.c c32438e08249ca9440cccff110283bc93b65d05320c8b162e492e8aef865d15c
|
F src/global.c 765a0656d6cbf043cb272ff0ae38f39cc46713539ffe6793258ed3eb4b188b52
|
||||||
F src/hash.c 9ee4269fb1d6632a6fecfb9479c93a1f29271bddbbaf215dd60420bcb80c7220
|
F src/hash.c 9ee4269fb1d6632a6fecfb9479c93a1f29271bddbbaf215dd60420bcb80c7220
|
||||||
F src/hash.h 3340ab6e1d13e725571d7cee6d3e3135f0779a7d8e76a9ce0a85971fa3953c51
|
F src/hash.h 3340ab6e1d13e725571d7cee6d3e3135f0779a7d8e76a9ce0a85971fa3953c51
|
||||||
F src/hwtime.h f9c2dfb84dce7acf95ce6d289e46f5f9d3d1afd328e53da8f8e9008e3b3caae6
|
F src/hwtime.h f9c2dfb84dce7acf95ce6d289e46f5f9d3d1afd328e53da8f8e9008e3b3caae6
|
||||||
F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
|
F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
|
||||||
F src/insert.c 3f0a94082d978bbdd33c38fefea15346c6c6bffb70bc645a71dc0f1f87dd3276
|
F src/insert.c 3f0a94082d978bbdd33c38fefea15346c6c6bffb70bc645a71dc0f1f87dd3276
|
||||||
F src/json.c ea4b13e85f81a61d0331cec790e55648785864f31eba51a74b7190e895a37ac5
|
F src/json.c 484486f07aa17757c2277f4d3eac4b6ea174532ad27cd68288ed35b0e546bd15
|
||||||
F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa
|
F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa
|
||||||
F src/loadext.c 7432c944ff197046d67a1207790a1b13eec4548c85a9457eb0896bb3641dfb36
|
F src/loadext.c 7432c944ff197046d67a1207790a1b13eec4548c85a9457eb0896bb3641dfb36
|
||||||
F src/main.c f8bfeb360386291b1f5b9ab216ab8d8655bdb52c977bc8287db3fbfd3f8a2611
|
F src/main.c ce714ee501122c76eb2e69b292bebe443aba611fc3b88e6786eb910285515fe4
|
||||||
F src/malloc.c f016922435dc7d1f1f5083a03338a3e91f8c67ce2c5bdcfa4cdef62e612f5fcc
|
F src/malloc.c f016922435dc7d1f1f5083a03338a3e91f8c67ce2c5bdcfa4cdef62e612f5fcc
|
||||||
F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
|
F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
|
||||||
F src/mem1.c 3bb59158c38e05f6270e761a9f435bf19827a264c13d1631c58b84bdc96d73b2
|
F src/mem1.c 3bb59158c38e05f6270e761a9f435bf19827a264c13d1631c58b84bdc96d73b2
|
||||||
@@ -737,11 +737,11 @@ F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
|
|||||||
F src/resolve.c d017bad7ba8e778617701a0e986fdeb393d67d6afa84fb28ef4e8b8ad2acf916
|
F src/resolve.c d017bad7ba8e778617701a0e986fdeb393d67d6afa84fb28ef4e8b8ad2acf916
|
||||||
F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
|
F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
|
||||||
F src/select.c 9f55c9f3307b9888f62abe709eec245e98ff217bd14c044f93d72810bb7dc445
|
F src/select.c 9f55c9f3307b9888f62abe709eec245e98ff217bd14c044f93d72810bb7dc445
|
||||||
F src/shell.c.in 64feb9fdb6829f7643b4e64e83f3b6261331474c4876abb8ebe70cfd33f25086
|
F src/shell.c.in 0cd2ef4b3c814dded5436625ab664d9a973cbc4266a1768e3aa4cbf11bb41eca
|
||||||
F src/sqlite.h.in d6dee6231a2b248f6f2453bf9832a51694d90578f096bcfe49414c2d0211b6eb
|
F src/sqlite.h.in adcc7dbfeea1e69d6d487139a7e90db8a48fe998f3f5bb0f85c683e6a6fa68ca
|
||||||
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
||||||
F src/sqlite3ext.h 3f046c04ea3595d6bfda99b781926b17e672fd6d27da2ba6d8d8fc39981dcb54
|
F src/sqlite3ext.h 3f046c04ea3595d6bfda99b781926b17e672fd6d27da2ba6d8d8fc39981dcb54
|
||||||
F src/sqliteInt.h f34c338e2c34e4f0795f8110ecb64ad90252306c7b3f0587ad6cf82f68e7c401
|
F src/sqliteInt.h 615524fff083abf9353aa4a3a8adca2d32b3e61e014e62b1a5335c454a386783
|
||||||
F src/sqliteLimit.h 33b1c9baba578d34efe7dfdb43193b366111cdf41476b1e82699e14c11ee1fb6
|
F src/sqliteLimit.h 33b1c9baba578d34efe7dfdb43193b366111cdf41476b1e82699e14c11ee1fb6
|
||||||
F src/status.c 160c445d7d28c984a0eae38c144f6419311ed3eace59b44ac6dafc20db4af749
|
F src/status.c 160c445d7d28c984a0eae38c144f6419311ed3eace59b44ac6dafc20db4af749
|
||||||
F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
|
F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
|
||||||
@@ -2153,8 +2153,8 @@ 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 c370d573198b151767f04e91bf8baa4ae0076751ae468c5709742a0b0ed16770
|
P b410a4db74a650003539ffaaea18519d5159b504daac47db6a4874b730f40ac8
|
||||||
R c7157327882c9dc5aa9e50e7e992741a
|
R 2937e9cc9e961c36660161b1501df048
|
||||||
U drh
|
U drh
|
||||||
Z 3bfa19b437a7164afac8549d2bca446e
|
Z a13ee25229a871327250064e3f63946b
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@@ -1 +1 @@
|
|||||||
b410a4db74a650003539ffaaea18519d5159b504daac47db6a4874b730f40ac8
|
7aff1d9a4cb17ecd5abab21ab032f35a78741dd641ddd8cbcc85fc4a81a0707d
|
@@ -245,7 +245,7 @@ SQLITE_WSD struct Sqlite3Config sqlite3Config = {
|
|||||||
1, /* bExtraSchemaChecks */
|
1, /* bExtraSchemaChecks */
|
||||||
sizeof(LONGDOUBLE_TYPE)>8, /* bUseLongDouble */
|
sizeof(LONGDOUBLE_TYPE)>8, /* bUseLongDouble */
|
||||||
#ifdef SQLITE_DEBUG
|
#ifdef SQLITE_DEBUG
|
||||||
0, /* bJsonbValidate */
|
0, /* bJsonSelfcheck */
|
||||||
#endif
|
#endif
|
||||||
0x7ffffffe, /* mxStrlen */
|
0x7ffffffe, /* mxStrlen */
|
||||||
0, /* neverCorrupt */
|
0, /* neverCorrupt */
|
||||||
|
@@ -1876,7 +1876,7 @@ static int jsonConvertTextToBlob(
|
|||||||
if( i>0 ){
|
if( i>0 ){
|
||||||
#ifdef SQLITE_DEBUG
|
#ifdef SQLITE_DEBUG
|
||||||
assert( pParse->iDepth==0 );
|
assert( pParse->iDepth==0 );
|
||||||
if( sqlite3Config.bJsonbValidate ){
|
if( sqlite3Config.bJsonSelfcheck ){
|
||||||
assert( jsonbValidityCheck(pParse, 0, pParse->nBlob, 0)==0 );
|
assert( jsonbValidityCheck(pParse, 0, pParse->nBlob, 0)==0 );
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
15
src/main.c
15
src/main.c
@@ -4660,15 +4660,24 @@ int sqlite3_test_control(int op, ...){
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* sqlite3_test_control(SQLITE_TESTCTRL_VALIDATE_JSONB, (u8)trueFalse);
|
/* sqlite3_test_control(SQLITE_TESTCTRL_JSON_SELFCHECK, &onOff);
|
||||||
**
|
**
|
||||||
** Activate or deactivate validation of JSONB that is generated from
|
** Activate or deactivate validation of JSONB that is generated from
|
||||||
** text. Off by default, as the validation is slow. Validation is
|
** text. Off by default, as the validation is slow. Validation is
|
||||||
** only available if compiled using SQLITE_DEBUG.
|
** only available if compiled using SQLITE_DEBUG.
|
||||||
|
**
|
||||||
|
** If onOff is initially 1, then turn it on. If onOff is initially
|
||||||
|
** off, turn it off. If onOff is initially -1, then change onOff
|
||||||
|
** to be the current setting.
|
||||||
*/
|
*/
|
||||||
case SQLITE_TESTCTRL_VALIDATE_JSONB: {
|
case SQLITE_TESTCTRL_JSON_SELFCHECK: {
|
||||||
#if defined(SQLITE_DEBUG)
|
#if defined(SQLITE_DEBUG)
|
||||||
sqlite3Config.bJsonbValidate = (u8)(va_arg(ap, int)&0xff);
|
int *pOnOff = va_arg(ap, int*);
|
||||||
|
if( *pOnOff<0 ){
|
||||||
|
*pOnOff = sqlite3Config.bJsonSelfcheck;
|
||||||
|
}else{
|
||||||
|
sqlite3Config.bJsonSelfcheck = (u8)((*pOnOff)&0xff);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@@ -10756,6 +10756,7 @@ static int do_meta_command(char *zLine, ShellState *p){
|
|||||||
{"fk_no_action", SQLITE_TESTCTRL_FK_NO_ACTION, 0, "BOOLEAN" },
|
{"fk_no_action", SQLITE_TESTCTRL_FK_NO_ACTION, 0, "BOOLEAN" },
|
||||||
{"imposter", SQLITE_TESTCTRL_IMPOSTER,1,"SCHEMA ON/OFF ROOTPAGE"},
|
{"imposter", SQLITE_TESTCTRL_IMPOSTER,1,"SCHEMA ON/OFF ROOTPAGE"},
|
||||||
{"internal_functions", SQLITE_TESTCTRL_INTERNAL_FUNCTIONS,0,"" },
|
{"internal_functions", SQLITE_TESTCTRL_INTERNAL_FUNCTIONS,0,"" },
|
||||||
|
{"json_selfcheck", SQLITE_TESTCTRL_JSON_SELFCHECK ,0,"BOOLEAN" },
|
||||||
{"localtime_fault", SQLITE_TESTCTRL_LOCALTIME_FAULT,0,"BOOLEAN" },
|
{"localtime_fault", SQLITE_TESTCTRL_LOCALTIME_FAULT,0,"BOOLEAN" },
|
||||||
{"never_corrupt", SQLITE_TESTCTRL_NEVER_CORRUPT,1, "BOOLEAN" },
|
{"never_corrupt", SQLITE_TESTCTRL_NEVER_CORRUPT,1, "BOOLEAN" },
|
||||||
{"optimizations", SQLITE_TESTCTRL_OPTIMIZATIONS,0,"DISABLE-MASK" },
|
{"optimizations", SQLITE_TESTCTRL_OPTIMIZATIONS,0,"DISABLE-MASK" },
|
||||||
@@ -10770,7 +10771,6 @@ static int do_meta_command(char *zLine, ShellState *p){
|
|||||||
{"sorter_mmap", SQLITE_TESTCTRL_SORTER_MMAP, 0, "NMAX" },
|
{"sorter_mmap", SQLITE_TESTCTRL_SORTER_MMAP, 0, "NMAX" },
|
||||||
{"tune", SQLITE_TESTCTRL_TUNE, 1, "ID VALUE" },
|
{"tune", SQLITE_TESTCTRL_TUNE, 1, "ID VALUE" },
|
||||||
{"uselongdouble", SQLITE_TESTCTRL_USELONGDOUBLE,0,"?BOOLEAN|\"default\"?"},
|
{"uselongdouble", SQLITE_TESTCTRL_USELONGDOUBLE,0,"?BOOLEAN|\"default\"?"},
|
||||||
{"validate_jsonb", SQLITE_TESTCTRL_VALIDATE_JSONB,0, "BOOLEAN" },
|
|
||||||
};
|
};
|
||||||
int testctrl = -1;
|
int testctrl = -1;
|
||||||
int iCtrl = -1;
|
int iCtrl = -1;
|
||||||
@@ -10975,11 +10975,15 @@ static int do_meta_command(char *zLine, ShellState *p){
|
|||||||
isOk = 3;
|
isOk = 3;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SQLITE_TESTCTRL_VALIDATE_JSONB:
|
case SQLITE_TESTCTRL_JSON_SELFCHECK:
|
||||||
if( nArg==3 ){
|
if( nArg==2 ){
|
||||||
sqlite3_test_control(testctrl, booleanValue(azArg[2]));
|
rc2 = -1;
|
||||||
|
isOk = 1;
|
||||||
|
}else{
|
||||||
|
rc2 = booleanValue(azArg[2]);
|
||||||
isOk = 3;
|
isOk = 3;
|
||||||
}
|
}
|
||||||
|
sqlite3_test_control(testctrl, &rc2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -8300,7 +8300,7 @@ int sqlite3_test_control(int op, ...);
|
|||||||
#define SQLITE_TESTCTRL_ASSERT 12
|
#define SQLITE_TESTCTRL_ASSERT 12
|
||||||
#define SQLITE_TESTCTRL_ALWAYS 13
|
#define SQLITE_TESTCTRL_ALWAYS 13
|
||||||
#define SQLITE_TESTCTRL_RESERVE 14 /* NOT USED */
|
#define SQLITE_TESTCTRL_RESERVE 14 /* NOT USED */
|
||||||
#define SQLITE_TESTCTRL_VALIDATE_JSONB 14
|
#define SQLITE_TESTCTRL_JSON_SELFCHECK 14
|
||||||
#define SQLITE_TESTCTRL_OPTIMIZATIONS 15
|
#define SQLITE_TESTCTRL_OPTIMIZATIONS 15
|
||||||
#define SQLITE_TESTCTRL_ISKEYWORD 16 /* NOT USED */
|
#define SQLITE_TESTCTRL_ISKEYWORD 16 /* NOT USED */
|
||||||
#define SQLITE_TESTCTRL_SCRATCHMALLOC 17 /* NOT USED */
|
#define SQLITE_TESTCTRL_SCRATCHMALLOC 17 /* NOT USED */
|
||||||
|
@@ -4178,7 +4178,7 @@ struct Sqlite3Config {
|
|||||||
u8 bExtraSchemaChecks; /* Verify type,name,tbl_name in schema */
|
u8 bExtraSchemaChecks; /* Verify type,name,tbl_name in schema */
|
||||||
u8 bUseLongDouble; /* Make use of long double */
|
u8 bUseLongDouble; /* Make use of long double */
|
||||||
#ifdef SQLITE_DEBUG
|
#ifdef SQLITE_DEBUG
|
||||||
u8 bJsonbValidate; /* Double-check JSONB parsing */
|
u8 bJsonSelfcheck; /* Double-check JSON parsing */
|
||||||
#endif
|
#endif
|
||||||
int mxStrlen; /* Maximum string length */
|
int mxStrlen; /* Maximum string length */
|
||||||
int neverCorrupt; /* Database is always well-formed */
|
int neverCorrupt; /* Database is always well-formed */
|
||||||
|
Reference in New Issue
Block a user