summaryrefslogtreecommitdiff
path: root/chromium/third_party/sqlite/sqlite-src-3240000/ext/expert/test_expert.c
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/sqlite/sqlite-src-3240000/ext/expert/test_expert.c')
-rw-r--r--chromium/third_party/sqlite/sqlite-src-3240000/ext/expert/test_expert.c220
1 files changed, 0 insertions, 220 deletions
diff --git a/chromium/third_party/sqlite/sqlite-src-3240000/ext/expert/test_expert.c b/chromium/third_party/sqlite/sqlite-src-3240000/ext/expert/test_expert.c
deleted file mode 100644
index 064c1908a96..00000000000
--- a/chromium/third_party/sqlite/sqlite-src-3240000/ext/expert/test_expert.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
-** 2017 April 07
-**
-** The author disclaims copyright to this source code. In place of
-** a legal notice, here is a blessing:
-**
-** May you do good and not evil.
-** May you find forgiveness for yourself and forgive others.
-** May you share freely, never taking more than you give.
-**
-*************************************************************************
-*/
-
-#if defined(SQLITE_TEST)
-
-#include "sqlite3expert.h"
-#include <assert.h>
-#include <string.h>
-
-#if defined(INCLUDE_SQLITE_TCL_H)
-# include "sqlite_tcl.h"
-#else
-# include "tcl.h"
-# ifndef SQLITE_TCLAPI
-# define SQLITE_TCLAPI
-# endif
-#endif
-
-#ifndef SQLITE_OMIT_VIRTUALTABLE
-
-/*
-** Extract an sqlite3* db handle from the object passed as the second
-** argument. If successful, set *pDb to point to the db handle and return
-** TCL_OK. Otherwise, return TCL_ERROR.
-*/
-static int dbHandleFromObj(Tcl_Interp *interp, Tcl_Obj *pObj, sqlite3 **pDb){
- Tcl_CmdInfo info;
- if( 0==Tcl_GetCommandInfo(interp, Tcl_GetString(pObj), &info) ){
- Tcl_AppendResult(interp, "no such handle: ", Tcl_GetString(pObj), 0);
- return TCL_ERROR;
- }
-
- *pDb = *(sqlite3 **)info.objClientData;
- return TCL_OK;
-}
-
-
-/*
-** Tclcmd: $expert sql SQL
-** $expert analyze
-** $expert count
-** $expert report STMT EREPORT
-** $expert destroy
-*/
-static int SQLITE_TCLAPI testExpertCmd(
- void *clientData,
- Tcl_Interp *interp,
- int objc,
- Tcl_Obj *CONST objv[]
-){
- sqlite3expert *pExpert = (sqlite3expert*)clientData;
- struct Subcmd {
- const char *zSub;
- int nArg;
- const char *zMsg;
- } aSub[] = {
- { "sql", 1, "TABLE", }, /* 0 */
- { "analyze", 0, "", }, /* 1 */
- { "count", 0, "", }, /* 2 */
- { "report", 2, "STMT EREPORT", }, /* 3 */
- { "destroy", 0, "", }, /* 4 */
- { 0 }
- };
- int iSub;
- int rc = TCL_OK;
- char *zErr = 0;
-
- if( objc<2 ){
- Tcl_WrongNumArgs(interp, 1, objv, "SUBCOMMAND ...");
- return TCL_ERROR;
- }
- rc = Tcl_GetIndexFromObjStruct(interp,
- objv[1], aSub, sizeof(aSub[0]), "sub-command", 0, &iSub
- );
- if( rc!=TCL_OK ) return rc;
- if( objc!=2+aSub[iSub].nArg ){
- Tcl_WrongNumArgs(interp, 2, objv, aSub[iSub].zMsg);
- return TCL_ERROR;
- }
-
- switch( iSub ){
- case 0: { /* sql */
- char *zArg = Tcl_GetString(objv[2]);
- rc = sqlite3_expert_sql(pExpert, zArg, &zErr);
- break;
- }
-
- case 1: { /* analyze */
- rc = sqlite3_expert_analyze(pExpert, &zErr);
- break;
- }
-
- case 2: { /* count */
- int n = sqlite3_expert_count(pExpert);
- Tcl_SetObjResult(interp, Tcl_NewIntObj(n));
- break;
- }
-
- case 3: { /* report */
- const char *aEnum[] = {
- "sql", "indexes", "plan", "candidates", 0
- };
- int iEnum;
- int iStmt;
- const char *zReport;
-
- if( Tcl_GetIntFromObj(interp, objv[2], &iStmt)
- || Tcl_GetIndexFromObj(interp, objv[3], aEnum, "report", 0, &iEnum)
- ){
- return TCL_ERROR;
- }
-
- assert( EXPERT_REPORT_SQL==1 );
- assert( EXPERT_REPORT_INDEXES==2 );
- assert( EXPERT_REPORT_PLAN==3 );
- assert( EXPERT_REPORT_CANDIDATES==4 );
- zReport = sqlite3_expert_report(pExpert, iStmt, 1+iEnum);
- Tcl_SetObjResult(interp, Tcl_NewStringObj(zReport, -1));
- break;
- }
-
- default: /* destroy */
- assert( iSub==4 );
- Tcl_DeleteCommand(interp, Tcl_GetString(objv[0]));
- break;
- }
-
- if( rc!=TCL_OK ){
- if( zErr ){
- Tcl_SetObjResult(interp, Tcl_NewStringObj(zErr, -1));
- }else{
- extern const char *sqlite3ErrName(int);
- Tcl_SetObjResult(interp, Tcl_NewStringObj(sqlite3ErrName(rc), -1));
- }
- }
- sqlite3_free(zErr);
- return rc;
-}
-
-static void SQLITE_TCLAPI testExpertDel(void *clientData){
- sqlite3expert *pExpert = (sqlite3expert*)clientData;
- sqlite3_expert_destroy(pExpert);
-}
-
-/*
-** sqlite3_expert_new DB
-*/
-static int SQLITE_TCLAPI test_sqlite3_expert_new(
- void * clientData,
- Tcl_Interp *interp,
- int objc,
- Tcl_Obj *CONST objv[]
-){
- static int iCmd = 0;
- sqlite3 *db;
- char *zCmd = 0;
- char *zErr = 0;
- sqlite3expert *pExpert;
- int rc = TCL_OK;
-
- if( objc!=2 ){
- Tcl_WrongNumArgs(interp, 1, objv, "DB");
- return TCL_ERROR;
- }
- if( dbHandleFromObj(interp, objv[1], &db) ){
- return TCL_ERROR;
- }
-
- zCmd = sqlite3_mprintf("sqlite3expert%d", ++iCmd);
- if( zCmd==0 ){
- Tcl_AppendResult(interp, "out of memory", (char*)0);
- return TCL_ERROR;
- }
-
- pExpert = sqlite3_expert_new(db, &zErr);
- if( pExpert==0 ){
- Tcl_AppendResult(interp, zErr, (char*)0);
- rc = TCL_ERROR;
- }else{
- void *p = (void*)pExpert;
- Tcl_CreateObjCommand(interp, zCmd, testExpertCmd, p, testExpertDel);
- Tcl_SetObjResult(interp, Tcl_NewStringObj(zCmd, -1));
- }
-
- sqlite3_free(zCmd);
- sqlite3_free(zErr);
- return rc;
-}
-
-#endif /* ifndef SQLITE_OMIT_VIRTUALTABLE */
-
-int TestExpert_Init(Tcl_Interp *interp){
-#ifndef SQLITE_OMIT_VIRTUALTABLE
- struct Cmd {
- const char *zCmd;
- Tcl_ObjCmdProc *xProc;
- } aCmd[] = {
- { "sqlite3_expert_new", test_sqlite3_expert_new },
- };
- int i;
-
- for(i=0; i<sizeof(aCmd)/sizeof(struct Cmd); i++){
- struct Cmd *p = &aCmd[i];
- Tcl_CreateObjCommand(interp, p->zCmd, p->xProc, 0, 0);
- }
-#endif
- return TCL_OK;
-}
-
-#endif