diff options
author | drh <drh@noemail.net> | 2002-07-06 16:32:14 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2002-07-06 16:32:14 +0000 |
commit | 0de8c11292fab66f5426cd42e882517fff498cc5 (patch) | |
tree | f4a3450a49e40969a181392a70bd661a6eef6cbc /src | |
parent | 8e298f92f61c161ce128c0d2b520ddb17dbd9748 (diff) | |
download | sqlite-0de8c11292fab66f5426cd42e882517fff498cc5.tar.gz sqlite-0de8c11292fab66f5426cd42e882517fff498cc5.zip |
Prepare for the 2.5.5 release. (CVS 661)
FossilOrigin-Name: 00f83c2576f4a9689720d344788f66219c1f6827
Diffstat (limited to 'src')
-rw-r--r-- | src/btree.c | 8 | ||||
-rw-r--r-- | src/tclsqlite.c | 6 | ||||
-rw-r--r-- | src/test3.c | 73 |
3 files changed, 79 insertions, 8 deletions
diff --git a/src/btree.c b/src/btree.c index f558a455d..0fd9713ee 100644 --- a/src/btree.c +++ b/src/btree.c @@ -9,7 +9,7 @@ ** May you share freely, never taking more than you give. ** ************************************************************************* -** $Id: btree.c,v 1.63 2002/06/21 13:09:17 drh Exp $ +** $Id: btree.c,v 1.64 2002/07/06 16:32:15 drh Exp $ ** ** This file implements a external (disk-based) database using BTrees. ** For a detailed discussion of BTrees, refer to @@ -2760,7 +2760,7 @@ static void checkAppendMsg(IntegrityCk *pCheck, char *zMsg1, char *zMsg2){ */ static int checkRef(IntegrityCk *pCheck, int iPage, char *zContext){ if( iPage==0 ) return 1; - if( iPage>pCheck->nPage ){ + if( iPage>pCheck->nPage || iPage<0 ){ char zBuf[100]; sprintf(zBuf, "invalid page number %d", iPage); checkAppendMsg(pCheck, zContext, zBuf); @@ -3006,6 +3006,10 @@ char *sqliteBtreeIntegrityCheck(Btree *pBt, int *aRoot, int nRoot){ sCheck.pBt = pBt; sCheck.pPager = pBt->pPager; sCheck.nPage = sqlitepager_pagecount(sCheck.pPager); + if( sCheck.nPage==0 ){ + unlockBtreeIfUnused(pBt); + return 0; + } sCheck.anRef = sqliteMalloc( (sCheck.nPage+1)*sizeof(sCheck.anRef[0]) ); sCheck.anRef[1] = 1; for(i=2; i<=sCheck.nPage; i++){ sCheck.anRef[i] = 0; } diff --git a/src/tclsqlite.c b/src/tclsqlite.c index 8e6bc9717..652b2cd2e 100644 --- a/src/tclsqlite.c +++ b/src/tclsqlite.c @@ -11,7 +11,7 @@ ************************************************************************* ** A TCL Interface to SQLite ** -** $Id: tclsqlite.c,v 1.34 2002/06/26 20:06:06 drh Exp $ +** $Id: tclsqlite.c,v 1.35 2002/07/06 16:32:15 drh Exp $ */ #ifndef NO_TCL /* Omit this whole file if TCL is unavailable */ @@ -267,7 +267,7 @@ static int DbBusyHandler(void *cd, const char *zTable, int nTries){ static int DbObjCmd(void *cd, Tcl_Interp *interp, int objc,Tcl_Obj *const*objv){ SqliteDb *pDb = (SqliteDb*)cd; int choice; - static char *DB_strs[] = { + static const char *DB_strs[] = { "busy", "changes", "close", "complete", "eval", "last_insert_rowid", "open_aux_file", "timeout", 0 @@ -703,7 +703,7 @@ int TCLSH_MAIN(int argc, char **argv){ TCL_GLOBAL_ONLY | TCL_LIST_ELEMENT | TCL_APPEND_VALUE); } if( Tcl_EvalFile(interp, argv[1])!=TCL_OK ){ - char *zInfo = Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY); + const char *zInfo = Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY); if( zInfo==0 ) zInfo = interp->result; fprintf(stderr,"%s: %s\n", *argv, zInfo); return 1; diff --git a/src/test3.c b/src/test3.c index 2fcd1cb02..c8bb40d5c 100644 --- a/src/test3.c +++ b/src/test3.c @@ -13,7 +13,7 @@ ** is not included in the SQLite library. It is used for automated ** testing of the SQLite library. ** -** $Id: test3.c,v 1.15 2002/06/26 20:06:06 drh Exp $ +** $Id: test3.c,v 1.16 2002/07/06 16:32:15 drh Exp $ */ #include "sqliteInt.h" #include "pager.h" @@ -67,7 +67,7 @@ static int btree_open( " FILENAME\"", 0); return TCL_ERROR; } - rc = sqliteBtreeOpen(argv[1], 0666, 10, &pBt); + rc = sqliteBtreeOpen(argv[1], 0666, 1000, &pBt); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; @@ -667,6 +667,8 @@ static int btree_next( ){ BtCursor *pCur; int rc; + int res = 0; + char zBuf[100]; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], @@ -674,11 +676,45 @@ static int btree_next( return TCL_ERROR; } if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR; - rc = sqliteBtreeNext(pCur, 0); + rc = sqliteBtreeNext(pCur, &res); if( rc ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } + sprintf(zBuf,"%d",res); + Tcl_AppendResult(interp, zBuf, 0); + return SQLITE_OK; +} + +/* +** Usage: btree_first ID +** +** Move the cursor to the first entry in the table. +*/ +static int btree_first( + void *NotUsed, + Tcl_Interp *interp, /* The TCL interpreter that invoked this command */ + int argc, /* Number of arguments */ + char **argv /* Text of each argument */ +){ + BtCursor *pCur; + int rc; + int res = 0; + char zBuf[100]; + + if( argc!=2 ){ + Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], + " ID\"", 0); + return TCL_ERROR; + } + if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR; + rc = sqliteBtreeFirst(pCur, &res); + if( rc ){ + Tcl_AppendResult(interp, errorName(rc), 0); + return TCL_ERROR; + } + sprintf(zBuf,"%d",res); + Tcl_AppendResult(interp, zBuf, 0); return SQLITE_OK; } @@ -759,6 +795,35 @@ static int btree_data( } /* +** Usage: btree_payload_size ID +** +** Return the number of bytes of payload +*/ +static int btree_payload_size( + void *NotUsed, + Tcl_Interp *interp, /* The TCL interpreter that invoked this command */ + int argc, /* Number of arguments */ + char **argv /* Text of each argument */ +){ + BtCursor *pCur; + int n1, n2; + char zBuf[50]; + + if( argc!=2 ){ + Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], + " ID\"", 0); + return TCL_ERROR; + } + if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR; + sqliteBtreeKeySize(pCur, &n1); + sqliteBtreeDataSize(pCur, &n2); + sprintf(zBuf, "%d", n1+n2); + Tcl_AppendResult(interp, zBuf, 0); + free(zBuf); + return SQLITE_OK; +} + +/* ** Usage: btree_cursor_dump ID ** ** Return eight integers containing information about the entry the @@ -832,6 +897,8 @@ int Sqlitetest3_Init(Tcl_Interp *interp){ Tcl_CreateCommand(interp, "btree_next", btree_next, 0, 0); Tcl_CreateCommand(interp, "btree_key", btree_key, 0, 0); Tcl_CreateCommand(interp, "btree_data", btree_data, 0, 0); + Tcl_CreateCommand(interp, "btree_payload_size", btree_payload_size, 0, 0); + Tcl_CreateCommand(interp, "btree_first", btree_first, 0, 0); Tcl_CreateCommand(interp, "btree_cursor_dump", btree_cursor_dump, 0, 0); Tcl_CreateCommand(interp, "btree_integrity_check", btree_integrity_check,0,0); Tcl_LinkVar(interp, "pager_refinfo_enable", (char*)&pager_refinfo_enable, |