⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test2.c

📁 sqlite-3.4.1,嵌入式数据库.是一个功能强大的开源数据库,给学习和研发以及小型公司的发展带来了全所未有的好处.
💻 C
📖 第 1 页 / 共 2 页
字号:
/*** 2001 September 15**** 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.***************************************************************************** Code for testing the pager.c module in SQLite.  This code** is not included in the SQLite library.  It is used for automated** testing of the SQLite library.**** $Id: test2.c,v 1.43 2007/04/02 05:07:47 danielk1977 Exp $*/#include "sqliteInt.h"#include "os.h"#include "pager.h"#include "tcl.h"#include <stdlib.h>#include <string.h>/*** Interpret an SQLite error number*/static char *errorName(int rc){  char *zName;  switch( rc ){    case SQLITE_OK:         zName = "SQLITE_OK";          break;    case SQLITE_ERROR:      zName = "SQLITE_ERROR";       break;    case SQLITE_PERM:       zName = "SQLITE_PERM";        break;    case SQLITE_ABORT:      zName = "SQLITE_ABORT";       break;    case SQLITE_BUSY:       zName = "SQLITE_BUSY";        break;    case SQLITE_NOMEM:      zName = "SQLITE_NOMEM";       break;    case SQLITE_READONLY:   zName = "SQLITE_READONLY";    break;    case SQLITE_INTERRUPT:  zName = "SQLITE_INTERRUPT";   break;    case SQLITE_IOERR:      zName = "SQLITE_IOERR";       break;    case SQLITE_CORRUPT:    zName = "SQLITE_CORRUPT";     break;    case SQLITE_FULL:       zName = "SQLITE_FULL";        break;    case SQLITE_CANTOPEN:   zName = "SQLITE_CANTOPEN";    break;    case SQLITE_PROTOCOL:   zName = "SQLITE_PROTOCOL";    break;    case SQLITE_EMPTY:      zName = "SQLITE_EMPTY";       break;    case SQLITE_SCHEMA:     zName = "SQLITE_SCHEMA";      break;    case SQLITE_CONSTRAINT: zName = "SQLITE_CONSTRAINT";  break;    case SQLITE_MISMATCH:   zName = "SQLITE_MISMATCH";    break;    case SQLITE_MISUSE:     zName = "SQLITE_MISUSE";      break;    case SQLITE_NOLFS:      zName = "SQLITE_NOLFS";       break;    default:                zName = "SQLITE_Unknown";     break;  }  return zName;}/*** Page size and reserved size used for testing.*/static int test_pagesize = 1024;/*** Usage:   pager_open FILENAME N-PAGE**** Open a new pager*/static int pager_open(  void *NotUsed,  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */  int argc,              /* Number of arguments */  const char **argv      /* Text of each argument */){  Pager *pPager;  int nPage;  int rc;  char zBuf[100];  if( argc!=3 ){    Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],       " FILENAME N-PAGE\"", 0);    return TCL_ERROR;  }  if( Tcl_GetInt(interp, argv[2], &nPage) ) return TCL_ERROR;  rc = sqlite3PagerOpen(&pPager, argv[1], 0, 0);  if( rc!=SQLITE_OK ){    Tcl_AppendResult(interp, errorName(rc), 0);    return TCL_ERROR;  }  sqlite3PagerSetCachesize(pPager, nPage);  sqlite3PagerSetPagesize(pPager, test_pagesize);  sqlite3_snprintf(sizeof(zBuf),zBuf,"%p",pPager);  Tcl_AppendResult(interp, zBuf, 0);  return TCL_OK;}/*** Usage:   pager_close ID**** Close the given pager.*/static int pager_close(  void *NotUsed,  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */  int argc,              /* Number of arguments */  const char **argv      /* Text of each argument */){  Pager *pPager;  int rc;  if( argc!=2 ){    Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],       " ID\"", 0);    return TCL_ERROR;  }  pPager = sqlite3TextToPtr(argv[1]);  rc = sqlite3PagerClose(pPager);  if( rc!=SQLITE_OK ){    Tcl_AppendResult(interp, errorName(rc), 0);    return TCL_ERROR;  }  return TCL_OK;}/*** Usage:   pager_rollback ID**** Rollback changes*/static int pager_rollback(  void *NotUsed,  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */  int argc,              /* Number of arguments */  const char **argv      /* Text of each argument */){  Pager *pPager;  int rc;  if( argc!=2 ){    Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],       " ID\"", 0);    return TCL_ERROR;  }  pPager = sqlite3TextToPtr(argv[1]);  rc = sqlite3PagerRollback(pPager);  if( rc!=SQLITE_OK ){    Tcl_AppendResult(interp, errorName(rc), 0);    return TCL_ERROR;  }  return TCL_OK;}/*** Usage:   pager_commit ID**** Commit all changes*/static int pager_commit(  void *NotUsed,  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */  int argc,              /* Number of arguments */  const char **argv      /* Text of each argument */){  Pager *pPager;  int rc;  if( argc!=2 ){    Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],       " ID\"", 0);    return TCL_ERROR;  }  pPager = sqlite3TextToPtr(argv[1]);  rc = sqlite3PagerCommitPhaseOne(pPager, 0, 0);  if( rc!=SQLITE_OK ){    Tcl_AppendResult(interp, errorName(rc), 0);    return TCL_ERROR;  }  rc = sqlite3PagerCommitPhaseTwo(pPager);  if( rc!=SQLITE_OK ){    Tcl_AppendResult(interp, errorName(rc), 0);    return TCL_ERROR;  }  return TCL_OK;}/*** Usage:   pager_stmt_begin ID**** Start a new checkpoint.*/static int pager_stmt_begin(  void *NotUsed,  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */  int argc,              /* Number of arguments */  const char **argv      /* Text of each argument */){  Pager *pPager;  int rc;  if( argc!=2 ){    Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],       " ID\"", 0);    return TCL_ERROR;  }  pPager = sqlite3TextToPtr(argv[1]);  rc = sqlite3PagerStmtBegin(pPager);  if( rc!=SQLITE_OK ){    Tcl_AppendResult(interp, errorName(rc), 0);    return TCL_ERROR;  }  return TCL_OK;}/*** Usage:   pager_stmt_rollback ID**** Rollback changes to a checkpoint*/static int pager_stmt_rollback(  void *NotUsed,  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */  int argc,              /* Number of arguments */  const char **argv      /* Text of each argument */){  Pager *pPager;  int rc;  if( argc!=2 ){    Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],       " ID\"", 0);    return TCL_ERROR;  }  pPager = sqlite3TextToPtr(argv[1]);  rc = sqlite3PagerStmtRollback(pPager);  if( rc!=SQLITE_OK ){    Tcl_AppendResult(interp, errorName(rc), 0);    return TCL_ERROR;  }  return TCL_OK;}/*** Usage:   pager_stmt_commit ID**** Commit changes to a checkpoint*/static int pager_stmt_commit(  void *NotUsed,  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */  int argc,              /* Number of arguments */  const char **argv      /* Text of each argument */){  Pager *pPager;  int rc;  if( argc!=2 ){    Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],       " ID\"", 0);    return TCL_ERROR;  }  pPager = sqlite3TextToPtr(argv[1]);  rc = sqlite3PagerStmtCommit(pPager);  if( rc!=SQLITE_OK ){    Tcl_AppendResult(interp, errorName(rc), 0);    return TCL_ERROR;  }  return TCL_OK;}/*** Usage:   pager_stats ID**** Return pager statistics.*/static int pager_stats(  void *NotUsed,  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */  int argc,              /* Number of arguments */  const char **argv      /* Text of each argument */){  Pager *pPager;  int i, *a;  if( argc!=2 ){    Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],       " ID\"", 0);    return TCL_ERROR;  }  pPager = sqlite3TextToPtr(argv[1]);  a = sqlite3PagerStats(pPager);  for(i=0; i<9; i++){    static char *zName[] = {      "ref", "page", "max", "size", "state", "err",      "hit", "miss", "ovfl",    };    char zBuf[100];    Tcl_AppendElement(interp, zName[i]);    sqlite3_snprintf(sizeof(zBuf),zBuf,"%d",a[i]);    Tcl_AppendElement(interp, zBuf);  }  return TCL_OK;}/*** Usage:   pager_pagecount ID**** Return the size of the database file.*/static int pager_pagecount(  void *NotUsed,  Tcl_Interp *interp,    /* The TCL interpreter that invoked this command */  int argc,              /* Number of arguments */  const char **argv      /* Text of each argument */){  Pager *pPager;  char zBuf[100];  if( argc!=2 ){    Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],       " ID\"", 0);    return TCL_ERROR;  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -