Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix a faulty assert() in the merge implementation of the UNION operator. Ticket #3467. (CVS 5852) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
cd1662e964d9c071a41038676c5a6ef2 |
User & Date: | drh 2008-10-30 22:13:23.000 |
Context
2008-10-31
| ||
10:53 | Change the way sqlite3VdbeSetColName() is called so as to remove a few lines of code. This also fixes #3470. (CVS 5853) (check-in: bfce91429b user: danielk1977 tags: trunk) | |
2008-10-30
| ||
22:13 | Fix a faulty assert() in the merge implementation of the UNION operator. Ticket #3467. (CVS 5852) (check-in: cd1662e964 user: drh tags: trunk) | |
17:21 | Fix a crash that can follow a malloc failure in sqlite3ValueFromExpr(). Ticket #3468. (CVS 5851) (check-in: 0996783b1b user: danielk1977 tags: trunk) | |
Changes
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.481 2008/10/30 22:13:23 drh Exp $ */ #include "sqliteInt.h" /* ** Delete all the content of a Select structure but do not deallocate ** the select structure itself. |
︙ | ︙ | |||
2140 2141 2142 2143 2144 2145 2146 | ** for the logic that removes duplicate result rows when the ** operator is UNION, EXCEPT, or INTERSECT (but not UNION ALL). */ if( op==TK_ALL ){ regPrev = 0; }else{ int nExpr = p->pEList->nExpr; | | | 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 | ** for the logic that removes duplicate result rows when the ** operator is UNION, EXCEPT, or INTERSECT (but not UNION ALL). */ if( op==TK_ALL ){ regPrev = 0; }else{ int nExpr = p->pEList->nExpr; assert( nOrderBy>=nExpr || db->mallocFailed ); regPrev = sqlite3GetTempRange(pParse, nExpr+1); sqlite3VdbeAddOp2(v, OP_Integer, 0, regPrev); pKeyDup = sqlite3DbMallocZero(db, sizeof(*pKeyDup) + nExpr*(sizeof(CollSeq*)+1) ); if( pKeyDup ){ pKeyDup->aSortOrder = (u8*)&pKeyDup->aColl[nExpr]; pKeyDup->nField = nExpr; |
︙ | ︙ |
Changes to test/mallocJ.test.
︙ | ︙ | |||
8 9 10 11 12 13 14 | # May you share freely, never taking more than you give. # #*********************************************************************** # # This test script checks malloc failures in LIMIT operations for # UPDATE/DELETE statements. # | | | > > > > > > > > > > > | 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 48 49 50 51 52 | # May you share freely, never taking more than you give. # #*********************************************************************** # # This test script checks malloc failures in LIMIT operations for # UPDATE/DELETE statements. # # $Id: mallocJ.test,v 1.2 2008/10/30 22:13:23 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl source $testdir/malloc_common.tcl ifcapable {update_delete_limit} { do_malloc_test mallocJ-1 -sqlprep { DROP TABLE IF EXISTS t1; CREATE TABLE t1(x int, y int); INSERT INTO t1 VALUES(1,1); INSERT INTO t1 VALUES(1,2); INSERT INTO t1 VALUES(1,2); INSERT INTO t1 VALUES(2,1); INSERT INTO t1 VALUES(2,2); INSERT INTO t1 VALUES(2,3); } -sqlbody { UPDATE t1 SET x=1 ORDER BY y LIMIT 2 OFFSET 2; UPDATE t1 SET x=2 WHERE y=1 ORDER BY y LIMIT 2 OFFSET 2; DELETE FROM t1 WHERE x=1 ORDER BY y LIMIT 2 OFFSET 2; DELETE FROM t1 ORDER BY y LIMIT 2 OFFSET 2; } } # ticket #3467 do_malloc_test mallocJ-2 -sqlprep { CREATE TABLE t1(a,b); INSERT INTO t1 VALUES(1,2); } -sqlbody { SELECT a, b, 'abc' FROM t1 UNION SELECT b, a, 'xyz' FROM t1 ORDER BY 2, 3; } finish_test |