Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Enhanced test coverage. (CVS 5598) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
cc36b4e016a1f519ca81d591de3a551e |
User & Date: | drh 2008-08-22 16:29:51.000 |
Context
2008-08-22
| ||
17:09 | Relinquish the pcache mutex before calling an xStress callback. This ensures that the pcache mutex is never held while IO is performed. (CVS 5599) (check-in: 8fe234b2ca user: danielk1977 tags: trunk) | |
16:29 | Enhanced test coverage. (CVS 5598) (check-in: cc36b4e016 user: drh tags: trunk) | |
16:22 | When recycling a page, try to find one that does not require a call to xSync() on the journal file. Also simplify some of the mutex related things in pcache. (CVS 5597) (check-in: 93dbc5427b user: danielk1977 tags: trunk) | |
Changes
Changes to src/expr.c.
︙ | ︙ | |||
8 9 10 11 12 13 14 | ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This file contains routines used for analyzing expressions and ** for generating VDBE code that evaluates expressions in SQLite. ** | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This file contains routines used for analyzing expressions and ** for generating VDBE code that evaluates expressions in SQLite. ** ** $Id: expr.c,v 1.390 2008/08/22 16:29:51 drh Exp $ */ #include "sqliteInt.h" #include <ctype.h> /* ** Return the 'affinity' of the expression pExpr if any. ** |
︙ | ︙ | |||
2419 2420 2421 2422 2423 2424 2425 | Parse *pParse, /* Parsing context */ ExprList *pList, /* The expression list to be coded */ int target, /* Where to write results */ int doHardCopy /* Call sqlite3ExprHardCopy on each element if true */ ){ struct ExprList_item *pItem; int i, n; | | < < < | 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 | Parse *pParse, /* Parsing context */ ExprList *pList, /* The expression list to be coded */ int target, /* Where to write results */ int doHardCopy /* Call sqlite3ExprHardCopy on each element if true */ ){ struct ExprList_item *pItem; int i, n; assert( pList!=0 ); assert( target>0 ); n = pList->nExpr; for(pItem=pList->a, i=0; i<n; i++, pItem++){ sqlite3ExprCode(pParse, pItem->pExpr, target+i); if( doHardCopy ) sqlite3ExprHardCopy(pParse, target, n); } return n; |
︙ | ︙ |
Changes to src/select.c.
︙ | ︙ | |||
8 9 10 11 12 13 14 | ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This file contains C code routines that are called by the parser ** to handle SELECT statements in SQLite. ** | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This file contains C code routines that are called by the parser ** to handle SELECT statements in SQLite. ** ** $Id: select.c,v 1.469 2008/08/22 16:29:51 drh Exp $ */ #include "sqliteInt.h" /* ** Delete all the content of a Select structure but do not deallocate ** the select structure itself. |
︙ | ︙ | |||
3145 3146 3147 3148 3149 3150 3151 | */ static int selectAddSubqueryTypeInfo(Walker *pWalker, Select *p){ Parse *pParse; int i; SrcList *pTabList; struct SrcList_item *pFrom; | | < < < < | 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 | */ static int selectAddSubqueryTypeInfo(Walker *pWalker, Select *p){ Parse *pParse; int i; SrcList *pTabList; struct SrcList_item *pFrom; assert( p->selFlags & SF_Resolved ); if( (p->selFlags & SF_HasTypeInfo)==0 ){ p->selFlags |= SF_HasTypeInfo; pParse = pWalker->pParse; pTabList = p->pSrc; for(i=0, pFrom=pTabList->a; i<pTabList->nSrc; i++, pFrom++){ Table *pTab = pFrom->pTab; if( pTab && (pTab->tabFlags & TF_Ephemeral)!=0 ){ |
︙ | ︙ |
Changes to test/expr.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 expressions. # | | | 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 expressions. # # $Id: expr.test,v 1.65 2008/08/22 16:29:51 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Create a table to work with. # execsql {CREATE TABLE test1(i1 int, i2 int, r1 real, r2 real, t1 text, t2 text)} |
︙ | ︙ | |||
602 603 604 605 606 607 608 609 610 611 612 613 614 615 | test_expr2 expr-7.58 {(a||'')<='1'} {1} test_expr2 expr-7.59 {LIKE('10%',b)} {10 20} test_expr2 expr-7.60 {LIKE('_4',b)} {6} test_expr2 expr-7.61 {GLOB('1?',a)} {10 11 12 13 14 15 16 17 18 19} test_expr2 expr-7.62 {GLOB('1*4',b)} {10 14} test_expr2 expr-7.63 {GLOB('*1[456]',b)} {4} # Test the CURRENT_TIME, CURRENT_DATE, and CURRENT_TIMESTAMP expressions. # set sqlite_current_time 1157124849 do_test expr-8.1 { execsql {SELECT CURRENT_TIME} } {15:34:09} | > > > > > > > > > > > > > > | 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 | test_expr2 expr-7.58 {(a||'')<='1'} {1} test_expr2 expr-7.59 {LIKE('10%',b)} {10 20} test_expr2 expr-7.60 {LIKE('_4',b)} {6} test_expr2 expr-7.61 {GLOB('1?',a)} {10 11 12 13 14 15 16 17 18 19} test_expr2 expr-7.62 {GLOB('1*4',b)} {10 14} test_expr2 expr-7.63 {GLOB('*1[456]',b)} {4} breakpoint test_expr2 expr-7.64 {b = abs(-2)} {1} test_expr2 expr-7.65 {b = abs(+-2)} {1} test_expr2 expr-7.66 {b = abs(++-2)} {1} test_expr2 expr-7.67 {b = abs(+-+-2)} {1} test_expr2 expr-7.68 {b = abs(+-++-2)} {1} test_expr2 expr-7.69 {b = abs(++++-2)} {1} test_expr2 expr-7.70 {b = 5 - abs(+3)} {1} test_expr2 expr-7.71 {b = 5 - abs(-3)} {1} test_expr2 expr-7.72 {b = abs(-2.0)} {1} test_expr2 expr-7.73 {b = 6 - abs(-a)} {2} test_expr2 expr-7.74 {b = abs(8.0)} {3} # Test the CURRENT_TIME, CURRENT_DATE, and CURRENT_TIMESTAMP expressions. # set sqlite_current_time 1157124849 do_test expr-8.1 { execsql {SELECT CURRENT_TIME} } {15:34:09} |
︙ | ︙ |