2 ** Read an SQLite database file and analyze its space utilization. Generate
3 ** text on standard output.
5 #define TCLSH_INIT_PROC sqlite3_checker_init_proc
6 #define SQLITE_ENABLE_DBPAGE_VTAB 1
7 #undef SQLITE_THREADSAFE
8 #define SQLITE_THREADSAFE 0
9 #undef SQLITE_ENABLE_COLUMN_METADATA
10 #define SQLITE_OMIT_DECLTYPE 1
11 #define SQLITE_OMIT_DEPRECATED 1
12 #define SQLITE_OMIT_PROGRESS_CALLBACK 1
13 #define SQLITE_OMIT_SHARED_CACHE 1
14 #define SQLITE_DEFAULT_MEMSTATUS 0
15 #define SQLITE_MAX_EXPR_DEPTH 0
17 INCLUDE $ROOT
/src
/tclsqlite
.c
18 INCLUDE $ROOT
/ext
/misc
/btreeinfo
.c
19 INCLUDE $ROOT
/ext
/repair
/checkindex
.c
20 INCLUDE $ROOT
/ext
/repair
/checkfreelist
.c
23 ** Decode a pointer to an sqlite3 object.
25 int getDbPointer(Tcl_Interp
*interp
, const char *zA
, sqlite3
**ppDb
){
28 if( Tcl_GetCommandInfo(interp
, zA
, &cmdInfo
) ){
29 p
= (struct SqliteDb
*)cmdInfo
.objClientData
;
40 ** sqlite3_imposter db main rootpage {CREATE TABLE...} ;# setup an imposter
41 ** sqlite3_imposter db main ;# rm all imposters
43 static int sqlite3_imposter(
54 if( objc
!=3 && objc
!=5 ){
55 Tcl_WrongNumArgs(interp
, 1, objv
, "DB SCHEMA [ROOTPAGE SQL]");
58 if( getDbPointer(interp
, Tcl_GetString(objv
[1]), &db
) ) return TCL_ERROR
;
59 zSchema
= Tcl_GetString(objv
[2]);
61 sqlite3_test_control(SQLITE_TESTCTRL_IMPOSTER
, db
, zSchema
, 0, 1);
63 if( Tcl_GetIntFromObj(interp
, objv
[3], &iRoot
) ) return TCL_ERROR
;
64 zSql
= Tcl_GetString(objv
[4]);
65 sqlite3_test_control(SQLITE_TESTCTRL_IMPOSTER
, db
, zSchema
, 1, iRoot
);
66 sqlite3_exec(db
, zSql
, 0, 0, 0);
67 sqlite3_test_control(SQLITE_TESTCTRL_IMPOSTER
, db
, zSchema
, 0, 0);
74 const char *sqlite3_checker_init_proc(Tcl_Interp
*interp
){
75 Tcl_CreateObjCommand(interp
, "sqlite3_imposter",
76 (Tcl_ObjCmdProc
*)sqlite3_imposter
, 0, 0);
77 sqlite3_auto_extension((void(*)(void))sqlite3_btreeinfo_init
);
78 sqlite3_auto_extension((void(*)(void))sqlite3_checkindex_init
);
79 sqlite3_auto_extension((void(*)(void))sqlite3_checkfreelist_init
);
82 INCLUDE $ROOT
/ext
/repair
/sqlite3_checker
.tcl