0
0
mirror of https://github.com/sqlite/sqlite.git synced 2024-12-01 17:23:42 +01:00

Fix a faulty assert() in the merge implementation of the UNION operator.

Ticket #3467. (CVS 5852)

FossilOrigin-Name: cd1662e964d9c071a41038676c5a6ef2c990f1ac
This commit is contained in:
drh 2008-10-30 22:13:23 +00:00
parent f150c9de55
commit 1c0dc8256b
4 changed files with 24 additions and 13 deletions

View File

@ -1,5 +1,5 @@
C Fix\sa\scrash\sthat\scan\sfollow\sa\smalloc\sfailure\sin\ssqlite3ValueFromExpr().\sTicket\s#3468.\s(CVS\s5851)
D 2008-10-30T17:21:13
C Fix\sa\sfaulty\sassert()\sin\sthe\smerge\simplementation\sof\sthe\sUNION\soperator.\nTicket\s#3467.\s(CVS\s5852)
D 2008-10-30T22:13:23
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
F Makefile.in da817da72422f9b876602c225fcd17d6ca4182f7
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@ -148,7 +148,7 @@ F src/prepare.c c7e00ed1b0bdcf699b1aad651247d4dc3d281b0b
F src/printf.c 785f87120589c1db672e37c6eb1087c456e6f84d
F src/random.c a87afbd598aa877e23ac676ee92fd8ee5c786a51
F src/resolve.c 266bb03d2b456fe68f5df2dd5687e7e88ff8088d
F src/select.c d910d7350df0d918e22286c5bfd39d4ea68ec813
F src/select.c 59ffe26fe84e1f1f0bf8082dfa39f844c6a02f74
F src/shell.c d83b578a8ccdd3e0e7fef4388a0887ce9f810967
F src/sqlite.h.in f74e769732013f96d1ea71e4fe9a489c76bed785
F src/sqlite3ext.h 1db7d63ab5de4b3e6b83dd03d1a4e64fef6d2a17
@ -427,7 +427,7 @@ F test/mallocF.test 2d5c590ebc2fc7f0dcebdf5aa8498b9aed69107e
F test/mallocG.test 4584d0d8ddb8009f16ca0c8bab1fa37f6358efa2
F test/mallocH.test 79b65aed612c9b3ed2dcdaa727c85895fd1bfbdb
F test/mallocI.test 6e24fe6444bd2999ccc81f984977b44c0d6e5591
F test/mallocJ.test d7a6e82de88d194055ae715da50cc09179603282
F test/mallocJ.test 5e7798d543cd837d6fd1c1d8086fe1867e705723
F test/malloc_common.tcl 984baeb6c6b185e798827d1187d426acc2bc4962
F test/manydb.test 8de36b8d33aab5ef295b11d9e95310aeded31af8
F test/memdb.test a67bda4ff90a38f2b19f6c7f95aa7289e051d893
@ -652,7 +652,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81
F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
P 4c6a90a16627b1664bf7f15ab40b440b3bd60b48
R 18a1372ede481036089807fde4a470c0
U danielk1977
Z 8cc2bcfa926e2577f603891ab838a0a1
P 0996783b1b7e6dda166565071cbd19f23e7edbbc
R 41c3494036b2c015e32affe1d847d6d3
U drh
Z 9a404301611b14e1f4a10624e376859d

View File

@ -1 +1 @@
0996783b1b7e6dda166565071cbd19f23e7edbbc
cd1662e964d9c071a41038676c5a6ef2c990f1ac

View File

@ -12,7 +12,7 @@
** This file contains C code routines that are called by the parser
** to handle SELECT statements in SQLite.
**
** $Id: select.c,v 1.480 2008/10/07 19:53:14 drh Exp $
** $Id: select.c,v 1.481 2008/10/30 22:13:23 drh Exp $
*/
#include "sqliteInt.h"
@ -2144,7 +2144,7 @@ static int multiSelectOrderBy(
regPrev = 0;
}else{
int nExpr = p->pEList->nExpr;
assert( nOrderBy>=nExpr );
assert( nOrderBy>=nExpr || db->mallocFailed );
regPrev = sqlite3GetTempRange(pParse, nExpr+1);
sqlite3VdbeAddOp2(v, OP_Integer, 0, regPrev);
pKeyDup = sqlite3DbMallocZero(db,

View File

@ -12,7 +12,7 @@
# This test script checks malloc failures in LIMIT operations for
# UPDATE/DELETE statements.
#
# $Id: mallocJ.test,v 1.1 2008/10/10 13:34:30 shane Exp $
# $Id: mallocJ.test,v 1.2 2008/10/30 22:13:23 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
@ -20,7 +20,7 @@ source $testdir/malloc_common.tcl
ifcapable {update_delete_limit} {
do_malloc_test mallocJ-4 -sqlprep {
do_malloc_test mallocJ-1 -sqlprep {
DROP TABLE IF EXISTS t1;
CREATE TABLE t1(x int, y int);
INSERT INTO t1 VALUES(1,1);
@ -38,4 +38,15 @@ ifcapable {update_delete_limit} {
}
# 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