Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Test case and fix for the specific failure of ticket [b351d95f9cd5ef17e9d9dbae]. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | bug-b351d95f9c |
Files: | files | file ages | folders |
SHA1: |
57789cfe674dbbd4d5e4663774d1e7c5 |
User & Date: | drh 2010-09-28 04:14:04.000 |
Context
2010-09-28
| ||
06:00 | Tweaks to help facilitate structural test coverage. (check-in: ff49a5f00b user: drh tags: bug-b351d95f9c) | |
04:14 | Test case and fix for the specific failure of ticket [b351d95f9cd5ef17e9d9dbae]. (check-in: 57789cfe67 user: drh tags: bug-b351d95f9c) | |
03:55 | Use OP_Copy rather than OP_SCopy at one point in aggregate processing where it is needed to avoid shallow-copy misuse. (check-in: a5eefd5239 user: drh tags: bug-b351d95f9c) | |
Changes
Changes to src/expr.c.
︙ | ︙ | |||
2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 | testcase( pX->op==TK_REGISTER ); cacheX.iTable = sqlite3ExprCodeTemp(pParse, pX, ®Free1); testcase( regFree1==0 ); cacheX.op = TK_REGISTER; opCompare.op = TK_EQ; opCompare.pLeft = &cacheX; pTest = &opCompare; } for(i=0; i<nExpr; i=i+2){ sqlite3ExprCachePush(pParse); if( pX ){ assert( pTest!=0 ); opCompare.pRight = aListelem[i].pExpr; }else{ | > > > > > | 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 | testcase( pX->op==TK_REGISTER ); cacheX.iTable = sqlite3ExprCodeTemp(pParse, pX, ®Free1); testcase( regFree1==0 ); cacheX.op = TK_REGISTER; opCompare.op = TK_EQ; opCompare.pLeft = &cacheX; pTest = &opCompare; /* Ticket b351d95f9cd5ef17e9d9dbae18f5ca8611190001: ** The value in regFree1 might get SCopy-ed into the file result. ** So make sure that the regFree1 register is not reused for other ** purposes and possibly overwritten. */ regFree1 = 0; } for(i=0; i<nExpr; i=i+2){ sqlite3ExprCachePush(pParse); if( pX ){ assert( pTest!=0 ); opCompare.pRight = aListelem[i].pExpr; }else{ |
︙ | ︙ |
Added test/tkt-b351d95f9.test.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 42 43 44 45 46 47 | # 2010 September 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. Specifically, # it tests that ticket [b351d95f9cd5ef17e9d9dbae18f5ca8611190001] has been # resolved. # set testdir [file dirname $argv0] source $testdir/tester.tcl source $testdir/lock_common.tcl source $testdir/malloc_common.tcl do_test tkt-b351d95.1 { execsql { CREATE table t1(a,b); INSERT INTO t1 VALUES('name1','This is a test'); INSERT INTO t1 VALUES('name2','xyz'); CREATE TABLE t2(x,y); INSERT INTO t2 SELECT a, CASE b WHEN 'xyz' THEN null ELSE b END FROM t1; SELECT x, y FROM t2 ORDER BY x; } } {name1 {This is a test} name2 {}} do_test tkt-b351d95.2 { execsql { DELETE FROM t2; INSERT INTO t2 SELECT a, coalesce(b,a) FROM t1; SELECT x, y FROM t2 ORDER BY x; } } {name1 {This is a test} name2 xyz} do_test tkt-b351d95.3 { execsql { DELETE FROM t2; INSERT INTO t2 SELECT a, coalesce(b,a) FROM t1; SELECT x, y BETWEEN 'xy' AND 'xz' FROM t2 ORDER BY x; } } {name1 0 name2 1} finish_test |