mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-07 02:42:48 +03:00
Add a TESTCTRL that disables the verification of type, name, and tbl_name
in the sqlite_master table. FossilOrigin-Name: 48d9b48ab4ace234eb1a055cf33cb533a1c3aa82d0a6e086d96226bd9474ceca
This commit is contained in:
22
manifest
22
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Validate\sthe\stype,\sname,\sand\stbl_name\sfields\sof\sthe\ssqlite_master\stable\swhen\nloading\sthe\sschema,\sunless\swritable_schema\sis\sengaged.
|
C Add\sa\sTESTCTRL\sthat\sdisables\sthe\sverification\sof\stype,\sname,\sand\stbl_name\nin\sthe\ssqlite_master\stable.
|
||||||
D 2019-08-12T00:08:07.534
|
D 2019-08-12T14:17:43.606
|
||||||
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
|
||||||
@@ -467,7 +467,7 @@ F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6
|
|||||||
F src/btree.c 781e4594098dca97db672e52ed17c7f063b5b65db144c0c1bf1e9818e7be1ad4
|
F src/btree.c 781e4594098dca97db672e52ed17c7f063b5b65db144c0c1bf1e9818e7be1ad4
|
||||||
F src/btree.h c11446f07ec0e9dc85af8041cb0855c52f5359c8b2a43e47e02a685282504d89
|
F src/btree.h c11446f07ec0e9dc85af8041cb0855c52f5359c8b2a43e47e02a685282504d89
|
||||||
F src/btreeInt.h 6111c15868b90669f79081039d19e7ea8674013f907710baa3c814dc3f8bfd3f
|
F src/btreeInt.h 6111c15868b90669f79081039d19e7ea8674013f907710baa3c814dc3f8bfd3f
|
||||||
F src/build.c d38b82d2cc13a8a80abaae12af64c4e134a15591cb6d52d841691d3f20797d7d
|
F src/build.c 7fb6ad35d162517d6bfa196f4fb2a1d7c3a362531e84c59f3a0479e0de511556
|
||||||
F src/callback.c 25dda5e1c2334a367b94a64077b1d06b2553369f616261ca6783c48bcb6bda73
|
F src/callback.c 25dda5e1c2334a367b94a64077b1d06b2553369f616261ca6783c48bcb6bda73
|
||||||
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
|
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
|
||||||
F src/ctime.c 1b0724e66f95f33b160b1af85caaf9cceb325d22abf39bd24df4f54a73982251
|
F src/ctime.c 1b0724e66f95f33b160b1af85caaf9cceb325d22abf39bd24df4f54a73982251
|
||||||
@@ -479,7 +479,7 @@ F src/expr.c 85239130e25f54279b1dfb3641984a335ce5a38709af29f9b62b555ed1459d07
|
|||||||
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
|
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
|
||||||
F src/fkey.c 6b79f4c2447691aa9ac86e2a6a774b65f3b3dd053d4220a4893051a0de20f82e
|
F src/fkey.c 6b79f4c2447691aa9ac86e2a6a774b65f3b3dd053d4220a4893051a0de20f82e
|
||||||
F src/func.c 4ee36219698d50d672a28eca4adb0fd6b92e607a1883d318315e0d2fd5044467
|
F src/func.c 4ee36219698d50d672a28eca4adb0fd6b92e607a1883d318315e0d2fd5044467
|
||||||
F src/global.c 0c9c45844ae182b458610e4d427834deffcdcd45fbc8c957f6ad82051b8f161f
|
F src/global.c d7a7a45a78ffe01302d61c271ed50474ef1b9d2d23bf17a46a58c8a1926424ee
|
||||||
F src/hash.c 8d7dda241d0ebdafb6ffdeda3149a412d7df75102cecfc1021c98d6219823b19
|
F src/hash.c 8d7dda241d0ebdafb6ffdeda3149a412d7df75102cecfc1021c98d6219823b19
|
||||||
F src/hash.h 9d56a9079d523b648774c1784b74b89bd93fac7b365210157482e4319a468f38
|
F src/hash.h 9d56a9079d523b648774c1784b74b89bd93fac7b365210157482e4319a468f38
|
||||||
F src/hwtime.h 747c1bbe9df21a92e9c50f3bbec1de841dc5e5da
|
F src/hwtime.h 747c1bbe9df21a92e9c50f3bbec1de841dc5e5da
|
||||||
@@ -487,7 +487,7 @@ F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
|
|||||||
F src/insert.c c2194dd2886337b870226fcb31c13e7df8c4b5e0ea85140e510a6f1daf1ad65b
|
F src/insert.c c2194dd2886337b870226fcb31c13e7df8c4b5e0ea85140e510a6f1daf1ad65b
|
||||||
F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa
|
F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa
|
||||||
F src/loadext.c 22afc33c3a61b4fd80a60a54f1882688371e6bc64685df2696b008fce65a999c
|
F src/loadext.c 22afc33c3a61b4fd80a60a54f1882688371e6bc64685df2696b008fce65a999c
|
||||||
F src/main.c ddba2dd3c8b11ad1d2ecc146a85a459c50a9a6b592ff154246a5db44d601d64f
|
F src/main.c 3add6433e077635dac5579edaf7b3942e3ff3dda5588c49c0edd7abea2096482
|
||||||
F src/malloc.c 0f9da2a66b230a5785af94b9672126845099b57b70a32c987d04ac28c69da990
|
F src/malloc.c 0f9da2a66b230a5785af94b9672126845099b57b70a32c987d04ac28c69da990
|
||||||
F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
|
F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
|
||||||
F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de
|
F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de
|
||||||
@@ -524,11 +524,11 @@ F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
|
|||||||
F src/resolve.c d49679d55d3cf529bbdff8734c4ac02cedfb2fc785545b89815ddb79680b9198
|
F src/resolve.c d49679d55d3cf529bbdff8734c4ac02cedfb2fc785545b89815ddb79680b9198
|
||||||
F src/rowset.c d977b011993aaea002cab3e0bb2ce50cf346000dff94e944d547b989f4b1fe93
|
F src/rowset.c d977b011993aaea002cab3e0bb2ce50cf346000dff94e944d547b989f4b1fe93
|
||||||
F src/select.c 11087458ec2af5c4b377559ea0462c2ab842e02badd35b21a8d67257c4e0b117
|
F src/select.c 11087458ec2af5c4b377559ea0462c2ab842e02badd35b21a8d67257c4e0b117
|
||||||
F src/shell.c.in 920360b4cde1a0d65a182564abacaaa8c6a54ef52fe224065019006dad76f685
|
F src/shell.c.in 1b9efc93f912a714bed08977d16b3f363c632132b9b6c8564be59e9f2c4807da
|
||||||
F src/sqlite.h.in c6bba28018378b6b43fcf4db7e9f1a3e84b0157ff54dc22ed3977acdac88e051
|
F src/sqlite.h.in 1fe019ae55182040e6ea10c89ddbb8d24c1b1015c423da53e55205398a65a906
|
||||||
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
||||||
F src/sqlite3ext.h 9ecc93b8493bd20c0c07d52e2ac0ed8bab9b549c7f7955b59869597b650dd8b5
|
F src/sqlite3ext.h 9ecc93b8493bd20c0c07d52e2ac0ed8bab9b549c7f7955b59869597b650dd8b5
|
||||||
F src/sqliteInt.h 10b44ee37e2ec15e36f8ec2f73f801389090d379cae564646ac622739ba50673
|
F src/sqliteInt.h 0598c87a995d63b09bcc408552bf38205cd902b577e74b7c3237bde71093c28b
|
||||||
F src/sqliteLimit.h 1513bfb7b20378aa0041e7022d04acb73525de35b80b252f1b83fedb4de6a76b
|
F src/sqliteLimit.h 1513bfb7b20378aa0041e7022d04acb73525de35b80b252f1b83fedb4de6a76b
|
||||||
F src/status.c 46e7aec11f79dad50965a5ca5fa9de009f7d6bde08be2156f1538a0a296d4d0e
|
F src/status.c 46e7aec11f79dad50965a5ca5fa9de009f7d6bde08be2156f1538a0a296d4d0e
|
||||||
F src/table.c b46ad567748f24a326d9de40e5b9659f96ffff34
|
F src/table.c b46ad567748f24a326d9de40e5b9659f96ffff34
|
||||||
@@ -1836,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 da01ba4fa47c6508b31533ccd769e637af04bd37f51463372fbc6c848d892a4d
|
P 724f4df9ccc2b683f7091a3f7a8c20ee210f44d7a610cd1b4c49da1c274add08
|
||||||
R e233f3c1c14b81564e9774e7c104cb1c
|
R e52d4e08443796a700878ad995be892e
|
||||||
U drh
|
U drh
|
||||||
Z 900804f532f967b21532d61caa969e9b
|
Z a1bdff4fd0620b61d82942631950a69a
|
||||||
|
@@ -1 +1 @@
|
|||||||
724f4df9ccc2b683f7091a3f7a8c20ee210f44d7a610cd1b4c49da1c274add08
|
48d9b48ab4ace234eb1a055cf33cb533a1c3aa82d0a6e086d96226bd9474ceca
|
@@ -850,9 +850,11 @@ int sqlite3CheckObjectName(
|
|||||||
|| sqlite3_stricmp(zName, db->init.azInit[1])
|
|| sqlite3_stricmp(zName, db->init.azInit[1])
|
||||||
|| sqlite3_stricmp(zTblName, db->init.azInit[2])
|
|| sqlite3_stricmp(zTblName, db->init.azInit[2])
|
||||||
){
|
){
|
||||||
|
if( sqlite3Config.bExtraSchemaChecks ){
|
||||||
sqlite3ErrorMsg(pParse, ""); /* corruptSchema() will supply the error */
|
sqlite3ErrorMsg(pParse, ""); /* corruptSchema() will supply the error */
|
||||||
return SQLITE_ERROR;
|
return SQLITE_ERROR;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}else{
|
}else{
|
||||||
if( pParse->nested==0
|
if( pParse->nested==0
|
||||||
&& 0==sqlite3StrNICmp(zName, "sqlite_", 7)
|
&& 0==sqlite3StrNICmp(zName, "sqlite_", 7)
|
||||||
|
@@ -214,6 +214,7 @@ SQLITE_WSD struct Sqlite3Config sqlite3Config = {
|
|||||||
SQLITE_USE_URI, /* bOpenUri */
|
SQLITE_USE_URI, /* bOpenUri */
|
||||||
SQLITE_ALLOW_COVERING_INDEX_SCAN, /* bUseCis */
|
SQLITE_ALLOW_COVERING_INDEX_SCAN, /* bUseCis */
|
||||||
0, /* bSmallMalloc */
|
0, /* bSmallMalloc */
|
||||||
|
1, /* bExtraSchemaChecks */
|
||||||
0x7ffffffe, /* mxStrlen */
|
0x7ffffffe, /* mxStrlen */
|
||||||
0, /* neverCorrupt */
|
0, /* neverCorrupt */
|
||||||
SQLITE_DEFAULT_LOOKASIDE, /* szLookaside, nLookaside */
|
SQLITE_DEFAULT_LOOKASIDE, /* szLookaside, nLookaside */
|
||||||
|
11
src/main.c
11
src/main.c
@@ -4063,6 +4063,17 @@ int sqlite3_test_control(int op, ...){
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* sqlite3_test_control(SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS, int);
|
||||||
|
**
|
||||||
|
** Set or clear a flag that causes SQLite to verify that type, name,
|
||||||
|
** and tbl_name fields of the sqlite_master table. This is normally
|
||||||
|
** on, but it is sometimes useful to turn it off for testing.
|
||||||
|
*/
|
||||||
|
case SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS: {
|
||||||
|
sqlite3GlobalConfig.bExtraSchemaChecks = va_arg(ap, int);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
/* Set the threshold at which OP_Once counters reset back to zero.
|
/* Set the threshold at which OP_Once counters reset back to zero.
|
||||||
** By default this is 0x7ffffffe (over 2 billion), but that value is
|
** By default this is 0x7ffffffe (over 2 billion), but that value is
|
||||||
** too big to test in a reasonable amount of time, so this control is
|
** too big to test in a reasonable amount of time, so this control is
|
||||||
|
@@ -9165,6 +9165,7 @@ static int do_meta_command(char *zLine, ShellState *p){
|
|||||||
/*{ "benign_malloc_hooks",SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS, "" },*/
|
/*{ "benign_malloc_hooks",SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS, "" },*/
|
||||||
/*{ "bitvec_test", SQLITE_TESTCTRL_BITVEC_TEST, "" },*/
|
/*{ "bitvec_test", SQLITE_TESTCTRL_BITVEC_TEST, "" },*/
|
||||||
{ "byteorder", SQLITE_TESTCTRL_BYTEORDER, "" },
|
{ "byteorder", SQLITE_TESTCTRL_BYTEORDER, "" },
|
||||||
|
{ "extra_schema_checks",SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS,"BOOLEAN" },
|
||||||
/*{ "fault_install", SQLITE_TESTCTRL_FAULT_INSTALL, "" }, */
|
/*{ "fault_install", SQLITE_TESTCTRL_FAULT_INSTALL, "" }, */
|
||||||
{ "imposter", SQLITE_TESTCTRL_IMPOSTER, "SCHEMA ON/OFF ROOTPAGE"},
|
{ "imposter", SQLITE_TESTCTRL_IMPOSTER, "SCHEMA ON/OFF ROOTPAGE"},
|
||||||
{ "internal_functions", SQLITE_TESTCTRL_INTERNAL_FUNCTIONS, "BOOLEAN" },
|
{ "internal_functions", SQLITE_TESTCTRL_INTERNAL_FUNCTIONS, "BOOLEAN" },
|
||||||
|
@@ -7359,7 +7359,8 @@ int sqlite3_test_control(int op, ...);
|
|||||||
#define SQLITE_TESTCTRL_PARSER_COVERAGE 26
|
#define SQLITE_TESTCTRL_PARSER_COVERAGE 26
|
||||||
#define SQLITE_TESTCTRL_RESULT_INTREAL 27
|
#define SQLITE_TESTCTRL_RESULT_INTREAL 27
|
||||||
#define SQLITE_TESTCTRL_PRNG_SEED 28
|
#define SQLITE_TESTCTRL_PRNG_SEED 28
|
||||||
#define SQLITE_TESTCTRL_LAST 28 /* Largest TESTCTRL */
|
#define SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS 29
|
||||||
|
#define SQLITE_TESTCTRL_LAST 29 /* Largest TESTCTRL */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: SQL Keyword Checking
|
** CAPI3REF: SQL Keyword Checking
|
||||||
|
@@ -3397,11 +3397,12 @@ typedef struct {
|
|||||||
*/
|
*/
|
||||||
struct Sqlite3Config {
|
struct Sqlite3Config {
|
||||||
int bMemstat; /* True to enable memory status */
|
int bMemstat; /* True to enable memory status */
|
||||||
int bCoreMutex; /* True to enable core mutexing */
|
u8 bCoreMutex; /* True to enable core mutexing */
|
||||||
int bFullMutex; /* True to enable full mutexing */
|
u8 bFullMutex; /* True to enable full mutexing */
|
||||||
int bOpenUri; /* True to interpret filenames as URIs */
|
u8 bOpenUri; /* True to interpret filenames as URIs */
|
||||||
int bUseCis; /* Use covering indices for full-scans */
|
u8 bUseCis; /* Use covering indices for full-scans */
|
||||||
int bSmallMalloc; /* Avoid large memory allocations if true */
|
u8 bSmallMalloc; /* Avoid large memory allocations if true */
|
||||||
|
u8 bExtraSchemaChecks; /* Verify type,name,tbl_name in schema */
|
||||||
int mxStrlen; /* Maximum string length */
|
int mxStrlen; /* Maximum string length */
|
||||||
int neverCorrupt; /* Database is always well-formed */
|
int neverCorrupt; /* Database is always well-formed */
|
||||||
int szLookaside; /* Default lookaside buffer size */
|
int szLookaside; /* Default lookaside buffer size */
|
||||||
|
Reference in New Issue
Block a user