From: dan Date: Thu, 5 Jan 2023 19:48:58 +0000 (+0000) Subject: One more iteration of "PRAGMA schema_version" instrumentation. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2ddde4074cd34b12aba52b921d20cdc40a57a750;p=thirdparty%2Fsqlite.git One more iteration of "PRAGMA schema_version" instrumentation. FossilOrigin-Name: 0d9081068ea42178d27b535ee59598cadb1f6936a9244f79b1cf0ea0eeb7ff4a --- diff --git a/manifest b/manifest index f6583d5894..7e27a0413c 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Another\siteration\sof\s"PRAGMA\sschema_version"\sinstrumentation. -D 2022-12-23T15:05:13.438 +C One\smore\siteration\sof\s"PRAGMA\sschema_version"\sinstrumentation. +D 2023-01-05T19:48:58.670 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -583,7 +583,7 @@ F src/os_setup.h 0dbaea40a7d36bf311613d31342e0b99e2536586 F src/os_unix.c 52ac6823d3895c6a3a5cf4b07c05052f7ee8bd100a076bf0cd672ec83c996246 F src/os_win.c 8d129ae3e59e0fa900e20d0ad789e96f2e08177f0b00b53cdda65c40331e0902 F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a -F src/pager.c 093dd630b9816c967cdb19c8ad60c66f245a42ca3d9147c2d4e7793193b76615 +F src/pager.c 0f8ce193a5714767f8fb5aa9e6ba39571dc42f31e647fa2147c9e50c37753115 F src/pager.h 4684b1ea6a770b6cebd9dcd519e25d9eb3891f49fad14b096b4c35e3d6d27869 F src/parse.y 17c50d262d92083badeb60b3ebe4725e19c76548f90aea898ab07d4f2940a7d8 F src/pcache.c f4268f7f73c6a3db12ce22fd25bc68dc42315d19599414ab1207d7cf32f79197 @@ -670,9 +670,9 @@ F src/util.c 0be191521ff6d2805995f4910f0b6231b42843678b2efdc1abecaf39929a673f F src/vacuum.c 5b7888f917936dda09f98b1fda164cff1dad44fb5e143436bdbb9dc3191ce2df F src/vdbe.c addae8131682cb442a636a423e3fede8aa17385e625319e79b9604ccfe3e51b1 F src/vdbe.h 2b994184581ac41e9f7ec49ac0f1569da1766f24d7a1775df67328d749a22a1c -F src/vdbeInt.h 18653d2b548b0e731531edd17824089de0cfca552622bfe6cd470377d0bf8600 +F src/vdbeInt.h 0435c992e076320036323e0dc12d0ef73a6ece0cae7bab86621cf5f10d5cbfcf F src/vdbeapi.c fc3183daf72808b4311b228989120fdbc2dc44972fb0d77d5c453460cc0e5b2c -F src/vdbeaux.c 5dff25dee51bbcbbcd016b7e414143a841469fb47e6b696eeffef4c629910c5f +F src/vdbeaux.c 5fd62fb2f8f2fb19b1be264768454b312d901e3ba489363c2fa6f810e828a4c1 F src/vdbeblob.c 5e61ce31aca17db8fb60395407457a8c1c7fb471dde405e0cd675974611dcfcd F src/vdbemem.c c3ce80af15e2ff5c2824a8db881681cbf511376f13613da020bac6d320c535b1 F src/vdbesort.c 43756031ca7430f7aec3ef904824a7883c4ede783e51f280d99b9b65c0796e35 @@ -680,7 +680,7 @@ F src/vdbetrace.c fe0bc29ebd4e02c8bc5c1945f1d2e6be5927ec12c06d89b03ef2a4def34bf8 F src/vdbevtab.c f99b275366c5fc5e2d99f734729880994ab9500bdafde7fae3b02d562b9d323c F src/vtab.c bb53f9e2eaeecca07158643dd3d5039cf13b525fe2d267e113b39a36f374556c F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9 -F src/wal.c 3785c279d3e60806bad392e3d88a41364fb10152ba92ae45ea0b0f6ff4e65781 +F src/wal.c 1676bd032fd3c23642616b8e690c479894be948fffa209954f01f8fbaa5e094d F src/wal.h 11692a4e45c39dd8851a1b226cb22046f1271dedc19a2c734af0a1929c837b91 F src/walker.c f890a3298418d7cba3b69b8803594fdc484ea241206a8dfa99db6dd36f8cbb3b F src/where.c 63e712bcad47f70e94c2150976cd7da5040933699e3938d4189d064acbe40891 @@ -2035,8 +2035,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 1e8220c1b4b5102eee08f4b1f783827156c682e5e7b00bc7283b08af15198681 -R 41d4aaac2927f538b0c671ddf4926be8 +P d5a8d6cf0506a4b656112d0e0d441635e5039816b93a57b5dfc126646bb5dc39 +R aae601264bd4b79fcfec3c01f75141b7 U dan -Z 461764c1ab10a3dad20fa66014ea57fd +Z 5baf561561aa82f6b03c6a072f74ce32 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index dcc2e163d9..79aafa9f35 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -d5a8d6cf0506a4b656112d0e0d441635e5039816b93a57b5dfc126646bb5dc39 \ No newline at end of file +0d9081068ea42178d27b535ee59598cadb1f6936a9244f79b1cf0ea0eeb7ff4a \ No newline at end of file diff --git a/src/pager.c b/src/pager.c index 58af1ac6d1..5e3e83156f 100644 --- a/src/pager.c +++ b/src/pager.c @@ -3018,14 +3018,7 @@ static int readDbPage(PgHdr *pPg){ assert( isOpen(pPager->fd) ); if( pagerUseWal(pPager) ){ - if( pPager->aSchemaVersion ){ - pPager->aSchemaVersion[SCHEMA_VERSION_FINDFRAME_CNT]++; - pPager->aSchemaVersion[SCHEMA_VERSION_FINDFRAME_TM] -= sqlite3STimeNow(); - } rc = sqlite3WalFindFrame(pPager->pWal, pPg->pgno, &iFrame); - if( pPager->aSchemaVersion ){ - pPager->aSchemaVersion[SCHEMA_VERSION_FINDFRAME_TM] += sqlite3STimeNow(); - } if( rc ) return rc; } if( iFrame ){ @@ -3274,10 +3267,13 @@ static int pagerBeginReadTransaction(Pager *pPager){ rc = sqlite3WalBeginReadTransaction(pPager->pWal, &changed); if( rc!=SQLITE_OK || changed ){ pager_reset(pPager); - if( USEFETCH(pPager) ) sqlite3OsUnfetch(pPager->fd, 0, 0); if( pPager->aSchemaVersion ){ pPager->aSchemaVersion[SCHEMA_VERSION_AFTERRESET] = sqlite3STimeNow(); } + if( USEFETCH(pPager) ) sqlite3OsUnfetch(pPager->fd, 0, 0); + if( pPager->aSchemaVersion ){ + pPager->aSchemaVersion[SCHEMA_VERSION_AFTERUNFETCH] = sqlite3STimeNow(); + } assert( pPager->journalMode==PAGER_JOURNALMODE_WAL || pPager->journalMode==PAGER_JOURNALMODE_WAL2 ); @@ -5587,9 +5583,6 @@ static int getPageNormal( PAGERTRACE(("USING page %d\n", pgno)); rc = sqlite3BitvecSet(pPager->pAllRead, pgno); if( rc!=SQLITE_OK ) goto pager_acquire_err; - if( pPager->aSchemaVersion ){ - pPager->aSchemaVersion[SCHEMA_VERSION_AFTERBITVEC] = sqlite3STimeNow(); - } } #endif diff --git a/src/vdbeInt.h b/src/vdbeInt.h index 97f6407919..56db0e3e5a 100644 --- a/src/vdbeInt.h +++ b/src/vdbeInt.h @@ -488,26 +488,20 @@ struct Vdbe { ScanStatus *aScan; /* Scan definitions for sqlite3_stmt_scanstatus() */ #endif int bSchemaVersion; - u64 aSchemaVersion[12]; + u64 aSchemaVersion[8]; }; #define SCHEMA_VERSION_START 0 /* OP_Init */ #define SCHEMA_VERSION_AFTERWALTBR 1 /* After walTryBeginRead() loop */ #define SCHEMA_VERSION_AFTEROPENWAL2 2 /* After walOpenWal2() */ -#define SCHEMA_VERSION_AFTERRESET 3 /* After pager_reset()+xFetch(0) */ -#define SCHEMA_VERSION_AFTERBITVEC 4 /* After setting the bitvec */ +#define SCHEMA_VERSION_AFTERRESET 3 /* After pager_reset() */ +#define SCHEMA_VERSION_AFTERUNFETCH 4 /* After xUnfetch(0) */ #define SCHEMA_VERSION_AFTERPCACHE 5 /* After setting the bitvec */ - -#define SCHEMA_VERSION_FINDFRAME_CNT 6 -#define SCHEMA_VERSION_FINDFRAME_TM 7 -#define SCHEMA_VERSION_XSHMMAP_CNT 8 -#define SCHEMA_VERSION_XSHMMAP_TM 9 - -#define SCHEMA_VERSION_AFTERLOCKBTREE 10 /* After lockBtree() */ -#define SCHEMA_VERSION_BEGINTRANSDONE 11 /* After BeginTrans() */ +#define SCHEMA_VERSION_AFTERLOCKBTREE 6 /* After lockBtree() */ +#define SCHEMA_VERSION_BEGINTRANSDONE 7 /* After BeginTrans() */ /* Call sqlite3_log() if "PRAGMA schema_version" is slower than this (in us) */ -#define SCHEMA_VERSION_TIMEOUT 2000000 +#define SCHEMA_VERSION_TIMEOUT 2 /* ** The following are allowed values for Vdbe.eVdbeState diff --git a/src/vdbeaux.c b/src/vdbeaux.c index 355dd1b84f..a06cae3584 100644 --- a/src/vdbeaux.c +++ b/src/vdbeaux.c @@ -5224,7 +5224,7 @@ void sqlite3SchemaVersionLog(Vdbe *v){ u64 i1 = v->aSchemaVersion[SCHEMA_VERSION_START]; if( v->aSchemaVersion[SCHEMA_VERSION_BEGINTRANSDONE]>(i1+SCHEMA_VERSION_TIMEOUT) ){ sqlite3_log(SQLITE_WARNING, - "slow \"PRAGMA schema_version\" (v=3): (%d, %d, %d, %d, %d, ffcnt=%d, fftm=%d, xscnt=%d, xstm=%d, %d, %d)", + "slow \"PRAGMA schema_version\" (v=4): (%d, %d, %d, %d, %d, %d, %d)", (v->aSchemaVersion[SCHEMA_VERSION_AFTERWALTBR]==0) ? 0 : (int)(v->aSchemaVersion[SCHEMA_VERSION_AFTERWALTBR] - i1), @@ -5234,18 +5234,12 @@ void sqlite3SchemaVersionLog(Vdbe *v){ (v->aSchemaVersion[SCHEMA_VERSION_AFTERRESET]==0) ? 0 : (int)(v->aSchemaVersion[SCHEMA_VERSION_AFTERRESET] - i1), - (v->aSchemaVersion[SCHEMA_VERSION_AFTERBITVEC]==0) ? 0 : - (int)(v->aSchemaVersion[SCHEMA_VERSION_AFTERBITVEC] - i1), + (v->aSchemaVersion[SCHEMA_VERSION_AFTERUNFETCH]==0) ? 0 : + (int)(v->aSchemaVersion[SCHEMA_VERSION_AFTERUNFETCH] - i1), (v->aSchemaVersion[SCHEMA_VERSION_AFTERPCACHE]==0) ? 0 : (int)(v->aSchemaVersion[SCHEMA_VERSION_AFTERPCACHE] - i1), - (int)v->aSchemaVersion[SCHEMA_VERSION_FINDFRAME_CNT], - (int)v->aSchemaVersion[SCHEMA_VERSION_FINDFRAME_TM], - - (int)v->aSchemaVersion[SCHEMA_VERSION_XSHMMAP_CNT], - (int)v->aSchemaVersion[SCHEMA_VERSION_XSHMMAP_TM], - (v->aSchemaVersion[SCHEMA_VERSION_AFTERLOCKBTREE]==0) ? 0 : (int)(v->aSchemaVersion[SCHEMA_VERSION_AFTERLOCKBTREE] - i1), diff --git a/src/wal.c b/src/wal.c index ddc71a83c4..e4c9b64f98 100644 --- a/src/wal.c +++ b/src/wal.c @@ -923,16 +923,9 @@ static SQLITE_NOINLINE int walIndexPageRealloc( pWal->apWiData[iPage] = (u32 volatile *)sqlite3MallocZero(WALINDEX_PGSZ); if( !pWal->apWiData[iPage] ) rc = SQLITE_NOMEM_BKPT; }else{ - if( pWal->aSchemaVersion ){ - pWal->aSchemaVersion[SCHEMA_VERSION_XSHMMAP_CNT]++; - pWal->aSchemaVersion[SCHEMA_VERSION_XSHMMAP_TM] -= sqlite3STimeNow(); - } rc = sqlite3OsShmMap(pWal->pDbFd, iPage, WALINDEX_PGSZ, pWal->writeLock, (void volatile **)&pWal->apWiData[iPage] ); - if( pWal->aSchemaVersion ){ - pWal->aSchemaVersion[SCHEMA_VERSION_XSHMMAP_TM] += sqlite3STimeNow(); - } assert( pWal->apWiData[iPage]!=0 || rc!=SQLITE_OK || (pWal->writeLock==0 && iPage==0) );