4 ** The author disclaims copyright to this source code. In place of
5 ** a legal notice, here is a blessing:
7 ** May you do good and not evil.
8 ** May you find forgiveness for yourself and forgive others.
9 ** May you share freely, never taking more than you give.
11 *************************************************************************
12 ** Code for testing the btree.c module in SQLite. This code
13 ** is not included in the SQLite library. It is used for automated
14 ** testing of the SQLite library.
20 ** Usage: sqlite3_shared_cache_report
22 ** Return a list of file that are shared and the number of
23 ** references to each file.
25 int sqlite3BtreeSharedCacheReport(
31 #ifndef SQLITE_OMIT_SHARED_CACHE
32 extern BtShared
*sqlite3SharedCacheList
;
34 Tcl_Obj
*pRet
= Tcl_NewObj();
35 for(pBt
=GLOBAL(BtShared
*,sqlite3SharedCacheList
); pBt
; pBt
=pBt
->pNext
){
36 const char *zFile
= sqlite3PagerFilename(pBt
->pPager
);
37 Tcl_ListObjAppendElement(interp
, pRet
, Tcl_NewStringObj(zFile
, -1));
38 Tcl_ListObjAppendElement(interp
, pRet
, Tcl_NewIntObj(pBt
->nRef
));
40 Tcl_SetObjResult(interp
, pRet
);
46 ** Print debugging information about all cursors to standard output.
48 void sqlite3BtreeCursorList(Btree
*p
){
51 BtShared
*pBt
= p
->pBt
;
52 for(pCur
=pBt
->pCursor
; pCur
; pCur
=pCur
->pNext
){
53 MemPage
*pPage
= pCur
->apPage
[pCur
->iPage
];
54 char *zMode
= pCur
->wrFlag
? "rw" : "ro";
55 sqlite3DebugPrintf("CURSOR %p rooted at %4d(%s) currently at %d.%d%s\n",
56 pCur
, pCur
->pgnoRoot
, zMode
,
57 pPage
? pPage
->pgno
: 0, pCur
->aiIdx
[pCur
->iPage
],
58 (pCur
->eState
==CURSOR_VALID
) ? "" : " eof"