From 6138df56e7a03be06f15d53d284684bcdeb3b80f Mon Sep 17 00:00:00 2001 From: drh Date: Tue, 19 Oct 2004 16:40:59 +0000 Subject: [PATCH] Reinsert code deleted by (1998) that we thought was unused but was in fact needed. Fix for ticket #966. (CVS 2025) FossilOrigin-Name: 370ca539506a431dbe77dcb644215886760f34e9 --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/vdbe.c | 17 +++++++++++++++-- test/misc4.test | 17 ++++++++++++++++- 4 files changed, 39 insertions(+), 11 deletions(-) diff --git a/manifest b/manifest index 90a668b5cb..46adc64d72 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\stypo\sin\sthe\squickstart\sdocument.\s(CVS\s2024) -D 2004-10-19T01:31:20 +C Reinsert\scode\sdeleted\sby\s(1998)\sthat\swe\sthought\swas\sunused\sbut\swas\sin\sfact\r\nneeded.\s\sFix\sfor\sticket\s#966.\s(CVS\s2025) +D 2004-10-19T16:40:59 F Makefile.in 52c1cc106cad9148d4b7cb387b458e82dc86b339 F Makefile.linux-gcc a9e5a0d309fa7c38e7c14d3ecf7690879d3a5457 F README a01693e454a00cc117967e3f9fdab2d4d52e9bc1 @@ -76,7 +76,7 @@ F src/update.c 174c3b593b8f4928e510a51ec309e8ce69d2371c F src/utf.c f4f83acd73389090e32d6589d307fc55d794c7ed F src/util.c f4ab796b9def353feed2191d7ce8e39a0f5059cd F src/vacuum.c 257de36230cb988842f66eb08dc6c0250b8e05f3 -F src/vdbe.c 02fd01b71868c7a670234e92c8e64316d48a3127 +F src/vdbe.c adbcdbc817ae2f411904cd12582f06fc1ca8be1e F src/vdbe.h 067ca8d6750ba4f69a50284765e5883dee860181 F src/vdbeInt.h 6017100adff362b8dfa37a69e3f1431f084bfa5b F src/vdbeapi.c 81ab9e84c55f5762f552904e6e5d309269b02017 @@ -147,7 +147,7 @@ F test/minmax.test c0f92d3f7b11656221735385f2c8b1878bbbdaf6 F test/misc1.test 1a20ea722dff15155e93948dc4ac3e8d80fec386 F test/misc2.test 703734f5817215ca54e364833b3bf5ff36fcc21e F test/misc3.test 57c373aed45acdf45f8f78ea914ef8855841e6b7 -F test/misc4.test 9f8ab4896dd627f5f9ba893a7b57c9f0a95dfd64 +F test/misc4.test d005a75f095bb04db09a5d096144405ae566b622 F test/misuse.test fcd9e7cec6ecccc34822584aec6b4e31f13629e1 F test/notnull.test 7a08117a71e74b0321aaa937dbeb41a09d6eb1d0 F test/null.test 642428b6a5408cc5b954b49e1b6e5025e4458b2b @@ -252,7 +252,7 @@ F www/tclsqlite.tcl 560ecd6a916b320e59f2917317398f3d59b7cc25 F www/vdbe.tcl 59288db1ac5c0616296b26dce071c36cb611dfe9 F www/version3.tcl 092a01f5ef430d2c4acc0ae558d74c4bb89638a0 F www/whentouse.tcl fdacb0ba2d39831e8a6240d05a490026ad4c4e4c -P 77542beb31349b85bdf404c46980da346dde3266 -R 1123ff5a190f3a3d9924f56a26743d11 +P 55b03c560d2f66c55d64c3e9f9577e33f8c63195 +R 462557c854f7b30b37ca39ec9dc0db3d U drh -Z 3306edbad41620ea46cbe737f2e21213 +Z e8f25bd39be0085dd77f02f0608ae8de diff --git a/manifest.uuid b/manifest.uuid index 37fdfabb5b..b23f520787 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -55b03c560d2f66c55d64c3e9f9577e33f8c63195 \ No newline at end of file +370ca539506a431dbe77dcb644215886760f34e9 \ No newline at end of file diff --git a/src/vdbe.c b/src/vdbe.c index 1f42c8ca29..854a09577c 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -43,7 +43,7 @@ ** in this file for details. If in doubt, do not deviate from existing ** commenting and indentation practices when changing or adding code. ** -** $Id: vdbe.c,v 1.418 2004/10/06 15:41:17 drh Exp $ +** $Id: vdbe.c,v 1.419 2004/10/19 16:40:59 drh Exp $ */ #include "sqliteInt.h" #include "os.h" @@ -4237,7 +4237,20 @@ case OP_AggGet: { AggElem *pFocus; int i = pOp->p2; pFocus = p->agg.pCurrent; - if( pFocus==0 ) goto no_mem; + if( pFocus==0 ){ + int res; + if( sqlite3_malloc_failed ) goto no_mem; + rc = sqlite3BtreeFirst(p->agg.pCsr, &res); + if( rc!=SQLITE_OK ){ + return rc; + } + if( res!=0 ){ + rc = AggInsert(&p->agg,"",1); + pFocus = p->agg.pCurrent; + }else{ + rc = sqlite3BtreeData(p->agg.pCsr, 0, 4, (char *)&pFocus); + } + } assert( i>=0 && iagg.nMem ); pTos++; sqlite3VdbeMemShallowCopy(pTos, &pFocus->aMem[i], MEM_Ephem); diff --git a/test/misc4.test b/test/misc4.test index 75c9e20c84..1b0663281b 100644 --- a/test/misc4.test +++ b/test/misc4.test @@ -13,7 +13,7 @@ # This file implements tests for miscellanous features that were # left out of other test files. # -# $Id: misc4.test,v 1.6 2004/07/24 17:38:30 drh Exp $ +# $Id: misc4.test,v 1.7 2004/10/19 16:40:59 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -82,5 +82,20 @@ do_test misc4-2.4 { } } {0 {}} +# Ticket #966 +# +do_test misc4-3.1 { + execsql { + CREATE TABLE Table1(ID integer primary key, Value TEXT); + INSERT INTO Table1 VALUES(1, 'x'); + CREATE TABLE Table2(ID integer NOT NULL, Value TEXT); + INSERT INTO Table2 VALUES(1, 'z'); + INSERT INTO Table2 VALUES (1, 'a'); + SELECT ID, Value FROM Table1 + UNION SELECT ID, max(Value) FROM Table2 GROUP BY 1,2 + ORDER BY 1, 2; + } +} {{} {} 1 x 1 z} + finish_test