From 1ecec3c03ec09f2d7ccda7a6aa68ab3c971d6777 Mon Sep 17 00:00:00 2001 From: drh Date: Tue, 6 Jun 2000 22:13:55 +0000 Subject: [PATCH] :-) (CVS 63) FossilOrigin-Name: 65d2100d33350e6bce30d4d75f3cead9fcab3efb --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/select.c | 9 ++++----- src/vdbe.c | 12 +++++++++--- 4 files changed, 21 insertions(+), 16 deletions(-) diff --git a/manifest b/manifest index 76cb257184..76b2e0830c 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C :-)\s(CVS\s62) -D 2000-06-06T21:56:08 +C :-)\s(CVS\s63) +D 2000-06-06T22:13:55 F COPYRIGHT 74a8a6531a42e124df07ab5599aad63870fa0bd4 F Makefile.in 17ba1ccf8d2d40c627796bba8f72952365d6d644 F README 51f6a4e7408b34afa5bc1c0485f61b6a4efb6958 @@ -14,7 +14,7 @@ F src/expr.c d350fe393e1753aaa733a5d21f0830a23e547400 F src/insert.c 5e69dd70c3f91cf5ec5090f39fd6cd8e135af9bf F src/main.c 93a7ad14bb5a82ad13ad59da23ef674a94b0c3d6 F src/parse.y 8b632f4c4ff2f4400f15592ca9d8fda27d97d0c4 -F src/select.c db29a091b6a5a4e90e7a0afb5721910ccaa9e19d +F src/select.c 74fa3af62bfa2e6e29f43153f883fd28c295b853 F src/shell.c 5fa24c0bb678782ffe9070128e3e160674f297eb F src/sqlite.h 58da0a8590133777b741f9836beaef3d58f40268 F src/sqliteInt.h 3cca846df0a8b5f811cf4f8021303547cd8f21fd @@ -22,7 +22,7 @@ F src/tclsqlite.c 9f358618ae803bedf4fb96da5154fd45023bc1f7 F src/tokenize.c 09373590cc3942aa4744eb431ac5b5ce31e7cfea F src/update.c 18746f920f989b3d19d96c08263c92584823cd35 F src/util.c 33f9baa01e45394ef0cf85361a0e872987884315 -F src/vdbe.c 562b12a9bafc098c114ab5eaec1307d071b89fd3 +F src/vdbe.c d78231479a357b69fa61283c18477f1c208088f9 F src/vdbe.h 8f79f57c66ce1030f6371ff067b326d627a52c6d F src/where.c c9b90e7672f4662a83ef9a27a193020d69fe034c F test/all.test 0950c135cab7e60c07bd745ccfad1476211e5bd7 @@ -50,7 +50,7 @@ F www/c_interface.tcl 9ac800854272db5fe439e07b7435b243a5422293 F www/changes.tcl f5839fe8de7449d994c71a8e48ce8ea736bec7d1 F www/index.tcl 0c63672bad5188327143ecd0a07c7c0741ff9823 F www/sqlite.tcl 2f933ce18cffd34a0a020a82435ab937137970fd -P 25984b4d3ce0f94fa98a159d840cc7bd4e8bc1ab -R 390a7e6fa62aea4b8e4067014add32c4 +P f4d9089c5d69b16fee5feb49b02e524499e6328d +R dbe7159bcbb54ce029964c82a0bd434c U drh -Z 9866a189debd27c7a4ca83d1442824ae +Z cf4067fbc404bfe31608e9dcddc7bc35 diff --git a/manifest.uuid b/manifest.uuid index 2ea4ee0813..ed40a9aa09 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -f4d9089c5d69b16fee5feb49b02e524499e6328d \ No newline at end of file +65d2100d33350e6bce30d4d75f3cead9fcab3efb \ No newline at end of file diff --git a/src/select.c b/src/select.c index bcfcd69bed..46bdb42894 100644 --- a/src/select.c +++ b/src/select.c @@ -24,7 +24,7 @@ ** This file contains C code routines that are called by the parser ** to handle SELECT statements. ** -** $Id: select.c,v 1.13 2000/06/06 21:56:08 drh Exp $ +** $Id: select.c,v 1.14 2000/06/06 22:13:55 drh Exp $ */ #include "sqliteInt.h" @@ -161,9 +161,8 @@ static int selectInnerLoop( ** the temporary table iParm. */ if( eDest==SRT_Except ){ - assert( pEList->nExpr==1 ); - sqliteVdbeAddOp(v, OP_String, 0, 0, "", 0); - sqliteVdbeAddOp(v, OP_Put, iParm, 0, 0, 0); + sqliteVdbeAddOp(v, OP_MakeRecord, nField, 0, 0, 0); + sqliteVdbeAddOp(v, OP_Delete, iParm, 0, 0, 0); }else /* If we are creating a set for an "expr IN (SELECT ...)" construct, @@ -182,6 +181,7 @@ static int selectInnerLoop( ** of the scan loop. */ if( eDest==SRT_Mem ){ + assert( pEList->nExpr==1 ); sqliteVdbeAddOp(v, OP_MemStore, iParm, 0, 0, 0); sqliteVdbeAddOp(v, OP_Goto, 0, iBreak, 0, 0); }else @@ -306,7 +306,6 @@ static int multiSelect(Parse *pParse, Select *p, int eDest, int iParm){ } case TK_INTERSECT: { int tab1, tab2; - Select *pPrior; int iCont, iBreak; tab1 = pParse->nTab++; diff --git a/src/vdbe.c b/src/vdbe.c index 6a9c1c7da7..83118cec8b 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -41,7 +41,7 @@ ** But other routines are also provided to help in building up ** a program instruction by instruction. ** -** $Id: vdbe.c,v 1.23 2000/06/06 21:56:08 drh Exp $ +** $Id: vdbe.c,v 1.24 2000/06/06 22:13:55 drh Exp $ */ #include "sqliteInt.h" #include @@ -1966,8 +1966,14 @@ int sqliteVdbeExec( if( NeedStack(p, p->tos) ) goto no_mem; if( i>=0 && inTable && (pTab = p->aTab[i].pTable)!=0 ){ char *z = sqliteDbbeReadKey(pTab, 0); - memcpy(&p->aStack[tos].i, z, sizeof(int)); - p->aStack[tos].flags = STK_Int; + if( p->aTab[i].keyAsData ){ + p->zStack[tos] = z; + p->aStack[tos].flags = STK_Str; + p->aStack[tos].n = sqliteDbbeKeyLength(pTab); + }else{ + memcpy(&p->aStack[tos].i, z, sizeof(int)); + p->aStack[tos].flags = STK_Int; + } } break; }