Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Remove leftover debugging commands (breakpoint and btree_breakpoint) from test scripts. (CVS 5400) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
dcb160249fa2d592ad09b8b0052102dc |
User & Date: | drh 2008-07-12 14:52:20.000 |
Context
2008-07-12
| ||
15:55 | Fix the test script --binarylog option. (CVS 5401) (check-in: 03e3cfc4cc user: danielk1977 tags: trunk) | |
14:52 | Remove leftover debugging commands (breakpoint and btree_breakpoint) from test scripts. (CVS 5400) (check-in: dcb160249f user: drh tags: trunk) | |
2008-07-11
| ||
21:02 | Detect and handles the case where a row is modified or deleted while it is being read during SELECT processing. (CVS 5399) (check-in: c80a5d0993 user: drh tags: trunk) | |
Changes
Changes to src/btree.c.
1 2 3 4 5 6 7 8 9 10 11 | /* ** 2004 April 6 ** ** 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. ** ************************************************************************* | | | > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | /* ** 2004 April 6 ** ** 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. ** ************************************************************************* ** $Id: btree.c,v 1.482 2008/07/12 14:52:20 drh Exp $ ** ** This file implements a external (disk-based) database using BTrees. ** See the header comment on "btreeInt.h" for additional information. ** Including a description of file format and an overview of operation. */ #include "btreeInt.h" /* ** The header string that appears at the beginning of every ** SQLite database. */ static const char zMagicHeader[] = SQLITE_FILE_HEADER; /* ** Set this global variable to 1 to enable tracing using the TRACE ** macro. */ #if 0 int sqlite3BtreeTrace=0; /* True to enable tracing */ # define TRACE(X) if(sqlite3BtreeTrace){printf X;fflush(stdout);} #else # define TRACE(X) #endif #ifndef SQLITE_OMIT_SHARED_CACHE /* ** A flag to indicate whether or not shared cache is enabled. Also, |
︙ | ︙ |
Changes to src/btreeInt.h.
1 2 3 4 5 6 7 8 9 10 11 | /* ** 2004 April 6 ** ** 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. ** ************************************************************************* | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | /* ** 2004 April 6 ** ** 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. ** ************************************************************************* ** $Id: btreeInt.h,v 1.26 2008/07/12 14:52:20 drh Exp $ ** ** This file implements a external (disk-based) database using BTrees. ** For a detailed discussion of BTrees, refer to ** ** Donald E. Knuth, THE ART OF COMPUTER PROGRAMMING, Volume 3: ** "Sorting And Searching", pages 473-480. Addison-Wesley ** Publishing Company, Reading, Massachusetts. |
︙ | ︙ | |||
477 478 479 480 481 482 483 | ** should return the error code stored in BtCursor.skip */ #define CURSOR_INVALID 0 #define CURSOR_VALID 1 #define CURSOR_REQUIRESEEK 2 #define CURSOR_FAULT 3 | < < < < < < < < < < < | 477 478 479 480 481 482 483 484 485 486 487 488 489 490 | ** should return the error code stored in BtCursor.skip */ #define CURSOR_INVALID 0 #define CURSOR_VALID 1 #define CURSOR_REQUIRESEEK 2 #define CURSOR_FAULT 3 /* The database page the PENDING_BYTE occupies. This page is never used. ** TODO: This macro is very similary to PAGER_MJ_PGNO() in pager.c. They ** should possibly be consolidated (presumably in pager.h). ** ** If disk I/O is omitted (meaning that the database is stored purely ** in memory) then there is no pending byte. */ |
︙ | ︙ |
Changes to src/sqliteInt.h.
1 2 3 4 5 6 7 8 9 10 11 12 13 | /* ** 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. ** ************************************************************************* ** Internal interface definitions for SQLite. ** | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /* ** 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. ** ************************************************************************* ** Internal interface definitions for SQLite. ** ** @(#) $Id: sqliteInt.h,v 1.742 2008/07/12 14:52:20 drh Exp $ */ #ifndef _SQLITEINT_H_ #define _SQLITEINT_H_ /* ** Include the configuration header output by 'configure' if we're using the ** autoconf-based build |
︙ | ︙ | |||
1862 1863 1864 1865 1866 1867 1868 | void sqlite3VXPrintf(StrAccum*, int, const char*, va_list); char *sqlite3MPrintf(sqlite3*,const char*, ...); char *sqlite3VMPrintf(sqlite3*,const char*, va_list); #if defined(SQLITE_TEST) || defined(SQLITE_DEBUG) void sqlite3DebugPrintf(const char*, ...); #endif #if defined(SQLITE_TEST) | | | 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 | void sqlite3VXPrintf(StrAccum*, int, const char*, va_list); char *sqlite3MPrintf(sqlite3*,const char*, ...); char *sqlite3VMPrintf(sqlite3*,const char*, va_list); #if defined(SQLITE_TEST) || defined(SQLITE_DEBUG) void sqlite3DebugPrintf(const char*, ...); #endif #if defined(SQLITE_TEST) void *sqlite3TestTextToPtr(const char*); #endif void sqlite3SetString(char **, sqlite3*, const char*, ...); void sqlite3ErrorMsg(Parse*, const char*, ...); void sqlite3ErrorClear(Parse*); void sqlite3Dequote(char*); void sqlite3DequoteExpr(sqlite3*, Expr*); int sqlite3KeywordCode(const unsigned char*, int); |
︙ | ︙ |
Changes to src/test1.c.
︙ | ︙ | |||
9 10 11 12 13 14 15 | ** May you share freely, never taking more than you give. ** ************************************************************************* ** Code for testing all sorts of SQLite interfaces. This code ** is not included in the SQLite library. It is used for automated ** testing of the SQLite library. ** | | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | ** May you share freely, never taking more than you give. ** ************************************************************************* ** Code for testing all sorts of SQLite interfaces. This code ** is not included in the SQLite library. It is used for automated ** testing of the SQLite library. ** ** $Id: test1.c,v 1.315 2008/07/12 14:52:20 drh Exp $ */ #include "sqliteInt.h" #include "tcl.h" #include <stdlib.h> #include <string.h> /* |
︙ | ︙ | |||
40 41 42 43 44 45 46 | }else if( h>='a' && h<='f' ){ return h - 'a' + 10; }else{ assert( h>='A' && h<='F' ); return h - 'A' + 10; } } | | | 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | }else if( h>='a' && h<='f' ){ return h - 'a' + 10; }else{ assert( h>='A' && h<='F' ); return h - 'A' + 10; } } void *sqlite3TestTextToPtr(const char *z){ void *p; u64 v; u32 v2; if( z[0]=='0' && z[1]=='x' ){ z += 2; } v = 0; |
︙ | ︙ | |||
105 106 107 108 109 110 111 | int getDbPointer(Tcl_Interp *interp, const char *zA, sqlite3 **ppDb){ struct SqliteDb *p; Tcl_CmdInfo cmdInfo; if( Tcl_GetCommandInfo(interp, zA, &cmdInfo) ){ p = (struct SqliteDb*)cmdInfo.objClientData; *ppDb = p->db; }else{ | | | 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | int getDbPointer(Tcl_Interp *interp, const char *zA, sqlite3 **ppDb){ struct SqliteDb *p; Tcl_CmdInfo cmdInfo; if( Tcl_GetCommandInfo(interp, zA, &cmdInfo) ){ p = (struct SqliteDb*)cmdInfo.objClientData; *ppDb = p->db; }else{ *ppDb = (sqlite3*)sqlite3TestTextToPtr(zA); } return TCL_OK; } const char *sqlite3TestErrorName(int rc){ const char *zName = 0; |
︙ | ︙ | |||
178 179 180 181 182 183 184 | ** Decode a pointer to an sqlite3_stmt object. */ static int getStmtPointer( Tcl_Interp *interp, const char *zArg, sqlite3_stmt **ppStmt ){ | | | 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 | ** Decode a pointer to an sqlite3_stmt object. */ static int getStmtPointer( Tcl_Interp *interp, const char *zArg, sqlite3_stmt **ppStmt ){ *ppStmt = (sqlite3_stmt*)sqlite3TestTextToPtr(zArg); return TCL_OK; } /* ** Generate a text representation of a pointer that can be understood ** by the getDbPointer and getVmPointer routines above. ** |
︙ | ︙ |
Changes to src/test2.c.
︙ | ︙ | |||
9 10 11 12 13 14 15 | ** 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. ** | | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | ** 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.59 2008/07/12 14:52:20 drh Exp $ */ #include "sqliteInt.h" #include "tcl.h" #include <stdlib.h> #include <string.h> #include <ctype.h> |
︙ | ︙ | |||
106 107 108 109 110 111 112 | Pager *pPager; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | Pager *pPager; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pPager = sqlite3TestTextToPtr(argv[1]); rc = sqlite3PagerClose(pPager); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } return TCL_OK; } |
︙ | ︙ | |||
133 134 135 136 137 138 139 | Pager *pPager; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 | Pager *pPager; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pPager = sqlite3TestTextToPtr(argv[1]); rc = sqlite3PagerRollback(pPager); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } return TCL_OK; } |
︙ | ︙ | |||
160 161 162 163 164 165 166 | Pager *pPager; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 | Pager *pPager; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pPager = sqlite3TestTextToPtr(argv[1]); rc = sqlite3PagerCommitPhaseOne(pPager, 0, 0, 0); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } rc = sqlite3PagerCommitPhaseTwo(pPager); if( rc!=SQLITE_OK ){ |
︙ | ︙ | |||
192 193 194 195 196 197 198 | Pager *pPager; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 | Pager *pPager; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pPager = sqlite3TestTextToPtr(argv[1]); rc = sqlite3PagerStmtBegin(pPager); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } return TCL_OK; } |
︙ | ︙ | |||
219 220 221 222 223 224 225 | Pager *pPager; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 | Pager *pPager; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pPager = sqlite3TestTextToPtr(argv[1]); rc = sqlite3PagerStmtRollback(pPager); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } return TCL_OK; } |
︙ | ︙ | |||
246 247 248 249 250 251 252 | Pager *pPager; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 | Pager *pPager; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pPager = sqlite3TestTextToPtr(argv[1]); rc = sqlite3PagerStmtCommit(pPager); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } return TCL_OK; } |
︙ | ︙ | |||
273 274 275 276 277 278 279 | Pager *pPager; int i, *a; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 | Pager *pPager; int i, *a; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pPager = sqlite3TestTextToPtr(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]; |
︙ | ︙ | |||
307 308 309 310 311 312 313 | char zBuf[100]; int nPage; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 | char zBuf[100]; int nPage; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pPager = sqlite3TestTextToPtr(argv[1]); sqlite3PagerPagecount(pPager, &nPage); sqlite3_snprintf(sizeof(zBuf), zBuf, "%d", nPage); Tcl_AppendResult(interp, zBuf, 0); return TCL_OK; } /* |
︙ | ︙ | |||
335 336 337 338 339 340 341 | int pgno; int rc; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID PGNO\"", 0); return TCL_ERROR; } | | | 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 | int pgno; int rc; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID PGNO\"", 0); return TCL_ERROR; } pPager = sqlite3TestTextToPtr(argv[1]); if( Tcl_GetInt(interp, argv[2], &pgno) ) return TCL_ERROR; rc = sqlite3PagerGet(pPager, pgno, &pPage); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } sqlite3_snprintf(sizeof(zBuf),zBuf,"%p",pPage); |
︙ | ︙ | |||
368 369 370 371 372 373 374 | DbPage *pPage; int pgno; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID PGNO\"", 0); return TCL_ERROR; } | | | 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 | DbPage *pPage; int pgno; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID PGNO\"", 0); return TCL_ERROR; } pPager = sqlite3TestTextToPtr(argv[1]); if( Tcl_GetInt(interp, argv[2], &pgno) ) return TCL_ERROR; pPage = sqlite3PagerLookup(pPager, pgno); if( pPage ){ sqlite3_snprintf(sizeof(zBuf),zBuf,"%p",pPage); Tcl_AppendResult(interp, zBuf, 0); } return TCL_OK; |
︙ | ︙ | |||
395 396 397 398 399 400 401 | int rc; int pgno; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID PGNO\"", 0); return TCL_ERROR; } | | | 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 | int rc; int pgno; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID PGNO\"", 0); return TCL_ERROR; } pPager = sqlite3TestTextToPtr(argv[1]); if( Tcl_GetInt(interp, argv[2], &pgno) ) return TCL_ERROR; rc = sqlite3PagerTruncate(pPager, pgno); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } return TCL_OK; |
︙ | ︙ | |||
424 425 426 427 428 429 430 | DbPage *pPage; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " PAGE\"", 0); return TCL_ERROR; } | | | 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 | DbPage *pPage; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " PAGE\"", 0); return TCL_ERROR; } pPage = (DbPage *)sqlite3TestTextToPtr(argv[1]); rc = sqlite3PagerUnref(pPage); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } return TCL_OK; } |
︙ | ︙ | |||
451 452 453 454 455 456 457 | char zBuf[100]; DbPage *pPage; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " PAGE\"", 0); return TCL_ERROR; } | | | 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 | char zBuf[100]; DbPage *pPage; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " PAGE\"", 0); return TCL_ERROR; } pPage = sqlite3TestTextToPtr(argv[1]); memcpy(zBuf, sqlite3PagerGetData(pPage), sizeof(zBuf)); Tcl_AppendResult(interp, zBuf, 0); return TCL_OK; } /* ** Usage: page_number PAGE |
︙ | ︙ | |||
475 476 477 478 479 480 481 | char zBuf[100]; DbPage *pPage; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " PAGE\"", 0); return TCL_ERROR; } | | | 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 | char zBuf[100]; DbPage *pPage; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " PAGE\"", 0); return TCL_ERROR; } pPage = (DbPage *)sqlite3TestTextToPtr(argv[1]); sqlite3_snprintf(sizeof(zBuf), zBuf, "%d", sqlite3PagerPagenumber(pPage)); Tcl_AppendResult(interp, zBuf, 0); return TCL_OK; } /* ** Usage: page_write PAGE DATA |
︙ | ︙ | |||
500 501 502 503 504 505 506 | char *pData; int rc; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " PAGE DATA\"", 0); return TCL_ERROR; } | | | 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 | char *pData; int rc; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " PAGE DATA\"", 0); return TCL_ERROR; } pPage = (DbPage *)sqlite3TestTextToPtr(argv[1]); rc = sqlite3PagerWrite(pPage); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } pData = sqlite3PagerGetData(pPage); strncpy(pData, argv[2], test_pagesize-1); |
︙ | ︙ |
Changes to src/test3.c.
︙ | ︙ | |||
9 10 11 12 13 14 15 | ** May you share freely, never taking more than you give. ** ************************************************************************* ** Code for testing the btree.c module in SQLite. This code ** is not included in the SQLite library. It is used for automated ** testing of the SQLite library. ** | | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | ** May you share freely, never taking more than you give. ** ************************************************************************* ** Code for testing the btree.c module in SQLite. This code ** is not included in the SQLite library. It is used for automated ** testing of the SQLite library. ** ** $Id: test3.c,v 1.100 2008/07/12 14:52:20 drh Exp $ */ #include "sqliteInt.h" #include "btreeInt.h" #include "tcl.h" #include <stdlib.h> #include <string.h> |
︙ | ︙ | |||
107 108 109 110 111 112 113 | Btree *pBt; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | Btree *pBt; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pBt = sqlite3TestTextToPtr(argv[1]); rc = sqlite3BtreeClose(pBt); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } nRefSqlite3--; if( nRefSqlite3==0 ){ |
︙ | ︙ | |||
142 143 144 145 146 147 148 | Btree *pBt; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | Btree *pBt; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pBt = sqlite3TestTextToPtr(argv[1]); sqlite3BtreeEnter(pBt); rc = sqlite3BtreeBeginTrans(pBt, 1); sqlite3BtreeLeave(pBt); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } |
︙ | ︙ | |||
171 172 173 174 175 176 177 | Btree *pBt; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 | Btree *pBt; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pBt = sqlite3TestTextToPtr(argv[1]); sqlite3BtreeEnter(pBt); rc = sqlite3BtreeRollback(pBt); sqlite3BtreeLeave(pBt); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } |
︙ | ︙ | |||
200 201 202 203 204 205 206 | Btree *pBt; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 | Btree *pBt; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pBt = sqlite3TestTextToPtr(argv[1]); sqlite3BtreeEnter(pBt); rc = sqlite3BtreeCommit(pBt); sqlite3BtreeLeave(pBt); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } |
︙ | ︙ | |||
229 230 231 232 233 234 235 | Btree *pBt; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 | Btree *pBt; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pBt = sqlite3TestTextToPtr(argv[1]); sqlite3BtreeEnter(pBt); rc = sqlite3BtreeBeginStmt(pBt); sqlite3BtreeLeave(pBt); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } |
︙ | ︙ | |||
258 259 260 261 262 263 264 | Btree *pBt; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 | Btree *pBt; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pBt = sqlite3TestTextToPtr(argv[1]); sqlite3BtreeEnter(pBt); rc = sqlite3BtreeRollbackStmt(pBt); sqlite3BtreeLeave(pBt); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } |
︙ | ︙ | |||
287 288 289 290 291 292 293 | Btree *pBt; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 | Btree *pBt; int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pBt = sqlite3TestTextToPtr(argv[1]); sqlite3BtreeEnter(pBt); rc = sqlite3BtreeCommitStmt(pBt); sqlite3BtreeLeave(pBt); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } |
︙ | ︙ | |||
317 318 319 320 321 322 323 | int rc, iTable, flags; char zBuf[30]; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID FLAGS\"", 0); return TCL_ERROR; } | | | 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 | int rc, iTable, flags; char zBuf[30]; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID FLAGS\"", 0); return TCL_ERROR; } pBt = sqlite3TestTextToPtr(argv[1]); if( Tcl_GetInt(interp, argv[2], &flags) ) return TCL_ERROR; sqlite3BtreeEnter(pBt); rc = sqlite3BtreeCreateTable(pBt, &iTable, flags); sqlite3BtreeLeave(pBt); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; |
︙ | ︙ | |||
351 352 353 354 355 356 357 | int rc; int notUsed1; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID TABLENUM\"", 0); return TCL_ERROR; } | | | 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 | int rc; int notUsed1; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID TABLENUM\"", 0); return TCL_ERROR; } pBt = sqlite3TestTextToPtr(argv[1]); if( Tcl_GetInt(interp, argv[2], &iTable) ) return TCL_ERROR; sqlite3BtreeEnter(pBt); rc = sqlite3BtreeDropTable(pBt, iTable, ¬Used1); sqlite3BtreeLeave(pBt); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; |
︙ | ︙ | |||
382 383 384 385 386 387 388 | int iTable; int rc; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID TABLENUM\"", 0); return TCL_ERROR; } | | | 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 | int iTable; int rc; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID TABLENUM\"", 0); return TCL_ERROR; } pBt = sqlite3TestTextToPtr(argv[1]); if( Tcl_GetInt(interp, argv[2], &iTable) ) return TCL_ERROR; sqlite3BtreeEnter(pBt); rc = sqlite3BtreeClearTable(pBt, iTable); sqlite3BtreeLeave(pBt); if( rc!=SQLITE_OK ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; |
︙ | ︙ | |||
413 414 415 416 417 418 419 | int rc; int i; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 | int rc; int i; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pBt = sqlite3TestTextToPtr(argv[1]); for(i=0; i<SQLITE_N_BTREE_META; i++){ char zBuf[30]; u32 v; sqlite3BtreeEnter(pBt); rc = sqlite3BtreeGetMeta(pBt, i, &v); sqlite3BtreeLeave(pBt); if( rc!=SQLITE_OK ){ |
︙ | ︙ | |||
453 454 455 456 457 458 459 | if( argc!=2+SQLITE_N_BTREE_META ){ char zBuf[30]; sqlite3_snprintf(sizeof(zBuf), zBuf,"%d",SQLITE_N_BTREE_META); Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID METADATA...\" (METADATA is ", zBuf, " integers)", 0); return TCL_ERROR; } | | | 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 | if( argc!=2+SQLITE_N_BTREE_META ){ char zBuf[30]; sqlite3_snprintf(sizeof(zBuf), zBuf,"%d",SQLITE_N_BTREE_META); Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID METADATA...\" (METADATA is ", zBuf, " integers)", 0); return TCL_ERROR; } pBt = sqlite3TestTextToPtr(argv[1]); for(i=1; i<SQLITE_N_BTREE_META; i++){ if( Tcl_GetInt(interp, argv[i+2], &aMeta[i]) ) return TCL_ERROR; } for(i=1; i<SQLITE_N_BTREE_META; i++){ sqlite3BtreeEnter(pBt); rc = sqlite3BtreeUpdateMeta(pBt, i, aMeta[i]); sqlite3BtreeLeave(pBt); |
︙ | ︙ | |||
489 490 491 492 493 494 495 | int *a; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 | int *a; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pBt = sqlite3TestTextToPtr(argv[1]); /* Normally in this file, with a b-tree handle opened using the ** [btree_open] command it is safe to call sqlite3BtreeEnter() directly. ** But this function is sometimes called with a btree handle obtained ** from an open SQLite connection (using [btree_from_db]). In this case ** we need to obtain the mutex for the controlling SQLite handle before ** it is safe to call sqlite3BtreeEnter(). |
︙ | ︙ | |||
544 545 546 547 548 549 550 | char *zResult; if( argc<3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID ROOT ...\"", 0); return TCL_ERROR; } | | | 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 | char *zResult; if( argc<3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID ROOT ...\"", 0); return TCL_ERROR; } pBt = sqlite3TestTextToPtr(argv[1]); nRoot = argc-2; aRoot = (int*)sqlite3_malloc( sizeof(int)*(argc-2) ); for(i=0; i<argc-2; i++){ if( Tcl_GetInt(interp, argv[i+2], &aRoot[i]) ) return TCL_ERROR; } #ifndef SQLITE_OMIT_INTEGRITY_CHECK sqlite3BtreeEnter(pBt); |
︙ | ︙ | |||
583 584 585 586 587 588 589 | Btree *pBt; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 | Btree *pBt; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pBt = sqlite3TestTextToPtr(argv[1]); sqlite3BtreeEnter(pBt); sqlite3BtreeCursorList(pBt); sqlite3BtreeLeave(pBt); return SQLITE_OK; } /* |
︙ | ︙ | |||
613 614 615 616 617 618 619 | char zBuf[30]; if( argc!=4 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID TABLENUM WRITEABLE\"", 0); return TCL_ERROR; } | | | 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 | char zBuf[30]; if( argc!=4 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID TABLENUM WRITEABLE\"", 0); return TCL_ERROR; } pBt = sqlite3TestTextToPtr(argv[1]); if( Tcl_GetInt(interp, argv[2], &iTable) ) return TCL_ERROR; if( Tcl_GetBoolean(interp, argv[3], &wrFlag) ) return TCL_ERROR; pCur = (BtCursor *)ckalloc(sqlite3BtreeCursorSize()); memset(pCur, 0, sqlite3BtreeCursorSize()); sqlite3BtreeEnter(pBt); rc = sqlite3BtreeCursor(pBt, iTable, wrFlag, 0, pCur); sqlite3BtreeLeave(pBt); |
︙ | ︙ | |||
651 652 653 654 655 656 657 | int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 | int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pCur = sqlite3TestTextToPtr(argv[1]); pBt = pCur->pBtree; sqlite3BtreeEnter(pBt); rc = sqlite3BtreeCloseCursor(pCur); sqlite3BtreeLeave(pBt); ckfree((char *)pCur); if( rc ){ Tcl_AppendResult(interp, errorName(rc), 0); |
︙ | ︙ | |||
685 686 687 688 689 690 691 | char zBuf[20]; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID KEY\"", 0); return TCL_ERROR; } | | | 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 | char zBuf[20]; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID KEY\"", 0); return TCL_ERROR; } pCur = sqlite3TestTextToPtr(argv[1]); sqlite3BtreeEnter(pCur->pBtree); if( sqlite3BtreeFlags(pCur) & BTREE_INTKEY ){ int iKey; if( Tcl_GetInt(interp, argv[2], &iKey) ){ sqlite3BtreeLeave(pCur->pBtree); return TCL_ERROR; } |
︙ | ︙ | |||
728 729 730 731 732 733 734 | int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 | int rc; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pCur = sqlite3TestTextToPtr(argv[1]); sqlite3BtreeEnter(pCur->pBtree); rc = sqlite3BtreeDelete(pCur); sqlite3BtreeLeave(pCur->pBtree); if( rc ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } |
︙ | ︙ | |||
759 760 761 762 763 764 765 | int rc; int nZero; if( objc!=4 && objc!=5 ){ Tcl_WrongNumArgs(interp, 1, objv, "ID KEY DATA ?NZERO?"); return TCL_ERROR; } | | | 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 | int rc; int nZero; if( objc!=4 && objc!=5 ){ Tcl_WrongNumArgs(interp, 1, objv, "ID KEY DATA ?NZERO?"); return TCL_ERROR; } pCur = sqlite3TestTextToPtr(Tcl_GetString(objv[1])); if( objc==5 ){ if( Tcl_GetIntFromObj(interp, objv[4], &nZero) ) return TCL_ERROR; }else{ nZero = 0; } sqlite3BtreeEnter(pCur->pBtree); if( sqlite3BtreeFlags(pCur) & BTREE_INTKEY ){ |
︙ | ︙ | |||
816 817 818 819 820 821 822 | char zBuf[100]; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 | char zBuf[100]; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pCur = sqlite3TestTextToPtr(argv[1]); sqlite3BtreeEnter(pCur->pBtree); rc = sqlite3BtreeNext(pCur, &res); sqlite3BtreeLeave(pCur->pBtree); if( rc ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } |
︙ | ︙ | |||
852 853 854 855 856 857 858 | char zBuf[100]; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 | char zBuf[100]; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pCur = sqlite3TestTextToPtr(argv[1]); sqlite3BtreeEnter(pCur->pBtree); rc = sqlite3BtreePrevious(pCur, &res); sqlite3BtreeLeave(pCur->pBtree); if( rc ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } |
︙ | ︙ | |||
887 888 889 890 891 892 893 | char zBuf[100]; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 | char zBuf[100]; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pCur = sqlite3TestTextToPtr(argv[1]); sqlite3BtreeEnter(pCur->pBtree); rc = sqlite3BtreeFirst(pCur, &res); sqlite3BtreeLeave(pCur->pBtree); if( rc ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } |
︙ | ︙ | |||
922 923 924 925 926 927 928 | char zBuf[100]; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 | char zBuf[100]; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pCur = sqlite3TestTextToPtr(argv[1]); sqlite3BtreeEnter(pCur->pBtree); rc = sqlite3BtreeLast(pCur, &res); sqlite3BtreeLeave(pCur->pBtree); if( rc ){ Tcl_AppendResult(interp, errorName(rc), 0); return TCL_ERROR; } |
︙ | ︙ | |||
956 957 958 959 960 961 962 | char zBuf[50]; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 | char zBuf[50]; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pCur = sqlite3TestTextToPtr(argv[1]); sqlite3BtreeEnter(pCur->pBtree); rc = sqlite3BtreeEof(pCur); sqlite3BtreeLeave(pCur->pBtree); sqlite3_snprintf(sizeof(zBuf),zBuf, "%d", rc); Tcl_AppendResult(interp, zBuf, 0); return SQLITE_OK; } |
︙ | ︙ | |||
986 987 988 989 990 991 992 | char zBuf[50]; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 | char zBuf[50]; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pCur = sqlite3TestTextToPtr(argv[1]); sqlite3BtreeEnter(pCur->pBtree); sqlite3BtreeKeySize(pCur, (i64*)&n); sqlite3BtreeLeave(pCur->pBtree); sqlite3_snprintf(sizeof(zBuf),zBuf, "%llu", n); Tcl_AppendResult(interp, zBuf, 0); return SQLITE_OK; } |
︙ | ︙ | |||
1016 1017 1018 1019 1020 1021 1022 | char *zBuf; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 | char *zBuf; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pCur = sqlite3TestTextToPtr(argv[1]); sqlite3BtreeEnter(pCur->pBtree); sqlite3BtreeKeySize(pCur, (i64*)&n); if( sqlite3BtreeFlags(pCur) & BTREE_INTKEY ){ char zBuf2[60]; sqlite3_snprintf(sizeof(zBuf2),zBuf2, "%llu", n); Tcl_AppendResult(interp, zBuf2, 0); }else{ |
︙ | ︙ | |||
1060 1061 1062 1063 1064 1065 1066 | char *zBuf; if( argc!=2 && argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 | char *zBuf; if( argc!=2 && argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pCur = sqlite3TestTextToPtr(argv[1]); sqlite3BtreeEnter(pCur->pBtree); if( argc==2 ){ sqlite3BtreeDataSize(pCur, &n); }else{ n = atoi(argv[2]); } zBuf = sqlite3_malloc( n+1 ); |
︙ | ︙ | |||
1105 1106 1107 1108 1109 1110 1111 | char zStatic[1000]; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID AMT\"", 0); return TCL_ERROR; } | | | 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 | char zStatic[1000]; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID AMT\"", 0); return TCL_ERROR; } pCur = sqlite3TestTextToPtr(argv[1]); if( Tcl_GetInt(interp, argv[2], &n) ) return TCL_ERROR; sqlite3BtreeEnter(pCur->pBtree); sqlite3BtreeKeySize(pCur, (i64*)&nKey); zBuf = sqlite3BtreeKeyFetch(pCur, &amt); if( zBuf && amt>=n ){ assert( nKey<sizeof(zStatic) ); if( n>0 ) nKey = n; |
︙ | ︙ | |||
1145 1146 1147 1148 1149 1150 1151 | char zStatic[1000]; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID AMT\"", 0); return TCL_ERROR; } | | | 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 | char zStatic[1000]; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID AMT\"", 0); return TCL_ERROR; } pCur = sqlite3TestTextToPtr(argv[1]); if( Tcl_GetInt(interp, argv[2], &n) ) return TCL_ERROR; sqlite3BtreeEnter(pCur->pBtree); sqlite3BtreeDataSize(pCur, &nData); zBuf = sqlite3BtreeDataFetch(pCur, &amt); if( zBuf && amt>=n ){ assert( nData<sizeof(zStatic) ); if( n>0 ) nData = n; |
︙ | ︙ | |||
1182 1183 1184 1185 1186 1187 1188 | char zBuf[50]; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | | 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 | char zBuf[50]; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pCur = sqlite3TestTextToPtr(argv[1]); sqlite3BtreeEnter(pCur->pBtree); if( sqlite3BtreeFlags(pCur) & BTREE_INTKEY ){ n1 = 0; }else{ sqlite3BtreeKeySize(pCur, (i64*)&n1); } sqlite3BtreeDataSize(pCur, (u32*)&n2); |
︙ | ︙ | |||
1232 1233 1234 1235 1236 1237 1238 | char zBuf[400]; if( argc!=2 && argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID ?UP-CNT?\"", 0); return TCL_ERROR; } | | | 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 | char zBuf[400]; if( argc!=2 && argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID ?UP-CNT?\"", 0); return TCL_ERROR; } pCur = sqlite3TestTextToPtr(argv[1]); if( argc==3 ){ if( Tcl_GetInt(interp, argv[2], &up) ) return TCL_ERROR; }else{ up = 0; } sqlite3BtreeEnter(pCur->pBtree); rc = sqlite3BtreeCursorInfo(pCur, aResult, up); |
︙ | ︙ | |||
1292 1293 1294 1295 1296 1297 1298 | Tcl_DString str; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " BTREE CURSOR", 0); return TCL_ERROR; } | | | | 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 | Tcl_DString str; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " BTREE CURSOR", 0); return TCL_ERROR; } pBt = sqlite3TestTextToPtr(argv[1]); pCur = sqlite3TestTextToPtr(argv[2]); if( (*(void**)pCur) != (void*)pBt ){ Tcl_AppendResult(interp, "Cursor ", argv[2], " does not belong to btree ", argv[1], 0); return TCL_ERROR; } sqlite3BtreeEnter(pBt); pPager = sqlite3BtreePager(pBt); |
︙ | ︙ | |||
1497 1498 1499 1500 1501 1502 1503 | Btree *pBt; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " BT NCACHE\"", 0); return TCL_ERROR; } | | | 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 | Btree *pBt; if( argc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " BT NCACHE\"", 0); return TCL_ERROR; } pBt = sqlite3TestTextToPtr(argv[1]); if( Tcl_GetInt(interp, argv[2], &nCache) ) return TCL_ERROR; sqlite3_mutex_enter(pBt->db->mutex); sqlite3BtreeEnter(pBt); sqlite3BtreeSetCacheSize(pBt, nCache); sqlite3BtreeLeave(pBt); sqlite3_mutex_leave(pBt->db->mutex); |
︙ | ︙ | |||
1528 1529 1530 1531 1532 1533 1534 | int res; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } | | < | 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 | int res; if( argc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " ID\"", 0); return TCL_ERROR; } pBt = sqlite3TestTextToPtr(argv[1]); sqlite3_mutex_enter(pBt->db->mutex); sqlite3BtreeEnter(pBt); res = sqlite3PagerIsMemdb(sqlite3BtreePager(pBt)); sqlite3BtreeLeave(pBt); sqlite3_mutex_leave(pBt->db->mutex); Tcl_SetObjResult(interp, Tcl_NewBooleanObj(res)); return SQLITE_OK; } /* ** Register commands with the TCL interpreter. */ int Sqlitetest3_Init(Tcl_Interp *interp){ static struct { char *zName; Tcl_CmdProc *xProc; } aCmd[] = { { "btree_open", (Tcl_CmdProc*)btree_open }, { "btree_close", (Tcl_CmdProc*)btree_close }, { "btree_begin_transaction", (Tcl_CmdProc*)btree_begin_transaction }, |
︙ | ︙ | |||
1592 1593 1594 1595 1596 1597 1598 | { "btree_ismemdb", (Tcl_CmdProc*)btree_ismemdb }, }; int i; for(i=0; i<sizeof(aCmd)/sizeof(aCmd[0]); i++){ Tcl_CreateCommand(interp, aCmd[i].zName, aCmd[i].xProc, 0, 0); } | < < | 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 | { "btree_ismemdb", (Tcl_CmdProc*)btree_ismemdb }, }; int i; for(i=0; i<sizeof(aCmd)/sizeof(aCmd[0]); i++){ Tcl_CreateCommand(interp, aCmd[i].zName, aCmd[i].xProc, 0, 0); } /* The btree_insert command is implemented using the tcl 'object' ** interface, not the string interface like the other commands in this ** file. This is so binary data can be inserted into btree tables. */ Tcl_CreateObjCommand(interp, "btree_insert", btree_insert, 0, 0); return TCL_OK; } |
Changes to src/where.c.
︙ | ︙ | |||
12 13 14 15 16 17 18 | ** This module contains C code that generates VDBE code used to process ** the WHERE clause of SQL statements. This module is responsible for ** generating the code that loops through a table looking for applicable ** rows. Indices are selected and used to speed the search when doing ** so is applicable. Because this module is responsible for selecting ** indices, you might also think of this module as the "query optimizer". ** | | > > | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | ** This module contains C code that generates VDBE code used to process ** the WHERE clause of SQL statements. This module is responsible for ** generating the code that loops through a table looking for applicable ** rows. Indices are selected and used to speed the search when doing ** so is applicable. Because this module is responsible for selecting ** indices, you might also think of this module as the "query optimizer". ** ** $Id: where.c,v 1.317 2008/07/12 14:52:20 drh Exp $ */ #include "sqliteInt.h" /* ** The number of bits in a Bitmask. "BMS" means "BitMask Size". */ #define BMS (sizeof(Bitmask)*8) /* ** Trace output macros */ #if defined(SQLITE_TEST) || defined(SQLITE_DEBUG) int sqlite3WhereTrace = 0; #endif #if 0 # define WHERETRACE(X) if(sqlite3WhereTrace) sqlite3DebugPrintf X #else # define WHERETRACE(X) #endif /* Forward reference */ |
︙ | ︙ |
Changes to test/attach.test.
︙ | ︙ | |||
8 9 10 11 12 13 14 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this script is testing the ATTACH and DETACH commands # and related functionality. # | | < | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this script is testing the ATTACH and DETACH commands # and related functionality. # # $Id: attach.test,v 1.49 2008/07/12 14:52:20 drh Exp $ # set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable !attach { finish_test return } for {set i 2} {$i<=15} {incr i} { file delete -force test$i.db file delete -force test$i.db-journal } do_test attach-1.1 { execsql { CREATE TABLE t1(a,b); INSERT INTO t1 VALUES(1,2); INSERT INTO t1 VALUES(3,4); SELECT * FROM t1; } |
︙ | ︙ | |||
54 55 56 57 58 59 60 | } {1 x 2 y} do_test attach-1.4 { execsql { SELECT * FROM t2; } } {1 x 2 y} do_test attach-1.5 { | < | 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | } {1 x 2 y} do_test attach-1.4 { execsql { SELECT * FROM t2; } } {1 x 2 y} do_test attach-1.5 { execsql { DETACH DATABASE two; SELECT * FROM t1; } } {1 2 3 4} do_test attach-1.6 { catchsql { |
︙ | ︙ | |||
404 405 406 407 408 409 410 | } db2; } {0 {21 x 22 y}} # Reading from test2.db from db within a transaction should not # prevent test2.db from being read by db2. do_test attach-3.5 { execsql {SELECT * FROM t2} | < | 402 403 404 405 406 407 408 409 410 411 412 413 414 415 | } db2; } {0 {21 x 22 y}} # Reading from test2.db from db within a transaction should not # prevent test2.db from being read by db2. do_test attach-3.5 { execsql {SELECT * FROM t2} catchsql { SELECT * FROM t2; } db2; } {0 {21 x 22 y}} # Making a change to test2.db through db causes test2.db to get # a reserved lock. It should still be accessible through db2. |
︙ | ︙ | |||
473 474 475 476 477 478 479 | catchsql {SELECT * FROM t1} } {0 {1 2 3 4}} do_test attach-3.15 { execsql COMMIT db2 execsql {SELECT * FROM t1} } {1 2 3 4} | < < | 470 471 472 473 474 475 476 477 478 479 480 481 482 483 | catchsql {SELECT * FROM t1} } {0 {1 2 3 4}} do_test attach-3.15 { execsql COMMIT db2 execsql {SELECT * FROM t1} } {1 2 3 4} # Ticket #323 do_test attach-4.1 { execsql {DETACH db2} db2 close sqlite3 db2 test2.db execsql { CREATE TABLE t3(x,y); |
︙ | ︙ |
Changes to test/autovacuum_ioerr2.test.
︙ | ︙ | |||
11 12 13 14 15 16 17 | # This file implements regression tests for SQLite library. The # focus of this file is testing for correct handling of I/O errors # such as writes failing because the disk is full. # # The tests in this file use special facilities that are only # available in the SQLite test fixture. # | | | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # This file implements regression tests for SQLite library. The # focus of this file is testing for correct handling of I/O errors # such as writes failing because the disk is full. # # The tests in this file use special facilities that are only # available in the SQLite test fixture. # # $Id: autovacuum_ioerr2.test,v 1.7 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # If this build of the library does not support auto-vacuum, omit this # whole file. ifcapable {!autovacuum} { |
︙ | ︙ | |||
126 127 128 129 130 131 132 | DELETE FROM abc; INSERT INTO abc VALUES(randstr(1500,1500)); CREATE TABLE abc3(a); COMMIT; } finish_test | < | 126 127 128 129 130 131 132 | DELETE FROM abc; INSERT INTO abc VALUES(randstr(1500,1500)); CREATE TABLE abc3(a); COMMIT; } finish_test |
Changes to test/collate3.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this script is page cache subsystem. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this script is page cache subsystem. # # $Id: collate3.test,v 1.12 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # # Tests are organised as follows: # |
︙ | ︙ | |||
148 149 150 151 152 153 154 | } {1 {no such collation sequence: string_compare}} do_test collate3-2.12 { catchsql { SELECT c1 FROM collate3t1 UNION ALL SELECT c1 FROM collate3t1; } } {0 {}} do_test collate3-2.13 { | < | 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | } {1 {no such collation sequence: string_compare}} do_test collate3-2.12 { catchsql { SELECT c1 FROM collate3t1 UNION ALL SELECT c1 FROM collate3t1; } } {0 {}} do_test collate3-2.13 { catchsql { SELECT 10 UNION ALL SELECT 20 ORDER BY 1 COLLATE string_compare; } } {1 {no such collation sequence: string_compare}} do_test collate3-2.14 { catchsql { SELECT 10 INTERSECT SELECT 20 ORDER BY 1 COLLATE string_compare; |
︙ | ︙ |
Changes to test/collate7.test.
︙ | ︙ | |||
9 10 11 12 13 14 15 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this script is the experimental sqlite3_create_collation_v2() # API. # | | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this script is the experimental sqlite3_create_collation_v2() # API. # # $Id: collate7.test,v 1.2 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl set ::caseless_del 0 proc caseless_cmp {zLeft zRight} { string compare -nocase $zLeft $zRight |
︙ | ︙ | |||
66 67 68 69 70 71 72 | do_test collate7-2.4 { catchsql { SELECT * FROM abc16 WHERE a < 'abc'; } } {1 {no such collation sequence: CASELESS}} finish_test | < | 66 67 68 69 70 71 72 | do_test collate7-2.4 { catchsql { SELECT * FROM abc16 WHERE a < 'abc'; } } {1 {no such collation sequence: CASELESS}} finish_test |
Changes to test/crash3.test.
︙ | ︙ | |||
9 10 11 12 13 14 15 | # #*********************************************************************** # # This file contains tests that verify that SQLite can correctly rollback # databases after crashes when using the special IO modes triggered # by device IOCAP flags. # | | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # #*********************************************************************** # # This file contains tests that verify that SQLite can correctly rollback # databases after crashes when using the special IO modes triggered # by device IOCAP flags. # # $Id: crash3.test,v 1.4 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable !crashtest { finish_test return |
︙ | ︙ | |||
184 185 186 187 188 189 190 | sqlite3 db test.db do_test crash3-3.$ii { execsql {PRAGMA integrity_check} } {ok} } finish_test | < | 184 185 186 187 188 189 190 | sqlite3 db test.db do_test crash3-3.$ii { execsql {PRAGMA integrity_check} } {ok} } finish_test |
Changes to test/crash5.test.
︙ | ︙ | |||
9 10 11 12 13 14 15 | # May you share freely, never taking more than you give. # #*********************************************************************** # # This file tests aspects of recovery from a malloc() failure # in a CREATE INDEX statement. # | | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # May you share freely, never taking more than you give. # #*********************************************************************** # # This file tests aspects of recovery from a malloc() failure # in a CREATE INDEX statement. # # $Id: crash5.test,v 1.3 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Only run these tests if memory debugging is turned on. # ifcapable !memdebug||!crashtest||!memorymanage { |
︙ | ︙ | |||
104 105 106 107 108 109 110 | } [list 1111111111 2222222222 $::c] db close } } finish_test | < | 104 105 106 107 108 109 110 | } [list 1111111111 2222222222 $::c] db close } } finish_test |
Changes to test/diskfull.test.
︙ | ︙ | |||
8 9 10 11 12 13 14 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing for correct handling of disk full # errors. # | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing for correct handling of disk full # errors. # # $Id: diskfull.test,v 1.8 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl set sqlite_io_error_persist 0 set sqlite_io_error_hit 0 set sqlite_io_error_pending 0 |
︙ | ︙ | |||
100 101 102 103 104 105 106 | # INSERT INTO t3 SELECT randstr(100, 100), randstr(100, 100) FROM t3; # UPDATE t3 # SET b = (SELECT a FROM t3 WHERE rowid = (SELECT max(rowid)-1 FROM t3)) # WHERE rowid = (SELECT max(rowid) FROM t3); # PRAGMA cache_size; # } # } {10} | < > | 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | # INSERT INTO t3 SELECT randstr(100, 100), randstr(100, 100) FROM t3; # UPDATE t3 # SET b = (SELECT a FROM t3 WHERE rowid = (SELECT max(rowid)-1 FROM t3)) # WHERE rowid = (SELECT max(rowid) FROM t3); # PRAGMA cache_size; # } # } {10} # # do_diskfull_test diskfull-3.2 { # BEGIN; # INSERT INTO t3 VALUES( randstr(100, 100), randstr(100, 100) ); # UPDATE t3 SET a = b; # COMMIT; # } finish_test |
Changes to test/icu.test.
1 2 3 4 5 6 7 8 9 10 11 | # 2007 May 1 # # 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. # #*********************************************************************** # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # 2007 May 1 # # 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. # #*********************************************************************** # # $Id: icu.test,v 1.2 2008/07/12 14:52:20 drh Exp $ # set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable !icu { finish_test |
︙ | ︙ | |||
111 112 113 114 115 116 117 | do_test icu-4.3 { execsql { SELECT name FROM fruit ORDER BY name COLLATE Lithuanian ASC; } } {apricot cherry chokecherry yamot peach plum} finish_test | < | 111 112 113 114 115 116 117 | do_test icu-4.3 { execsql { SELECT name FROM fruit ORDER BY name COLLATE Lithuanian ASC; } } {apricot cherry chokecherry yamot peach plum} finish_test |
Changes to test/in2.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2007 May 12 # # 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. # #*********************************************************************** # This file tests a special case in the b-tree code that can be # hit by the "IN" operator (or EXISTS, NOT IN, etc.). # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 2007 May 12 # # 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. # #*********************************************************************** # This file tests a special case in the b-tree code that can be # hit by the "IN" operator (or EXISTS, NOT IN, etc.). # # $Id: in2.test,v 1.3 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl do_test in2-1 { execsql { CREATE TABLE a(i INTEGER PRIMARY KEY, a); |
︙ | ︙ | |||
61 62 63 64 65 66 67 | execsql { SELECT 1 IN (SELECT a FROM a WHERE (i < $::ii) OR (i >= $::N)) } } {1} } finish_test | < | 61 62 63 64 65 66 67 | execsql { SELECT 1 IN (SELECT a FROM a WHERE (i < $::ii) OR (i >= $::N)) } } {1} } finish_test |
Changes to test/incrvacuum_ioerr.test.
︙ | ︙ | |||
11 12 13 14 15 16 17 | # This file implements regression tests for SQLite library. The # focus of this file is testing for correct handling of I/O errors # such as writes failing because the disk is full. # # The tests in this file use special facilities that are only # available in the SQLite test fixture. # | | | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # This file implements regression tests for SQLite library. The # focus of this file is testing for correct handling of I/O errors # such as writes failing because the disk is full. # # The tests in this file use special facilities that are only # available in the SQLite test fixture. # # $Id: incrvacuum_ioerr.test,v 1.6 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # If this build of the library does not support auto-vacuum, omit this # whole file. ifcapable {!autovacuum} { |
︙ | ︙ | |||
175 176 177 178 179 180 181 | # db1 close db2 close sqlite3_enable_shared_cache $::enable_shared_cache } finish_test | < | 175 176 177 178 179 180 181 | # db1 close db2 close sqlite3_enable_shared_cache $::enable_shared_cache } finish_test |
Changes to test/ioerr.test.
︙ | ︙ | |||
11 12 13 14 15 16 17 | # This file implements regression tests for SQLite library. The # focus of this file is testing for correct handling of I/O errors # such as writes failing because the disk is full. # # The tests in this file use special facilities that are only # available in the SQLite test fixture. # | | | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # This file implements regression tests for SQLite library. The # focus of this file is testing for correct handling of I/O errors # such as writes failing because the disk is full. # # The tests in this file use special facilities that are only # available in the SQLite test fixture. # # $Id: ioerr.test,v 1.41 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # If SQLITE_DEFAULT_AUTOVACUUM is set to true, then a simulated IO error # on the 8th IO operation in the SQL script below doesn't report an error. # |
︙ | ︙ | |||
401 402 403 404 405 406 407 | INSERT INTO t1 VALUES(randomblob(100)); INSERT INTO t1 VALUES(randomblob(100)); INSERT INTO t1 VALUES(randomblob(100)); COMMIT; } finish_test | < | 401 402 403 404 405 406 407 | INSERT INTO t1 VALUES(randomblob(100)); INSERT INTO t1 VALUES(randomblob(100)); INSERT INTO t1 VALUES(randomblob(100)); COMMIT; } finish_test |
Changes to test/ioerr5.test.
︙ | ︙ | |||
10 11 12 13 14 15 16 | #*********************************************************************** # # This file tests that if sqlite3_release_memory() is called to reclaim # memory from a pager that is in the error-state, SQLite does not # incorrectly write dirty pages out to the database (not safe to do # once the pager is in error state). # | | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #*********************************************************************** # # This file tests that if sqlite3_release_memory() is called to reclaim # memory from a pager that is in the error-state, SQLite does not # incorrectly write dirty pages out to the database (not safe to do # once the pager is in error state). # # $Id: ioerr5.test,v 1.4 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable !memorymanage||!shared_cache { finish_test return |
︙ | ︙ | |||
201 202 203 204 205 206 207 | set sqlite_open_file_count } 0 sqlite3_enable_shared_cache $::enable_shared_cache sqlite3_soft_heap_limit $::soft_limit finish_test | < | 201 202 203 204 205 206 207 | set sqlite_open_file_count } 0 sqlite3_enable_shared_cache $::enable_shared_cache sqlite3_soft_heap_limit $::soft_limit finish_test |
Changes to test/lock5.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2008 June 28 # # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this script is database locks. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 2008 June 28 # # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this script is database locks. # # $Id: lock5.test,v 1.2 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # This file is only run if using the unix backend compiled with the # SQLITE_ENABLE_LOCKING_STYLE macro. db close |
︙ | ︙ | |||
171 172 173 174 175 176 177 | do_test lock5-flock.X { db close db2 close } {} finish_test | < | 171 172 173 174 175 176 177 | do_test lock5-flock.X { db close db2 close } {} finish_test |
Changes to test/main.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is exercising the code in main.c. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is exercising the code in main.c. # # $Id: main.test,v 1.29 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Only do the next group of tests if the sqlite3_complete API is available # ifcapable {complete} { |
︙ | ︙ | |||
333 334 335 336 337 338 339 | } do_test main-3.2.12 { catchsql {select $testnamespace::xyz} } {0 321} do_test main-3.2.13 { catchsql {select $(abc)} } {1 {unrecognized token: "$"}} | < | 333 334 335 336 337 338 339 340 341 342 343 344 345 346 | } do_test main-3.2.12 { catchsql {select $testnamespace::xyz} } {0 321} do_test main-3.2.13 { catchsql {select $(abc)} } {1 {unrecognized token: "$"}} do_test main-3.2.14 { set hi\u1234x 987 db eval "select \$hi\u1234x" } {987} do_test main-3.2.15 { catchsql "select 456\u1234" } [list 1 "unrecognized token: \"456\u1234\""] |
︙ | ︙ |
Changes to test/memsubsys1.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2008 June 18 # # 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. # #*********************************************************************** # # This file contains tests of the memory allocation subsystem # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 2008 June 18 # # 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. # #*********************************************************************** # # This file contains tests of the memory allocation subsystem # # $Id: memsubsys1.test,v 1.4 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl sqlite3_reset_auto_extension # This procedure constructs a new database in test.db. It fills # this database with many small records (enough to force multiple |
︙ | ︙ | |||
192 193 194 195 196 197 198 | # that maximum allocation size is small. # db close sqlite3_shutdown sqlite3_config_pagecache 4096 24 sqlite3_config_scratch 25000 1 sqlite3_initialize | < | 192 193 194 195 196 197 198 199 200 201 202 203 204 205 | # that maximum allocation size is small. # db close sqlite3_shutdown sqlite3_config_pagecache 4096 24 sqlite3_config_scratch 25000 1 sqlite3_initialize build_test_db memsubsys1-7 { PRAGMA page_size=4096; PRAGMA cache_size=10; PRAGMA temp_cache_size=10; } #show_memstats do_test memsubsys1-7.3 { |
︙ | ︙ |
Changes to test/minmax3.test.
1 2 3 4 5 6 7 8 9 10 | # 2008 January 5 # # 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. # #*********************************************************************** | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # 2008 January 5 # # 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. # #*********************************************************************** # $Id: minmax3.test,v 1.5 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Do an SQL statement. Append the search count to the end of the result. # proc count sql { |
︙ | ︙ | |||
211 212 213 214 215 216 217 | execsql { SELECT min(b) FROM t2 WHERE a = 1 AND b<1; } } {{}} do_test minmax3-2.8 { execsql { SELECT min(b) FROM t2 WHERE a = 3 AND b<1; } } {{}} finish_test | < | 211 212 213 214 215 216 217 | execsql { SELECT min(b) FROM t2 WHERE a = 1 AND b<1; } } {{}} do_test minmax3-2.8 { execsql { SELECT min(b) FROM t2 WHERE a = 3 AND b<1; } } {{}} finish_test |
Changes to test/pragma.test.
︙ | ︙ | |||
8 9 10 11 12 13 14 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. # # This file implements tests for the PRAGMA command. # | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. # # This file implements tests for the PRAGMA command. # # $Id: pragma.test,v 1.64 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Test organization: # # pragma-1.*: Test cache_size, default_cache_size and synchronous on main db. |
︙ | ︙ | |||
958 959 960 961 962 963 964 | } {2} do_test pragma-9.14 { execsql { PRAGMA temp_store = 3; PRAGMA temp_store; } } {0} | < | 958 959 960 961 962 963 964 965 966 967 968 969 970 971 | } {2} do_test pragma-9.14 { execsql { PRAGMA temp_store = 3; PRAGMA temp_store; } } {0} do_test pragma-9.15 { catchsql { BEGIN EXCLUSIVE; CREATE TEMP TABLE temp_table(t); INSERT INTO temp_table VALUES('valuable data'); PRAGMA temp_store = 1; } |
︙ | ︙ |
Changes to test/ptrchng.test.
︙ | ︙ | |||
17 18 19 20 21 22 23 | # # sqlite3_value_text() # sqlite3_value_text16() # sqlite3_value_blob() # sqlite3_value_bytes() # sqlite3_value_bytes16() # | | | 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | # # sqlite3_value_text() # sqlite3_value_text16() # sqlite3_value_blob() # sqlite3_value_bytes() # sqlite3_value_bytes16() # # $Id: ptrchng.test,v 1.5 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable !bloblit { finish_test return |
︙ | ︙ | |||
109 110 111 112 113 114 115 | } {1} do_test ptrchng-2.15 { execsql { SELECT pointer_change(y, 'text16', 'noop', 'blob') FROM t1 WHERE x=3 } } {0} do_test ptrchng-2.16 { | < | 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | } {1} do_test ptrchng-2.15 { execsql { SELECT pointer_change(y, 'text16', 'noop', 'blob') FROM t1 WHERE x=3 } } {0} do_test ptrchng-2.16 { execsql { SELECT pointer_change(y, 'text16', 'noop', 'text') FROM t1 WHERE x=3 } } {1} } # For the long entries that do not fit in the Mem.zBuf[], the pointer |
︙ | ︙ |
Changes to test/reindex.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2004 November 5 # # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. # This file implements tests for the REINDEX command. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 2004 November 5 # # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. # This file implements tests for the REINDEX command. # # $Id: reindex.test,v 1.4 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # There is nothing to test if REINDEX is disable for this build. # ifcapable {!reindex} { |
︙ | ︙ | |||
165 166 167 168 169 170 171 | } {1 {no such collation sequence: c2}} do_test reindex-3.99 { db2 close } {} finish_test | < | 165 166 167 168 169 170 171 | } {1 {no such collation sequence: c2}} do_test reindex-3.99 { db2 close } {} finish_test |
Changes to test/rtree.test.
1 2 3 4 5 6 7 8 | # # 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. # #*********************************************************************** # This file runs all rtree related tests. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # # 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. # #*********************************************************************** # This file runs all rtree related tests. # # $Id: rtree.test,v 1.2 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl rename finish_test rtree_finish_test proc finish_test {} {} |
︙ | ︙ | |||
34 35 36 37 38 39 40 | } } set sqlite_open_file_count 0 rtree_finish_test rename finish_test {} rename rtree_finish_test finish_test | < | 34 35 36 37 38 39 40 | } } set sqlite_open_file_count 0 rtree_finish_test rename finish_test {} rename rtree_finish_test finish_test |
Changes to test/select2.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing the SELECT statement. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing the SELECT statement. # # $Id: select2.test,v 1.27 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Create a table with some data # execsql {CREATE TABLE tbl1(f1 int, f2 int)} |
︙ | ︙ | |||
114 115 116 117 118 119 120 | execsql {SELECT f1 FROM tbl2 WHERE 1000=f2} } {500} do_test select2-3.2c { execsql {SELECT f1 FROM tbl2 WHERE f2=1000} } {500} do_test select2-3.2d { set sqlite_search_count 0 | < | 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | execsql {SELECT f1 FROM tbl2 WHERE 1000=f2} } {500} do_test select2-3.2c { execsql {SELECT f1 FROM tbl2 WHERE f2=1000} } {500} do_test select2-3.2d { set sqlite_search_count 0 execsql {SELECT * FROM tbl2 WHERE 1000=f2} set sqlite_search_count } {3} do_test select2-3.2e { set sqlite_search_count 0 execsql {SELECT * FROM tbl2 WHERE f2=1000} set sqlite_search_count |
︙ | ︙ |
Changes to test/select6.test.
︙ | ︙ | |||
8 9 10 11 12 13 14 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing SELECT statements that contain # subqueries in their FROM clause. # | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing SELECT statements that contain # subqueries in their FROM clause. # # $Id: select6.test,v 1.27 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Omit this whole file if the library is build without subquery support. ifcapable !subquery { finish_test |
︙ | ︙ | |||
190 191 192 193 194 195 196 | do_test select6-3.6 { execsql { SELECT a,b,a+b FROM (SELECT avg(x) as 'a', avg(y) as 'b' FROM t1) WHERE a>10 } } {10.5 3.7 14.2} do_test select6-3.7 { | < | 190 191 192 193 194 195 196 197 198 199 200 201 202 203 | do_test select6-3.6 { execsql { SELECT a,b,a+b FROM (SELECT avg(x) as 'a', avg(y) as 'b' FROM t1) WHERE a>10 } } {10.5 3.7 14.2} do_test select6-3.7 { execsql { SELECT a,b,a+b FROM (SELECT avg(x) as 'a', avg(y) as 'b' FROM t1) WHERE a<10 } } {} do_test select6-3.8 { execsql { |
︙ | ︙ |
Changes to test/selectB.test.
1 2 3 4 5 6 7 8 9 10 11 12 | # 2008 June 24 # # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # 2008 June 24 # # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. # # $Id: selectB.test,v 1.8 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl proc test_transform {testname sql1 sql2 results} { set ::vdbe1 [list] set ::vdbe2 [list] |
︙ | ︙ | |||
368 369 370 371 372 373 374 | execsql { SELECT * FROM (SELECT 345 UNION ALL SELECT d FROM t2) ORDER BY 1; } } {3 12 21 345} } finish_test | < | 368 369 370 371 372 373 374 | execsql { SELECT * FROM (SELECT 345 UNION ALL SELECT d FROM t2) ORDER BY 1; } } {3 12 21 345} } finish_test |
Changes to test/shared.test.
1 2 3 4 5 6 7 8 9 10 11 | # 2005 December 30 # # 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. # #*********************************************************************** # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # 2005 December 30 # # 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. # #*********************************************************************** # # $Id: shared.test,v 1.34 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl db close # These tests cannot be run without the ATTACH command. # |
︙ | ︙ | |||
870 871 872 873 874 875 876 | execsql { INSERT INTO abc2 VALUES(4, 5, 6); INSERT INTO abc2 VALUES(7, 8, 9); } } {} do_test shared-$av.11.8 { set res [list] | < | 870 871 872 873 874 875 876 877 878 879 880 881 882 883 | execsql { INSERT INTO abc2 VALUES(4, 5, 6); INSERT INTO abc2 VALUES(7, 8, 9); } } {} do_test shared-$av.11.8 { set res [list] db2 eval { SELECT abc.a as I, abc2.a as II FROM abc, abc2; } { execsql { DELETE FROM abc WHERE 1; } lappend res $I $II |
︙ | ︙ |
Changes to test/soak.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2007 May 24 # # 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. # #*********************************************************************** # This file is the driver for the "soak" tests. It is a peer of the # quick.test and all.test scripts. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 2007 May 24 # # 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. # #*********************************************************************** # This file is the driver for the "soak" tests. It is a peer of the # quick.test and all.test scripts. # # $Id: soak.test,v 1.3 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl rename finish_test really_finish_test proc finish_test {} {} # By default, guarantee that the tests will run for at least 1 hour. |
︙ | ︙ | |||
83 84 85 86 87 88 89 | lappend ::failList $tail set sqlite_open_file_count 0 } } really_finish_test | < | 83 84 85 86 87 88 89 | lappend ::failList $tail set sqlite_open_file_count 0 } } really_finish_test |
Changes to test/speed4.test.
︙ | ︙ | |||
13 14 15 16 17 18 19 | # the focus is on the speed of: # # * joins # * views # * sub-selects # * triggers # | | | 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | # the focus is on the speed of: # # * joins # * views # * sub-selects # * triggers # # $Id: speed4.test,v 1.2 2008/07/12 14:52:20 drh Exp $ # set testdir [file dirname $argv0] source $testdir/tester.tcl speed_trial_init speed1 # Set a uniform random seed |
︙ | ︙ | |||
225 226 227 228 229 230 231 | append sql "DELETE FROM t4 WHERE rowid = $ii;" } speed_trial speed4-notrigger3 10000 stmt $sql execsql {COMMIT} speed_trial_summary speed4 finish_test | < | 225 226 227 228 229 230 231 | append sql "DELETE FROM t4 WHERE rowid = $ii;" } speed_trial speed4-notrigger3 10000 stmt $sql execsql {COMMIT} speed_trial_summary speed4 finish_test |
Changes to test/tableapi.test.
︙ | ︙ | |||
8 9 10 11 12 13 14 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing the sqlite_exec_printf() and # sqlite_get_table_printf() APIs. # | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing the sqlite_exec_printf() and # sqlite_get_table_printf() APIs. # # $Id: tableapi.test,v 1.19 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable memdebug { source $testdir/malloc_common.tcl } |
︙ | ︙ | |||
67 68 69 70 71 72 73 | } {0 3 2 a b 48 (48) 49 (49) 50 (50)} do_test tableapi-2.3.3 { sqlite3_get_table_printf $::dbx { SELECT * FROM xyz WHERE a>47 ORDER BY a; invalid } {} } {1 {near "invalid": syntax error}} do_test tableapi-2.3.4 { | < | 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | } {0 3 2 a b 48 (48) 49 (49) 50 (50)} do_test tableapi-2.3.3 { sqlite3_get_table_printf $::dbx { SELECT * FROM xyz WHERE a>47 ORDER BY a; invalid } {} } {1 {near "invalid": syntax error}} do_test tableapi-2.3.4 { sqlite3_get_table_printf $::dbx { SELECT * FROM xyz WHERE a>47 ORDER BY a } {} 8 } {0 a b 48 (48) 49 (49) 50 (50)} do_test tableapi-2.4 { set manyquote '''''''' append manyquote $manyquote |
︙ | ︙ |
Changes to test/thread001.test.
1 2 3 4 5 6 7 8 9 10 11 | # 2007 September 7 # # 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. # #*********************************************************************** # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # 2007 September 7 # # 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. # #*********************************************************************** # # $Id: thread001.test,v 1.5 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl source $testdir/thread_common.tcl if {[info commands sqlthread] eq ""} { return |
︙ | ︙ | |||
132 133 134 135 136 137 138 | } {1} do_test thread001.$tn.7 { execsql { PRAGMA integrity_check } } {ok} } finish_test | < | 132 133 134 135 136 137 138 | } {1} do_test thread001.$tn.7 { execsql { PRAGMA integrity_check } } {ok} } finish_test |
Changes to test/thread002.test.
︙ | ︙ | |||
8 9 10 11 12 13 14 | # May you share freely, never taking more than you give. # #*********************************************************************** # # This test attempts to deadlock SQLite in shared-cache mode. # # | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # May you share freely, never taking more than you give. # #*********************************************************************** # # This test attempts to deadlock SQLite in shared-cache mode. # # # $Id: thread002.test,v 1.3 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl source $testdir/thread_common.tcl if {[info commands sqlthread] eq ""} { finish_test |
︙ | ︙ | |||
103 104 105 106 107 108 109 | ] db close set res } [list [expr 1 + $::NTHREAD*100] ok] } finish_test | < | 103 104 105 106 107 108 109 | ] db close set res } [list [expr 1 + $::NTHREAD*100] ok] } finish_test |
Changes to test/tkt1667.test.
︙ | ︙ | |||
10 11 12 13 14 15 16 | #*********************************************************************** # This file implements regression tests for SQLite library. # # This file implements tests to verify that ticket #1667 has been # fixed. # # | | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #*********************************************************************** # This file implements regression tests for SQLite library. # # This file implements tests to verify that ticket #1667 has been # fixed. # # # $Id: tkt1667.test,v 1.3 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable !autovacuum||!tclvar { finish_test return |
︙ | ︙ | |||
77 78 79 80 81 82 83 | execsql { DELETE FROM t1; } } {} integrity_check tkt1667-4.2 finish_test | < < | 77 78 79 80 81 82 83 | execsql { DELETE FROM t1; } } {} integrity_check tkt1667-4.2 finish_test |
Changes to test/tkt2213.test.
︙ | ︙ | |||
10 11 12 13 14 15 16 | #*********************************************************************** # This file implements regression tests for SQLite library. # # This file implements tests to verify that ticket #2213 has been # fixed. # # | | < | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #*********************************************************************** # This file implements regression tests for SQLite library. # # This file implements tests to verify that ticket #2213 has been # fixed. # # # $Id: tkt2213.test,v 1.2 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl do_test tkt2213-1 { sqlite3_create_function db catchsql { SELECT tkt2213func(tkt2213func('abcd')); } } {0 abcd} finish_test |
Changes to test/tkt2285.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2005 September 17 # # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. Specifically. # it contains tests to verify that ticket #2285 has been fixed. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 2005 September 17 # # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. Specifically. # it contains tests to verify that ticket #2285 has been fixed. # # $Id: tkt2285.test,v 1.2 2008/07/12 14:52:20 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable !tempdb { finish_test return |
︙ | ︙ | |||
50 51 52 53 54 55 56 | execsql { SELECT * FROM sqlite_temp_master; } } {} } finish_test | < | 50 51 52 53 54 55 56 | execsql { SELECT * FROM sqlite_temp_master; } } {} } finish_test |
Changes to test/tkt2767.test.
︙ | ︙ | |||
9 10 11 12 13 14 15 | # #*********************************************************************** # # This file is to test that ticket #2767 has been fixed. # Ticket #2767 is for a VDBE stack overflow on BEFORE # triggers that run RAISE(IGNORE). # | | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # #*********************************************************************** # # This file is to test that ticket #2767 has been fixed. # Ticket #2767 is for a VDBE stack overflow on BEFORE # triggers that run RAISE(IGNORE). # # $Id: tkt2767.test,v 1.2 2008/07/12 14:52:21 drh Exp $ # set testdir [file dirname $argv0] source $testdir/tester.tcl do_test tkt2767-1.1 { execsql { |
︙ | ︙ |
Changes to test/tkt2817.test.
︙ | ︙ | |||
8 9 10 11 12 13 14 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. # # Specifically, it tests that bug 2817 is fixed. # | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. # # Specifically, it tests that bug 2817 is fixed. # # $Id: tkt2817.test,v 1.2 2008/07/12 14:52:21 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl do_test tkt2817-1.0 { execsql { CREATE TEMP TABLE tbl(a, b, c); |
︙ | ︙ | |||
66 67 68 69 70 71 72 | } {} integrity_check tkt2817-2.2 db close sqlite3 db test.db integrity_check tkt2817-2.3 finish_test | < | 66 67 68 69 70 71 72 | } {} integrity_check tkt2817-2.2 db close sqlite3 db test.db integrity_check tkt2817-2.3 finish_test |
Changes to test/tkt2832.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2007 Dec 12 # # 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. # #*********************************************************************** # # This file is to test that ticket #2832 has been fixed. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 2007 Dec 12 # # 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. # #*********************************************************************** # # This file is to test that ticket #2832 has been fixed. # # $Id: tkt2832.test,v 1.4 2008/07/12 14:52:21 drh Exp $ # set testdir [file dirname $argv0] source $testdir/tester.tcl do_test tkt2832-1.1 { execsql { |
︙ | ︙ | |||
59 60 61 62 63 64 65 | } } {} do_test tkt2832-3.2 { execsql { DELETE FROM t3 WHERE 1 } } {} finish_test | < | 59 60 61 62 63 64 65 | } } {} do_test tkt2832-3.2 { execsql { DELETE FROM t3 WHERE 1 } } {} finish_test |
Changes to test/tkt2854.test.
1 2 3 4 5 6 7 8 9 10 11 | # 2007 December 20 # # 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. # #*********************************************************************** # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # 2007 December 20 # # 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. # #*********************************************************************** # # $Id: tkt2854.test,v 1.3 2008/07/12 14:52:21 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl db close ifcapable !shared_cache { finish_test |
︙ | ︙ | |||
143 144 145 146 147 148 149 | db close db2 close db3 close db4 close sqlite3_enable_shared_cache $::enable_shared_cache finish_test | < | 143 144 145 146 147 148 149 | db close db2 close db3 close db4 close sqlite3_enable_shared_cache $::enable_shared_cache finish_test |
Changes to test/tkt2927.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2008 Feb 6 # # 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. # #*********************************************************************** # # This file is to test that ticket #2927 is fixed. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 2008 Feb 6 # # 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. # #*********************************************************************** # # This file is to test that ticket #2927 is fixed. # # $Id: tkt2927.test,v 1.3 2008/07/12 14:52:21 drh Exp $ # set testdir [file dirname $argv0] source $testdir/tester.tcl # Create a database. # |
︙ | ︙ | |||
36 37 38 39 40 41 42 | db eval { SELECT a, b FROM t1 UNION ALL SELECT a, b FROM t1 } } {1 11 2 22 3 33 4 44 5 55 1 11 2 22 3 33 4 44 5 55} do_test tkt2927-2.2 { | < | 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | db eval { SELECT a, b FROM t1 UNION ALL SELECT a, b FROM t1 } } {1 11 2 22 3 33 4 44 5 55 1 11 2 22 3 33 4 44 5 55} do_test tkt2927-2.2 { #set sqlite_addop_trace 1 db eval { SELECT a, b FROM t1 UNION ALL SELECT a, abs(b) FROM t1 } } {1 11 2 22 3 33 4 44 5 55 1 11 2 22 3 33 4 44 5 55} |
︙ | ︙ |
Changes to test/tkt3121.test.
1 2 3 4 5 6 7 8 9 10 11 | # 2008 May 16 # # 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. # #*********************************************************************** # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # 2008 May 16 # # 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. # #*********************************************************************** # # $Id: tkt3121.test,v 1.2 2008/07/12 14:52:21 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable !vtab { finish_test return |
︙ | ︙ | |||
44 45 46 47 48 49 50 | t1.field as Field, t2.descr as Descr from t1 inner join t2 on t1.field = t2.col order by t1.field } } {abcd {A nice description}} finish_test | < | 44 45 46 47 48 49 50 | t1.field as Field, t2.descr as Descr from t1 inner join t2 on t1.field = t2.col order by t1.field } } {abcd {A nice description}} finish_test |
Changes to test/tkt3201.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2008 July 4 # # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. # Specifically, it tests that bug #3201 has been fixed. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 2008 July 4 # # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. # Specifically, it tests that bug #3201 has been fixed. # # $Id: tkt3201.test,v 1.3 2008/07/12 14:52:21 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl do_test tkt3201-1 { execsql { CREATE TABLE t1(a INTEGER PRIMARY KEY, b TEXT); |
︙ | ︙ | |||
68 69 70 71 72 73 74 | do_test tkt3201-7 { execsql { SELECT a, b, c, d FROM t1, t3 WHERE a < c } } {1 one 2 two} finish_test | < < | 68 69 70 71 72 73 74 | do_test tkt3201-7 { execsql { SELECT a, b, c, d FROM t1, t3 WHERE a < c } } {1 one 2 two} finish_test |
Changes to test/triggerB.test.
︙ | ︙ | |||
31 32 33 34 35 36 37 | BEGIN UPDATE x SET y = new.y WHERE x = new.x; END; SELECT * FROM vx; } } {1 1 0 2 1 0} do_test triggerB-1.2 { | < | 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | BEGIN UPDATE x SET y = new.y WHERE x = new.x; END; SELECT * FROM vx; } } {1 1 0 2 1 0} do_test triggerB-1.2 { execsql { UPDATE vx SET y = yy; SELECT * FROM vx; } } {1 0 0 2 0 0} finish_test |
Changes to test/vacuum3.test.
︙ | ︙ | |||
8 9 10 11 12 13 14 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is changing the database page size using a # VACUUM statement. # | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is changing the database page size using a # VACUUM statement. # # $Id: vacuum3.test,v 1.6 2008/07/12 14:52:21 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # If the VACUUM statement is disabled in the current build, skip all # the tests in this file. # |
︙ | ︙ | |||
51 52 53 54 55 56 57 | 1024 1024 2048 \ 1170 1024 2048 \ 256 1024 2048 \ 512 512 1024 \ 4096 4096 8192 \ 1024 1024 2048 \ ] { | < | 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | 1024 1024 2048 \ 1170 1024 2048 \ 256 1024 2048 \ 512 512 1024 \ 4096 4096 8192 \ 1024 1024 2048 \ ] { do_test vacuum3-1.$I.1 { execsql " PRAGMA page_size = $request; VACUUM; " execsql { PRAGMA page_size } } $actual |
︙ | ︙ | |||
101 102 103 104 105 106 107 | 1024 1024 3072 \ 1170 1024 3072 \ 256 1024 3072 \ 512 512 2048 \ 4096 4096 8192 \ 1024 1024 3072 \ ] { | < | 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | 1024 1024 3072 \ 1170 1024 3072 \ 256 1024 3072 \ 512 512 2048 \ 4096 4096 8192 \ 1024 1024 3072 \ ] { do_test vacuum3-2.$I.1 { execsql " PRAGMA page_size = $request; VACUUM; " execsql { PRAGMA page_size } } $actual |
︙ | ︙ | |||
177 178 179 180 181 182 183 | 1024 1024 \ 1170 1024 \ 256 1024 \ 512 512 \ 4096 4096 \ 1024 1024 \ ] { | < | 175 176 177 178 179 180 181 182 183 184 185 186 187 188 | 1024 1024 \ 1170 1024 \ 256 1024 \ 512 512 \ 4096 4096 \ 1024 1024 \ ] { do_test vacuum3-3.$I.1 { execsql " PRAGMA page_size = $request; VACUUM; " execsql { PRAGMA page_size } } $actual |
︙ | ︙ |
Changes to test/veryquick.test.
1 2 3 4 5 6 7 8 9 10 | # # 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. # #*********************************************************************** # This file runs all the tests run by quick.test except for those related # to malloc or IO error simulation. With these tests omitted, the overall # run time is reduced by about 75%. # | | < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # # 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. # #*********************************************************************** # This file runs all the tests run by quick.test except for those related # to malloc or IO error simulation. With these tests omitted, the overall # run time is reduced by about 75%. # # $Id: veryquick.test,v 1.9 2008/07/12 14:52:21 drh Exp $ set testdir [file dirname $argv0] set ISVERYQUICK 1 source $testdir/quick.test |
Changes to test/vtab3.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2006 June 10 # # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is the authorisation callback and virtual tables. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 2006 June 10 # # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is the authorisation callback and virtual tables. # # $Id: vtab3.test,v 1.3 2008/07/12 14:52:21 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable !vtab||!auth { finish_test return |
︙ | ︙ | |||
134 135 136 137 138 139 140 | do_test vtab3-1.8.2 { execsql { SELECT name FROM sqlite_master WHERE type = 'table'; } } {elephant} finish_test | < < | 134 135 136 137 138 139 140 | do_test vtab3-1.8.2 { execsql { SELECT name FROM sqlite_master WHERE type = 'table'; } } {elephant} finish_test |
Changes to test/vtab4.test.
︙ | ︙ | |||
12 13 14 15 16 17 18 | # focus is on testing the following virtual table methods: # # xBegin # xSync # xCommit # xRollback # | | | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | # focus is on testing the following virtual table methods: # # xBegin # xSync # xCommit # xRollback # # $Id: vtab4.test,v 1.3 2008/07/12 14:52:21 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl unset -nocomplain echo_module unset -nocomplain echo_module_sync_fail |
︙ | ︙ | |||
164 165 166 167 168 169 170 | INSERT INTO techo VALUES(1, 2, 3); } } {1 {unknown error}} do_test vtab4-3.2 { set echo_module } {xBegin echo(treal) xSync echo(treal) xRollback echo(treal)} | < | 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | INSERT INTO techo VALUES(1, 2, 3); } } {1 {unknown error}} do_test vtab4-3.2 { set echo_module } {xBegin echo(treal) xSync echo(treal) xRollback echo(treal)} do_test vtab4-3.3 { set echo_module [list] set echo_module_sync_fail sreal catchsql { BEGIN; INSERT INTO techo SELECT * FROM secho; DELETE FROM secho; |
︙ | ︙ |
Changes to test/vtab5.test.
1 2 3 4 5 6 7 8 9 10 11 12 | # 2006 June 10 # # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # 2006 June 10 # # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. # # $Id: vtab5.test,v 1.8 2008/07/12 14:52:21 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable !vtab { finish_test return |
︙ | ︙ | |||
146 147 148 149 150 151 152 | # do_test vtab5.4.3 { # catchsql { # ALTER TABLE echo_strings RENAME TO echo_strings2; # } # } {1 {virtual tables may not be altered}} finish_test | < | 146 147 148 149 150 151 152 | # do_test vtab5.4.3 { # catchsql { # ALTER TABLE echo_strings RENAME TO echo_strings2; # } # } {1 {virtual tables may not be altered}} finish_test |
Changes to test/vtab6.test.
︙ | ︙ | |||
10 11 12 13 14 15 16 | #*********************************************************************** # This file implements regression tests for SQLite library. # # This file implements tests for joins, including outer joins involving # virtual tables. The test cases in this file are copied from the file # join.test, and some of the comments still reflect that. # | | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #*********************************************************************** # This file implements regression tests for SQLite library. # # This file implements tests for joins, including outer joins involving # virtual tables. The test cases in this file are copied from the file # join.test, and some of the comments still reflect that. # # $Id: vtab6.test,v 1.4 2008/07/12 14:52:21 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable !vtab { finish_test return |
︙ | ︙ | |||
153 154 155 156 157 158 159 | do_test vtab6-1.12 { execsql { SELECT * FROM t1 natural inner join t2; } } {1 2 3 4 2 3 4 5} ifcapable subquery { | < | 153 154 155 156 157 158 159 160 161 162 163 164 165 166 | do_test vtab6-1.12 { execsql { SELECT * FROM t1 natural inner join t2; } } {1 2 3 4 2 3 4 5} ifcapable subquery { do_test vtab6-1.13 { execsql2 { SELECT * FROM t1 NATURAL JOIN (SELECT b as 'c', c as 'd', d as 'e' FROM t2) as t3 } } {a 1 b 2 c 3 d 4 e 5} do_test vtab6-1.14 { |
︙ | ︙ |
Changes to test/vtabA.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2007 June 26 # # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is 'hidden' virtual table columns. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 2007 June 26 # # 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. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is 'hidden' virtual table columns. # # $Id: vtabA.test,v 1.2 2008/07/12 14:52:21 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable !vtab { finish_test return |
︙ | ︙ | |||
128 129 130 131 132 133 134 | } {{} {} {} {}} do_test vtabA-2.4 { analyse_parse {(a whatelse can i hidden test, b HIDDEN hidden)} {a b} } {{} {whatelse can i test} hidden} finish_test | < | 128 129 130 131 132 133 134 | } {{} {} {} {}} do_test vtabA-2.4 { analyse_parse {(a whatelse can i hidden test, b HIDDEN hidden)} {a b} } {{} {whatelse can i test} hidden} finish_test |
Changes to test/where.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 4 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. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing the use of indices in WHERE clases. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 4 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. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing the use of indices in WHERE clases. # # $Id: where.test,v 1.45 2008/07/12 14:52:21 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Build some test data # do_test where-1.0 { |
︙ | ︙ | |||
1081 1082 1083 1084 1085 1086 1087 | } } {1/1 1/4 4/1 4/4 nosort} do_test where-14.4 { cksort { SELECT x.a || '/' || y.a FROM t8 x, t8 y ORDER BY x.a, x.b DESC } } {1/1 1/4 4/1 4/4 nosort} | < | 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 | } } {1/1 1/4 4/1 4/4 nosort} do_test where-14.4 { cksort { SELECT x.a || '/' || y.a FROM t8 x, t8 y ORDER BY x.a, x.b DESC } } {1/1 1/4 4/1 4/4 nosort} do_test where-14.5 { cksort { SELECT x.a || '/' || y.a FROM t8 x, t8 y ORDER BY x.b, x.a||x.b } } {4/1 4/4 1/1 1/4 nosort} do_test where-14.6 { cksort { |
︙ | ︙ |