mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-16 23:02:26 +03:00
Merge with latest trunk changes.
FossilOrigin-Name: 515cb3f4e5282551d300ba79c8885b8ca016a408
This commit is contained in:
@@ -373,6 +373,7 @@ TESTSRC = \
|
|||||||
$(TOP)/src/test_rtree.c \
|
$(TOP)/src/test_rtree.c \
|
||||||
$(TOP)/src/test_schema.c \
|
$(TOP)/src/test_schema.c \
|
||||||
$(TOP)/src/test_server.c \
|
$(TOP)/src/test_server.c \
|
||||||
|
$(TOP)/src/test_superlock.c \
|
||||||
$(TOP)/src/test_stat.c \
|
$(TOP)/src/test_stat.c \
|
||||||
$(TOP)/src/test_tclvar.c \
|
$(TOP)/src/test_tclvar.c \
|
||||||
$(TOP)/src/test_thread.c \
|
$(TOP)/src/test_thread.c \
|
||||||
|
|||||||
30
manifest
30
manifest
@@ -1,7 +1,7 @@
|
|||||||
C Add\scoverage\stests\s(and\sassociated\sfixes)\sfor\snew\smatchinfo()\scode.
|
C Merge\swith\slatest\strunk\schanges.
|
||||||
D 2010-11-25T17:49:28
|
D 2010-11-26T10:58:49
|
||||||
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
||||||
F Makefile.in e7a59672eaeb04408d1fa8501618d7501a3c5e39
|
F Makefile.in 4547616ad2286053af6ccccefa242dc925e49bf0
|
||||||
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
||||||
F Makefile.vxworks c85ec1d8597fe2f7bc225af12ac1666e21379151
|
F Makefile.vxworks c85ec1d8597fe2f7bc225af12ac1666e21379151
|
||||||
F README cd04a36fbc7ea56932a4052d7d0b7f09f27c33d6
|
F README cd04a36fbc7ea56932a4052d7d0b7f09f27c33d6
|
||||||
@@ -162,14 +162,14 @@ F src/os_common.h a8f95b81eca8a1ab8593d23e94f8a35f35d4078f
|
|||||||
F src/os_os2.c 72d0b2e562952a2464308c4ce5f7913ac10bef3e
|
F src/os_os2.c 72d0b2e562952a2464308c4ce5f7913ac10bef3e
|
||||||
F src/os_unix.c 6bbb2ac121efad111c8955d03d667946c73b1b42
|
F src/os_unix.c 6bbb2ac121efad111c8955d03d667946c73b1b42
|
||||||
F src/os_win.c 2f90f7bdec714fad51cd31b4ecad3cc1b4bb5aad
|
F src/os_win.c 2f90f7bdec714fad51cd31b4ecad3cc1b4bb5aad
|
||||||
F src/pager.c a8b36940ca8afcb45224e0017669782b3b2c90a3
|
F src/pager.c c0aca5c733c15a16fe158c3215d857841a4e5381
|
||||||
F src/pager.h 0ea59db2a33bc6c2c02cae34de33367e1effdf76
|
F src/pager.h 0ea59db2a33bc6c2c02cae34de33367e1effdf76
|
||||||
F src/parse.y 12b7ebd61ea54f0e1b1083ff69cc2c8ce9353d58
|
F src/parse.y 12b7ebd61ea54f0e1b1083ff69cc2c8ce9353d58
|
||||||
F src/pcache.c 09d38c44ab275db581f7a2f6ff8b9bc7f8c0faaa
|
F src/pcache.c 09d38c44ab275db581f7a2f6ff8b9bc7f8c0faaa
|
||||||
F src/pcache.h c683390d50f856d4cd8e24342ae62027d1bb6050
|
F src/pcache.h c683390d50f856d4cd8e24342ae62027d1bb6050
|
||||||
F src/pcache1.c e9578a3beac26f229ee558a4e16c863f2498185f
|
F src/pcache1.c e9578a3beac26f229ee558a4e16c863f2498185f
|
||||||
F src/pragma.c 8e87e9e3e8a6734995d22f60dcc8bb838db52436
|
F src/pragma.c 8a6cd3c787f882fa44f6490d2411fc26839ce8f3
|
||||||
F src/prepare.c c2b318037d626fed27905c9446730b560637217a
|
F src/prepare.c c8b877b80721d70b68053fd9ae30ec6d63eeeadc
|
||||||
F src/printf.c 8ae5082dd38a1b5456030c3755ec3a392cd51506
|
F src/printf.c 8ae5082dd38a1b5456030c3755ec3a392cd51506
|
||||||
F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
|
F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
|
||||||
F src/resolve.c 1c0f32b64f8e3f555fe1f732f9d6f501a7f05706
|
F src/resolve.c 1c0f32b64f8e3f555fe1f732f9d6f501a7f05706
|
||||||
@@ -178,7 +178,7 @@ F src/select.c 550d67688f5e8bc8022faf6d014838afba1415af
|
|||||||
F src/shell.c 8517fc1f9c59ae4007e6cc8b9af91ab231ea2056
|
F src/shell.c 8517fc1f9c59ae4007e6cc8b9af91ab231ea2056
|
||||||
F src/sqlite.h.in e6e87d10e6a3756b8c7e9a11703716b6a1575a40
|
F src/sqlite.h.in e6e87d10e6a3756b8c7e9a11703716b6a1575a40
|
||||||
F src/sqlite3ext.h c90bd5507099f62043832d73f6425d8d5c5da754
|
F src/sqlite3ext.h c90bd5507099f62043832d73f6425d8d5c5da754
|
||||||
F src/sqliteInt.h f5b5041bfebd5654212992f6ebaa3f575c4b9c17
|
F src/sqliteInt.h 7739098f7b8c9e83ed46f75744138921136ed4b8
|
||||||
F src/sqliteLimit.h a17dcd3fb775d63b64a43a55c54cb282f9726f44
|
F src/sqliteLimit.h a17dcd3fb775d63b64a43a55c54cb282f9726f44
|
||||||
F src/status.c 496913d4e8441195f6f2a75b1c95993a45b9b30b
|
F src/status.c 496913d4e8441195f6f2a75b1c95993a45b9b30b
|
||||||
F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e
|
F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e
|
||||||
@@ -217,7 +217,7 @@ F src/test_rtree.c 30c981837445a4e187ee850a49c4760d9642f7c3
|
|||||||
F src/test_schema.c 8c06ef9ddb240c7a0fcd31bc221a6a2aade58bf0
|
F src/test_schema.c 8c06ef9ddb240c7a0fcd31bc221a6a2aade58bf0
|
||||||
F src/test_server.c bbba05c144b5fc4b52ff650a4328027b3fa5fcc6
|
F src/test_server.c bbba05c144b5fc4b52ff650a4328027b3fa5fcc6
|
||||||
F src/test_stat.c f682704b5d1ba8e1d4e7e882a6d7922e2dcf066c
|
F src/test_stat.c f682704b5d1ba8e1d4e7e882a6d7922e2dcf066c
|
||||||
F src/test_superlock.c 714bb877e599f96a4923b5429ab36737c3166b09
|
F src/test_superlock.c c0c0b1f73254a0c4ad5aca69e627fe32f571f7f9
|
||||||
F src/test_tclvar.c f4dc67d5f780707210d6bb0eb6016a431c04c7fa
|
F src/test_tclvar.c f4dc67d5f780707210d6bb0eb6016a431c04c7fa
|
||||||
F src/test_thread.c bedd05cad673dba53326f3aa468cc803038896c0
|
F src/test_thread.c bedd05cad673dba53326f3aa468cc803038896c0
|
||||||
F src/test_vfs.c e10fcca756cafa89438311b31522ac1f95bf784b
|
F src/test_vfs.c e10fcca756cafa89438311b31522ac1f95bf784b
|
||||||
@@ -226,9 +226,9 @@ F src/tokenize.c 604607d6813e9551cf5189d899e0a25c12681080
|
|||||||
F src/trigger.c b8bedb9c0084ceb51a40f54fcca2ce048c8de852
|
F src/trigger.c b8bedb9c0084ceb51a40f54fcca2ce048c8de852
|
||||||
F src/update.c 227e6cd512108b84f69421fc6c7aa1b83d60d6e0
|
F src/update.c 227e6cd512108b84f69421fc6c7aa1b83d60d6e0
|
||||||
F src/utf.c 1baeeac91707a4df97ccc6141ec0f808278af685
|
F src/utf.c 1baeeac91707a4df97ccc6141ec0f808278af685
|
||||||
F src/util.c cd78524566fe45671863eee78685969a4bfd4e4c
|
F src/util.c ab1c92426494f499f42b9e307537b03e923d75c1
|
||||||
F src/vacuum.c 924bd1bcee2dfb05376f79845bd3b4cec7b54b2f
|
F src/vacuum.c 924bd1bcee2dfb05376f79845bd3b4cec7b54b2f
|
||||||
F src/vdbe.c 63bb1e56a035bc65b20d6f9c7d7c876f19b4605f
|
F src/vdbe.c 7aef0a9e174099a0b2d6b940ca9d3ae9833fd014
|
||||||
F src/vdbe.h 4de0efb4b0fdaaa900cf419b35c458933ef1c6d2
|
F src/vdbe.h 4de0efb4b0fdaaa900cf419b35c458933ef1c6d2
|
||||||
F src/vdbeInt.h 7f4cf1b2b69bef3a432b1f23dfebef57275436b4
|
F src/vdbeInt.h 7f4cf1b2b69bef3a432b1f23dfebef57275436b4
|
||||||
F src/vdbeapi.c fb0036185b3c56e15916a5ee96309cd4acf6818f
|
F src/vdbeapi.c fb0036185b3c56e15916a5ee96309cd4acf6818f
|
||||||
@@ -572,7 +572,7 @@ F test/notify3.test d60923e186e0900f4812a845fcdfd8eea096e33a
|
|||||||
F test/notnull.test cc7c78340328e6112a13c3e311a9ab3127114347
|
F test/notnull.test cc7c78340328e6112a13c3e311a9ab3127114347
|
||||||
F test/null.test a8b09b8ed87852742343b33441a9240022108993
|
F test/null.test a8b09b8ed87852742343b33441a9240022108993
|
||||||
F test/openv2.test af02ed0a9cbc0d2a61b8f35171d4d117e588e4ec
|
F test/openv2.test af02ed0a9cbc0d2a61b8f35171d4d117e588e4ec
|
||||||
F test/pager1.test 07b06b89d50bc38bb118a18b99c7bee645b315de
|
F test/pager1.test e066fb2e2dc1ac1cd9ef2b44a28ae3cc79a9150f
|
||||||
F test/pager2.test 0fbb6b6dc40ce1fecfe758c555a748ad2e9beaa3
|
F test/pager2.test 0fbb6b6dc40ce1fecfe758c555a748ad2e9beaa3
|
||||||
F test/pager3.test 3856d9c80839be0668efee1b74811b1b7f7fc95f
|
F test/pager3.test 3856d9c80839be0668efee1b74811b1b7f7fc95f
|
||||||
F test/pagerfault.test 9de4d3e0c59970b4c6cb8dac511fa242f335d8a7
|
F test/pagerfault.test 9de4d3e0c59970b4c6cb8dac511fa242f335d8a7
|
||||||
@@ -861,7 +861,7 @@ F tool/diffdb.c 7524b1b5df217c20cd0431f6789851a4e0cb191b
|
|||||||
F tool/fragck.tcl 5265a95126abcf6ab357f7efa544787e5963f439
|
F tool/fragck.tcl 5265a95126abcf6ab357f7efa544787e5963f439
|
||||||
F tool/genfkey.README cf68fddd4643bbe3ff8e31b8b6d8b0a1b85e20f4
|
F tool/genfkey.README cf68fddd4643bbe3ff8e31b8b6d8b0a1b85e20f4
|
||||||
F tool/genfkey.test 4196a8928b78f51d54ef58e99e99401ab2f0a7e5
|
F tool/genfkey.test 4196a8928b78f51d54ef58e99e99401ab2f0a7e5
|
||||||
F tool/lemon.c fe890e2d8d2db1e3f57e2a22503dbb0f6843e517
|
F tool/lemon.c dfd81a51b6e27e469ba21d01a75ddf092d429027
|
||||||
F tool/lempar.c 01ca97f87610d1dac6d8cd96ab109ab1130e76dc
|
F tool/lempar.c 01ca97f87610d1dac6d8cd96ab109ab1130e76dc
|
||||||
F tool/mkkeywordhash.c d2e6b4a5965e23afb80fbe74bb54648cd371f309
|
F tool/mkkeywordhash.c d2e6b4a5965e23afb80fbe74bb54648cd371f309
|
||||||
F tool/mkopts.tcl 66ac10d240cc6e86abd37dc908d50382f84ff46e
|
F tool/mkopts.tcl 66ac10d240cc6e86abd37dc908d50382f84ff46e
|
||||||
@@ -889,7 +889,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
|
|||||||
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
||||||
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
||||||
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
|
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
|
||||||
P ddc2b7ec2618b010c981ecfa05b3e53a9fac686f
|
P 70495ceccc793d608930f59e330777f287ba1ede 461f1a010f55e7da6b43ea65550066b1ca7abad0
|
||||||
R e123b51122e9ccc0e657b3357d0441ec
|
R 3b6d9b4a663b0a1515af15682274f8ae
|
||||||
U dan
|
U dan
|
||||||
Z 265f951641d795636aa4f45fe10ea271
|
Z dc2d0a6a7b958d42d4d80a0f05fc0556
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
70495ceccc793d608930f59e330777f287ba1ede
|
515cb3f4e5282551d300ba79c8885b8ca016a408
|
||||||
@@ -3483,9 +3483,8 @@ int sqlite3PagerMaxPageCount(Pager *pPager, int mxPage){
|
|||||||
if( mxPage>0 ){
|
if( mxPage>0 ){
|
||||||
pPager->mxPgno = mxPage;
|
pPager->mxPgno = mxPage;
|
||||||
}
|
}
|
||||||
if( pPager->eState!=PAGER_OPEN && pPager->mxPgno<pPager->dbSize ){
|
assert( pPager->eState!=PAGER_OPEN ); /* Called only by OP_MaxPgcnt */
|
||||||
pPager->mxPgno = pPager->dbSize;
|
assert( pPager->mxPgno>=pPager->dbSize ); /* OP_MaxPgcnt enforces this */
|
||||||
}
|
|
||||||
return pPager->mxPgno;
|
return pPager->mxPgno;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
59
src/pragma.c
59
src/pragma.c
@@ -35,7 +35,7 @@ static u8 getSafetyLevel(const char *z){
|
|||||||
static const u8 iValue[] = {1, 0, 0, 0, 1, 1, 2};
|
static const u8 iValue[] = {1, 0, 0, 0, 1, 1, 2};
|
||||||
int i, n;
|
int i, n;
|
||||||
if( sqlite3Isdigit(*z) ){
|
if( sqlite3Isdigit(*z) ){
|
||||||
return (u8)atoi(z);
|
return (u8)sqlite3Atoi(z);
|
||||||
}
|
}
|
||||||
n = sqlite3Strlen30(z);
|
n = sqlite3Strlen30(z);
|
||||||
for(i=0; i<ArraySize(iLength); i++){
|
for(i=0; i<ArraySize(iLength); i++){
|
||||||
@@ -76,7 +76,7 @@ static int getAutoVacuum(const char *z){
|
|||||||
if( 0==sqlite3StrICmp(z, "none") ) return BTREE_AUTOVACUUM_NONE;
|
if( 0==sqlite3StrICmp(z, "none") ) return BTREE_AUTOVACUUM_NONE;
|
||||||
if( 0==sqlite3StrICmp(z, "full") ) return BTREE_AUTOVACUUM_FULL;
|
if( 0==sqlite3StrICmp(z, "full") ) return BTREE_AUTOVACUUM_FULL;
|
||||||
if( 0==sqlite3StrICmp(z, "incremental") ) return BTREE_AUTOVACUUM_INCR;
|
if( 0==sqlite3StrICmp(z, "incremental") ) return BTREE_AUTOVACUUM_INCR;
|
||||||
i = atoi(z);
|
i = sqlite3Atoi(z);
|
||||||
return (u8)((i>=0&&i<=2)?i:0);
|
return (u8)((i>=0&&i<=2)?i:0);
|
||||||
}
|
}
|
||||||
#endif /* ifndef SQLITE_OMIT_AUTOVACUUM */
|
#endif /* ifndef SQLITE_OMIT_AUTOVACUUM */
|
||||||
@@ -384,7 +384,7 @@ void sqlite3Pragma(
|
|||||||
sqlite3VdbeChangeP1(v, addr+1, iDb);
|
sqlite3VdbeChangeP1(v, addr+1, iDb);
|
||||||
sqlite3VdbeChangeP1(v, addr+6, SQLITE_DEFAULT_CACHE_SIZE);
|
sqlite3VdbeChangeP1(v, addr+6, SQLITE_DEFAULT_CACHE_SIZE);
|
||||||
}else{
|
}else{
|
||||||
int size = atoi(zRight);
|
int size = sqlite3Atoi(zRight);
|
||||||
if( size<0 ) size = -size;
|
if( size<0 ) size = -size;
|
||||||
sqlite3BeginWriteOperation(pParse, 0, iDb);
|
sqlite3BeginWriteOperation(pParse, 0, iDb);
|
||||||
sqlite3VdbeAddOp2(v, OP_Integer, size, 1);
|
sqlite3VdbeAddOp2(v, OP_Integer, size, 1);
|
||||||
@@ -413,35 +413,13 @@ void sqlite3Pragma(
|
|||||||
/* Malloc may fail when setting the page-size, as there is an internal
|
/* Malloc may fail when setting the page-size, as there is an internal
|
||||||
** buffer that the pager module resizes using sqlite3_realloc().
|
** buffer that the pager module resizes using sqlite3_realloc().
|
||||||
*/
|
*/
|
||||||
db->nextPagesize = atoi(zRight);
|
db->nextPagesize = sqlite3Atoi(zRight);
|
||||||
if( SQLITE_NOMEM==sqlite3BtreeSetPageSize(pBt, db->nextPagesize, -1, 0) ){
|
if( SQLITE_NOMEM==sqlite3BtreeSetPageSize(pBt, db->nextPagesize, -1, 0) ){
|
||||||
db->mallocFailed = 1;
|
db->mallocFailed = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else
|
}else
|
||||||
|
|
||||||
/*
|
|
||||||
** PRAGMA [database.]max_page_count
|
|
||||||
** PRAGMA [database.]max_page_count=N
|
|
||||||
**
|
|
||||||
** The first form reports the current setting for the
|
|
||||||
** maximum number of pages in the database file. The
|
|
||||||
** second form attempts to change this setting. Both
|
|
||||||
** forms return the current setting.
|
|
||||||
*/
|
|
||||||
if( sqlite3StrICmp(zLeft,"max_page_count")==0 ){
|
|
||||||
Btree *pBt = pDb->pBt;
|
|
||||||
int newMax = 0;
|
|
||||||
assert( pBt!=0 );
|
|
||||||
if( zRight ){
|
|
||||||
newMax = atoi(zRight);
|
|
||||||
}
|
|
||||||
if( ALWAYS(pBt) ){
|
|
||||||
newMax = sqlite3BtreeMaxPageCount(pBt, newMax);
|
|
||||||
}
|
|
||||||
returnSingleInt(pParse, "max_page_count", newMax);
|
|
||||||
}else
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** PRAGMA [database.]secure_delete
|
** PRAGMA [database.]secure_delete
|
||||||
** PRAGMA [database.]secure_delete=ON/OFF
|
** PRAGMA [database.]secure_delete=ON/OFF
|
||||||
@@ -468,19 +446,33 @@ void sqlite3Pragma(
|
|||||||
}else
|
}else
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
** PRAGMA [database.]max_page_count
|
||||||
|
** PRAGMA [database.]max_page_count=N
|
||||||
|
**
|
||||||
|
** The first form reports the current setting for the
|
||||||
|
** maximum number of pages in the database file. The
|
||||||
|
** second form attempts to change this setting. Both
|
||||||
|
** forms return the current setting.
|
||||||
|
**
|
||||||
** PRAGMA [database.]page_count
|
** PRAGMA [database.]page_count
|
||||||
**
|
**
|
||||||
** Return the number of pages in the specified database.
|
** Return the number of pages in the specified database.
|
||||||
*/
|
*/
|
||||||
if( sqlite3StrICmp(zLeft,"page_count")==0 ){
|
if( sqlite3StrICmp(zLeft,"page_count")==0
|
||||||
|
|| sqlite3StrICmp(zLeft,"max_page_count")==0
|
||||||
|
){
|
||||||
int iReg;
|
int iReg;
|
||||||
if( sqlite3ReadSchema(pParse) ) goto pragma_out;
|
if( sqlite3ReadSchema(pParse) ) goto pragma_out;
|
||||||
sqlite3CodeVerifySchema(pParse, iDb);
|
sqlite3CodeVerifySchema(pParse, iDb);
|
||||||
iReg = ++pParse->nMem;
|
iReg = ++pParse->nMem;
|
||||||
sqlite3VdbeAddOp2(v, OP_Pagecount, iDb, iReg);
|
if( zLeft[0]=='p' ){
|
||||||
|
sqlite3VdbeAddOp2(v, OP_Pagecount, iDb, iReg);
|
||||||
|
}else{
|
||||||
|
sqlite3VdbeAddOp3(v, OP_MaxPgcnt, iDb, iReg, sqlite3Atoi(zRight));
|
||||||
|
}
|
||||||
sqlite3VdbeAddOp2(v, OP_ResultRow, iReg, 1);
|
sqlite3VdbeAddOp2(v, OP_ResultRow, iReg, 1);
|
||||||
sqlite3VdbeSetNumCols(v, 1);
|
sqlite3VdbeSetNumCols(v, 1);
|
||||||
sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "page_count", SQLITE_STATIC);
|
sqlite3VdbeSetColName(v, 0, COLNAME_NAME, zLeft, SQLITE_TRANSIENT);
|
||||||
}else
|
}else
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -702,7 +694,7 @@ void sqlite3Pragma(
|
|||||||
if( !zRight ){
|
if( !zRight ){
|
||||||
returnSingleInt(pParse, "cache_size", pDb->pSchema->cache_size);
|
returnSingleInt(pParse, "cache_size", pDb->pSchema->cache_size);
|
||||||
}else{
|
}else{
|
||||||
int size = atoi(zRight);
|
int size = sqlite3Atoi(zRight);
|
||||||
if( size<0 ) size = -size;
|
if( size<0 ) size = -size;
|
||||||
pDb->pSchema->cache_size = size;
|
pDb->pSchema->cache_size = size;
|
||||||
sqlite3BtreeSetCacheSize(pDb->pBt, pDb->pSchema->cache_size);
|
sqlite3BtreeSetCacheSize(pDb->pBt, pDb->pSchema->cache_size);
|
||||||
@@ -1095,7 +1087,7 @@ void sqlite3Pragma(
|
|||||||
/* Set the maximum error count */
|
/* Set the maximum error count */
|
||||||
mxErr = SQLITE_INTEGRITY_CHECK_ERROR_MAX;
|
mxErr = SQLITE_INTEGRITY_CHECK_ERROR_MAX;
|
||||||
if( zRight ){
|
if( zRight ){
|
||||||
mxErr = atoi(zRight);
|
sqlite3GetInt32(zRight, &mxErr);
|
||||||
if( mxErr<=0 ){
|
if( mxErr<=0 ){
|
||||||
mxErr = SQLITE_INTEGRITY_CHECK_ERROR_MAX;
|
mxErr = SQLITE_INTEGRITY_CHECK_ERROR_MAX;
|
||||||
}
|
}
|
||||||
@@ -1352,7 +1344,7 @@ void sqlite3Pragma(
|
|||||||
};
|
};
|
||||||
int addr = sqlite3VdbeAddOpList(v, ArraySize(setCookie), setCookie);
|
int addr = sqlite3VdbeAddOpList(v, ArraySize(setCookie), setCookie);
|
||||||
sqlite3VdbeChangeP1(v, addr, iDb);
|
sqlite3VdbeChangeP1(v, addr, iDb);
|
||||||
sqlite3VdbeChangeP1(v, addr+1, atoi(zRight));
|
sqlite3VdbeChangeP1(v, addr+1, sqlite3Atoi(zRight));
|
||||||
sqlite3VdbeChangeP1(v, addr+2, iDb);
|
sqlite3VdbeChangeP1(v, addr+2, iDb);
|
||||||
sqlite3VdbeChangeP2(v, addr+2, iCookie);
|
sqlite3VdbeChangeP2(v, addr+2, iCookie);
|
||||||
}else{
|
}else{
|
||||||
@@ -1413,8 +1405,7 @@ void sqlite3Pragma(
|
|||||||
*/
|
*/
|
||||||
if( sqlite3StrICmp(zLeft, "wal_autocheckpoint")==0 ){
|
if( sqlite3StrICmp(zLeft, "wal_autocheckpoint")==0 ){
|
||||||
if( zRight ){
|
if( zRight ){
|
||||||
int nAuto = atoi(zRight);
|
sqlite3_wal_autocheckpoint(db, sqlite3Atoi(zRight));
|
||||||
sqlite3_wal_autocheckpoint(db, nAuto);
|
|
||||||
}
|
}
|
||||||
returnSingleInt(pParse, "wal_autocheckpoint",
|
returnSingleInt(pParse, "wal_autocheckpoint",
|
||||||
db->xWalCallback==sqlite3WalDefaultHook ?
|
db->xWalCallback==sqlite3WalDefaultHook ?
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ int sqlite3InitCallback(void *pInit, int argc, char **argv, char **NotUsed){
|
|||||||
|
|
||||||
assert( db->init.busy );
|
assert( db->init.busy );
|
||||||
db->init.iDb = iDb;
|
db->init.iDb = iDb;
|
||||||
db->init.newTnum = atoi(argv[1]);
|
db->init.newTnum = sqlite3Atoi(argv[1]);
|
||||||
db->init.orphanTrigger = 0;
|
db->init.orphanTrigger = 0;
|
||||||
TESTONLY(rcp = ) sqlite3_prepare(db, argv[2], -1, &pStmt, 0);
|
TESTONLY(rcp = ) sqlite3_prepare(db, argv[2], -1, &pStmt, 0);
|
||||||
rc = db->errCode;
|
rc = db->errCode;
|
||||||
|
|||||||
@@ -2840,6 +2840,7 @@ int sqlite3FixExprList(DbFixer*, ExprList*);
|
|||||||
int sqlite3FixTriggerStep(DbFixer*, TriggerStep*);
|
int sqlite3FixTriggerStep(DbFixer*, TriggerStep*);
|
||||||
int sqlite3AtoF(const char *z, double*, int, u8);
|
int sqlite3AtoF(const char *z, double*, int, u8);
|
||||||
int sqlite3GetInt32(const char *, int*);
|
int sqlite3GetInt32(const char *, int*);
|
||||||
|
int sqlite3Atoi(const char*);
|
||||||
int sqlite3Utf16ByteLen(const void *pData, int nChar);
|
int sqlite3Utf16ByteLen(const void *pData, int nChar);
|
||||||
int sqlite3Utf8CharLen(const char *pData, int nByte);
|
int sqlite3Utf8CharLen(const char *pData, int nByte);
|
||||||
int sqlite3Utf8Read(const u8*, const u8**);
|
int sqlite3Utf8Read(const u8*, const u8**);
|
||||||
|
|||||||
@@ -102,7 +102,6 @@ static int superlockWalLock(
|
|||||||
int rc; /* Return code */
|
int rc; /* Return code */
|
||||||
sqlite3_file *fd = 0; /* Main database file handle */
|
sqlite3_file *fd = 0; /* Main database file handle */
|
||||||
void volatile *p = 0; /* Pointer to first page of shared memory */
|
void volatile *p = 0; /* Pointer to first page of shared memory */
|
||||||
int nBusy = 0; /* Number of calls already made to xBusy */
|
|
||||||
|
|
||||||
/* Obtain a pointer to the sqlite3_file object open on the main db file. */
|
/* Obtain a pointer to the sqlite3_file object open on the main db file. */
|
||||||
rc = sqlite3_file_control(db, "main", SQLITE_FCNTL_FILE_POINTER, (void *)&fd);
|
rc = sqlite3_file_control(db, "main", SQLITE_FCNTL_FILE_POINTER, (void *)&fd);
|
||||||
@@ -311,6 +310,7 @@ static int superlock_cmd(
|
|||||||
assert( rc!=SQLITE_OK || pLock!=0 );
|
assert( rc!=SQLITE_OK || pLock!=0 );
|
||||||
|
|
||||||
if( rc!=SQLITE_OK ){
|
if( rc!=SQLITE_OK ){
|
||||||
|
extern const char *sqlite3ErrStr(int);
|
||||||
Tcl_ResetResult(interp);
|
Tcl_ResetResult(interp);
|
||||||
Tcl_AppendResult(interp, sqlite3ErrStr(rc), 0);
|
Tcl_AppendResult(interp, sqlite3ErrStr(rc), 0);
|
||||||
return TCL_ERROR;
|
return TCL_ERROR;
|
||||||
|
|||||||
10
src/util.c
10
src/util.c
@@ -541,6 +541,16 @@ int sqlite3GetInt32(const char *zNum, int *pValue){
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Return a 32-bit integer value extracted from a string. If the
|
||||||
|
** string is not an integer, just return 0.
|
||||||
|
*/
|
||||||
|
int sqlite3Atoi(const char *z){
|
||||||
|
int x = 0;
|
||||||
|
if( z ) sqlite3GetInt32(z, &x);
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** The variable-length integer encoding is as follows:
|
** The variable-length integer encoding is as follows:
|
||||||
**
|
**
|
||||||
|
|||||||
26
src/vdbe.c
26
src/vdbe.c
@@ -5788,6 +5788,32 @@ case OP_Pagecount: { /* out2-prerelease */
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef SQLITE_OMIT_PAGER_PRAGMAS
|
||||||
|
/* Opcode: MaxPgcnt P1 P2 P3 * *
|
||||||
|
**
|
||||||
|
** Try to set the maximum page count for database P1 to the value in P3.
|
||||||
|
** Do not let the maximum page count fall below the current page count and
|
||||||
|
** do not change the maximum page count value if P3==0.
|
||||||
|
**
|
||||||
|
** Store the maximum page count after the change in register P2.
|
||||||
|
*/
|
||||||
|
case OP_MaxPgcnt: { /* out2-prerelease */
|
||||||
|
unsigned int newMax;
|
||||||
|
Btree *pBt;
|
||||||
|
|
||||||
|
pBt = db->aDb[pOp->p1].pBt;
|
||||||
|
newMax = 0;
|
||||||
|
if( pOp->p3 ){
|
||||||
|
newMax = sqlite3BtreeLastPage(pBt);
|
||||||
|
if( pOp->p3>newMax ) newMax = pOp->p3;
|
||||||
|
}
|
||||||
|
pOut->u.i = sqlite3BtreeMaxPageCount(pBt, newMax);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifndef SQLITE_OMIT_TRACE
|
#ifndef SQLITE_OMIT_TRACE
|
||||||
/* Opcode: Trace * * * P4 *
|
/* Opcode: Trace * * * P4 *
|
||||||
**
|
**
|
||||||
|
|||||||
@@ -1062,7 +1062,7 @@ do_execsql_test pager1-6.8 {
|
|||||||
} {11}
|
} {11}
|
||||||
do_execsql_test pager1-6.9 { COMMIT } {}
|
do_execsql_test pager1-6.9 { COMMIT } {}
|
||||||
|
|
||||||
do_execsql_test pager1-6.10 { PRAGMA max_page_count = 10 } {10}
|
do_execsql_test pager1-6.10 { PRAGMA max_page_count = 10 } {11}
|
||||||
do_execsql_test pager1-6.11 { SELECT * FROM t11 } {1 2 3 4}
|
do_execsql_test pager1-6.11 { SELECT * FROM t11 } {1 2 3 4}
|
||||||
do_execsql_test pager1-6.12 { PRAGMA max_page_count } {11}
|
do_execsql_test pager1-6.12 { PRAGMA max_page_count } {11}
|
||||||
|
|
||||||
|
|||||||
10
tool/lemon.c
10
tool/lemon.c
@@ -20,7 +20,13 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __WIN32__
|
#ifdef __WIN32__
|
||||||
extern int access();
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
extern int access(const char *path, int mode);
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
@@ -3263,7 +3269,7 @@ PRIVATE char *append_str(const char *zText, int n, int p1, int p2){
|
|||||||
}
|
}
|
||||||
n = lemonStrlen(zText);
|
n = lemonStrlen(zText);
|
||||||
}
|
}
|
||||||
if( n+sizeof(zInt)*2+used >= alloced ){
|
if( (int) (n+sizeof(zInt)*2+used) >= alloced ){
|
||||||
alloced = n + sizeof(zInt)*2 + used + 200;
|
alloced = n + sizeof(zInt)*2 + used + 200;
|
||||||
z = (char *) realloc(z, alloced);
|
z = (char *) realloc(z, alloced);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user