mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-18 10:21:03 +03:00
Rename the test_stat.c source file to dbstat.c and rework the makefiles to
make dbstat.c a first-class source module. FossilOrigin-Name: a24480a474993f82ff58edbe12d2093c59b1a2dc
This commit is contained in:
@@ -18,21 +18,9 @@
|
||||
** for an example implementation.
|
||||
*/
|
||||
|
||||
/* Only compile this module if there is evidence that the programmer
|
||||
** deliberately wants to include it. Evidence can be:
|
||||
** (1) Tt is compiled and linked separately from the amalgamation.
|
||||
** (2) The SQLITE_ENABLE_DBSTAT_VTAB compile-time option is used
|
||||
** (3) The SQLITE_TEST compile-time option is used
|
||||
*/
|
||||
#if !defined(SQLITE_AMALGAMATION) \
|
||||
|| defined(SQLITE_ENABLE_DBSTAT_VTAB) \
|
||||
|| defined(SQLITE_TEST)
|
||||
|
||||
#ifndef SQLITE_AMALGAMATION
|
||||
# include "sqliteInt.h" /* Requires access to internal data structures */
|
||||
#endif
|
||||
|
||||
#ifndef SQLITE_OMIT_VIRTUALTABLE
|
||||
#if (defined(SQLITE_ENABLE_DBSTAT_VTAB) || defined(SQLITE_TEST)) \
|
||||
&& !defined(SQLITE_OMIT_VIRTUAL_TABLE)
|
||||
#include "sqliteInt.h" /* Requires access to internal data structures */
|
||||
|
||||
/*
|
||||
** Page paths:
|
||||
@@ -607,6 +595,9 @@ static int statRowid(sqlite3_vtab_cursor *pCursor, sqlite_int64 *pRowid){
|
||||
return SQLITE_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** Invoke this routine to register the "dbstat" virtual table module
|
||||
*/
|
||||
int sqlite3_dbstat_register(sqlite3 *db){
|
||||
static sqlite3_module dbstat_module = {
|
||||
0, /* iVersion */
|
||||
@@ -632,52 +623,4 @@ int sqlite3_dbstat_register(sqlite3 *db){
|
||||
};
|
||||
return sqlite3_create_module(db, "dbstat", &dbstat_module, 0);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
** This is the TCL interface
|
||||
*/
|
||||
#if defined(SQLITE_TEST) || TCLSH==2
|
||||
#include <tcl.h> /* amalgamator: keep */
|
||||
|
||||
/*
|
||||
** tclcmd: register_dbstat_vtab DB
|
||||
**
|
||||
** Cause the dbstat virtual table to be available on the connection DB
|
||||
*/
|
||||
static int test_dbstat(
|
||||
void *clientData,
|
||||
Tcl_Interp *interp,
|
||||
int objc,
|
||||
Tcl_Obj *CONST objv[]
|
||||
){
|
||||
#ifdef SQLITE_OMIT_VIRTUALTABLE
|
||||
Tcl_AppendResult(interp, "dbstat not available because of "
|
||||
"SQLITE_OMIT_VIRTUALTABLE", (void*)0);
|
||||
return TCL_ERROR;
|
||||
#else
|
||||
struct SqliteDb { sqlite3 *db; };
|
||||
char *zDb;
|
||||
Tcl_CmdInfo cmdInfo;
|
||||
|
||||
if( objc!=2 ){
|
||||
Tcl_WrongNumArgs(interp, 1, objv, "DB");
|
||||
return TCL_ERROR;
|
||||
}
|
||||
|
||||
zDb = Tcl_GetString(objv[1]);
|
||||
if( Tcl_GetCommandInfo(interp, zDb, &cmdInfo) ){
|
||||
sqlite3* db = ((struct SqliteDb*)cmdInfo.objClientData)->db;
|
||||
sqlite3_dbstat_register(db);
|
||||
}
|
||||
return TCL_OK;
|
||||
#endif
|
||||
}
|
||||
int SqlitetestStat_Init(Tcl_Interp *interp){
|
||||
Tcl_CreateObjCommand(interp, "register_dbstat_vtab", test_dbstat, 0, 0);
|
||||
return TCL_OK;
|
||||
}
|
||||
#endif /* if defined(SQLITE_TEST) || TCLSH==2 */
|
||||
|
||||
#endif /* !SQLITE_AMALGAMATION || SQLITE_ENABLE_DBSTAT_VTAB || SQLITE_TEST */
|
||||
#endif /* SQLITE_ENABLE_DBSTAT_VTAB */
|
||||
@@ -3704,7 +3704,42 @@ static int db_last_stmt_ptr(
|
||||
|
||||
return TCL_OK;
|
||||
}
|
||||
#endif
|
||||
#endif /* SQLITE_TEST */
|
||||
|
||||
/*
|
||||
** tclcmd: register_dbstat_vtab DB
|
||||
**
|
||||
** Cause the dbstat virtual table to be available on the connection DB
|
||||
*/
|
||||
static int sqlite3RegisterDbstatCmd(
|
||||
void *clientData,
|
||||
Tcl_Interp *interp,
|
||||
int objc,
|
||||
Tcl_Obj *CONST objv[]
|
||||
){
|
||||
#ifdef SQLITE_OMIT_VIRTUALTABLE
|
||||
Tcl_AppendResult(interp, "dbstat not available because of "
|
||||
"SQLITE_OMIT_VIRTUALTABLE", (void*)0);
|
||||
return TCL_ERROR;
|
||||
#else
|
||||
struct SqliteDb { sqlite3 *db; };
|
||||
char *zDb;
|
||||
Tcl_CmdInfo cmdInfo;
|
||||
|
||||
if( objc!=2 ){
|
||||
Tcl_WrongNumArgs(interp, 1, objv, "DB");
|
||||
return TCL_ERROR;
|
||||
}
|
||||
|
||||
zDb = Tcl_GetString(objv[1]);
|
||||
if( Tcl_GetCommandInfo(interp, zDb, &cmdInfo) ){
|
||||
int sqlite3_dbstat_register(sqlite3*);
|
||||
sqlite3* db = ((struct SqliteDb*)cmdInfo.objClientData)->db;
|
||||
sqlite3_dbstat_register(db);
|
||||
}
|
||||
return TCL_OK;
|
||||
#endif /* SQLITE_OMIT_VIRTUALTABLE */
|
||||
}
|
||||
|
||||
/*
|
||||
** Configure the interpreter passed as the first argument to have access
|
||||
@@ -3729,10 +3764,9 @@ static void init_all(Tcl_Interp *interp){
|
||||
** required for testfixture and sqlite3_analyzer, but not by the production
|
||||
** Tcl extension. */
|
||||
#if defined(SQLITE_TEST) || TCLSH==2
|
||||
{
|
||||
extern int SqlitetestStat_Init(Tcl_Interp*);
|
||||
SqlitetestStat_Init(interp);
|
||||
}
|
||||
Tcl_CreateObjCommand(
|
||||
interp, "register_dbstat_vtab", sqlite3RegisterDbstatCmd, 0, 0
|
||||
);
|
||||
#endif
|
||||
|
||||
#ifdef SQLITE_TEST
|
||||
|
||||
Reference in New Issue
Block a user