From: drh Date: Thu, 23 May 2002 22:07:02 +0000 (+0000) Subject: Change the names of the PushList and PopList opcodes to ListPush and ListPop X-Git-Tag: version-3.6.10~5492 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bd5a451d5d271712beeabe82ce2c299b2499020f;p=thirdparty%2Fsqlite.git Change the names of the PushList and PopList opcodes to ListPush and ListPop so that they will appear together with the other List opcodes in the documentation. (CVS 583) FossilOrigin-Name: c53b0b9283c5c34def87d58b03fd979d03dc0890 --- diff --git a/manifest b/manifest index 31c51c0543..4e56023c5f 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sfor\sticket\s#50.\s(CVS\s582) -D 2002-05-23T13:15:37 +C Change\sthe\snames\sof\sthe\sPushList\sand\sPopList\sopcodes\sto\sListPush\sand\sListPop\nso\sthat\sthey\swill\sappear\stogether\swith\sthe\sother\sList\sopcodes\sin\sthe\ndocumentation.\s(CVS\s583) +D 2002-05-23T22:07:03 F Makefile.in 6291a33b87d2a395aafd7646ee1ed562c6f2c28c F Makefile.template 4e11752e0b5c7a043ca50af4296ec562857ba495 F README a4c0ba11354ef6ba0776b400d057c59da47a4cc0 @@ -49,11 +49,11 @@ F src/test2.c 669cc22781c6461a273416ec1a7414d25c081730 F src/test3.c 4e52fff8b01f08bd202f7633feda5639b7ba2b5e F src/threadtest.c 81f0598e0f031c1bd506af337fdc1b7e8dff263f F src/tokenize.c 5892a8eb8f0063718f5bec1a1b24f4c6029eba9b -F src/trigger.c a5e6694f2cc6f1b3c10b954b9bc904548f3599fc -F src/update.c 82ada80cdfa489a30e91dba7f29f75a20f61c8a2 +F src/trigger.c a7990d424af58d809501a393f72c12d4b039eb63 +F src/update.c 1f8f7fde797bd607fe0afb4f96a6ad83c9e8ab7b F src/util.c 707c30f8c13cddace7c08556ac450c0b786660b3 -F src/vdbe.c 67fbceb6fa2a0ab020b65c007430272a66771ae1 -F src/vdbe.h 126a651ba26f05de075dcc6da5466244a31af6b8 +F src/vdbe.c 6c2eae8a1d03f41aa51e40772aebf581cf62d5b8 +F src/vdbe.h def669b9f2728589aabcb5db756429db02465c9a F src/where.c 293985b6cf8391c3dcef9efcac4654884370513a F test/all.test e4d3821eeba751829b419cd47814bd20af4286d1 F test/bigrow.test 8ab252dba108f12ad64e337b0f2ff31a807ac578 @@ -134,7 +134,7 @@ F www/speed.tcl da8afcc1d3ccc5696cfb388a68982bc3d9f7f00f F www/sqlite.tcl 8b5884354cb615049aed83039f8dfe1552a44279 F www/tclsqlite.tcl 1db15abeb446aad0caf0b95b8b9579720e4ea331 F www/vdbe.tcl 2013852c27a02a091d39a766bc87cff329f21218 -P 4d27ee411902a197cd72416ca9da9197d3f87f13 -R 42134e515c91a3561726205cb5ceae33 +P 82b74a494ac7c751a13e67dcfa7fffb1b98ec808 +R 3e1a04e4d6e0a4fb68b8a11229bc1cc1 U drh -Z 5548f4db8a2e3ece93a6ef0eb59cb03c +Z 8e8caac647d0d1fcfa3e14c75f0d3c35 diff --git a/manifest.uuid b/manifest.uuid index 72f38d72c6..b1fee1cf7c 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -82b74a494ac7c751a13e67dcfa7fffb1b98ec808 \ No newline at end of file +c53b0b9283c5c34def87d58b03fd979d03dc0890 \ No newline at end of file diff --git a/src/trigger.c b/src/trigger.c index 81a7506869..aedf08873b 100644 --- a/src/trigger.c +++ b/src/trigger.c @@ -479,11 +479,11 @@ static int codeTriggerProgram( break; } case TK_UPDATE: { - sqliteVdbeAddOp(pParse->pVdbe, OP_PushList, 0, 0); + sqliteVdbeAddOp(pParse->pVdbe, OP_ListPush, 0, 0); sqliteUpdate(pParse, &pTriggerStep->target, sqliteExprListDup(pTriggerStep->pExprList), sqliteExprDup(pTriggerStep->pWhere), orconf); - sqliteVdbeAddOp(pParse->pVdbe, OP_PopList, 0, 0); + sqliteVdbeAddOp(pParse->pVdbe, OP_ListPop, 0, 0); break; } case TK_INSERT: { @@ -494,10 +494,10 @@ static int codeTriggerProgram( break; } case TK_DELETE: { - sqliteVdbeAddOp(pParse->pVdbe, OP_PushList, 0, 0); + sqliteVdbeAddOp(pParse->pVdbe, OP_ListPush, 0, 0); sqliteDeleteFrom(pParse, &pTriggerStep->target, sqliteExprDup(pTriggerStep->pWhere)); - sqliteVdbeAddOp(pParse->pVdbe, OP_PopList, 0, 0); + sqliteVdbeAddOp(pParse->pVdbe, OP_ListPop, 0, 0); break; } default: diff --git a/src/update.c b/src/update.c index 89dbd11047..177cdd6f34 100644 --- a/src/update.c +++ b/src/update.c @@ -12,7 +12,7 @@ ** This file contains C code routines that are called by the parser ** to handle UPDATE statements. ** -** $Id: update.c,v 1.41 2002/05/23 12:50:19 drh Exp $ +** $Id: update.c,v 1.42 2002/05/23 22:07:03 drh Exp $ */ #include "sqliteInt.h" @@ -282,7 +282,6 @@ void sqliteUpdate( ** So make the cursor point at the old record. */ if( !row_triggers_exist ){ - int ii; sqliteVdbeAddOp(v, OP_ListRewind, 0, 0); addr = sqliteVdbeAddOp(v, OP_ListRead, 0, 0); sqliteVdbeAddOp(v, OP_Dup, 0, 0); diff --git a/src/vdbe.c b/src/vdbe.c index 399369d994..3fcd443c16 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -30,7 +30,7 @@ ** But other routines are also provided to help in building up ** a program instruction by instruction. ** -** $Id: vdbe.c,v 1.145 2002/05/23 02:09:04 drh Exp $ +** $Id: vdbe.c,v 1.146 2002/05/23 22:07:03 drh Exp $ */ #include "sqliteInt.h" #include @@ -250,7 +250,7 @@ struct Vdbe { int iLimit; /* Limit on the number of callbacks remaining */ int iOffset; /* Offset before beginning to do callbacks */ int keylistStackDepth; /* The size of the "keylist" stack */ - Keylist **keylistStack; /* The stack used by opcodes PushList & PopList */ + Keylist **keylistStack; /* The stack used by opcodes ListPush & ListPop */ }; /* @@ -1060,11 +1060,12 @@ static char *zOpName[] = { 0, "Clear", "CreateIndex", "CreateTable", "IntegrityCk", "IdxPut", "IdxDelete", "IdxRecno", "IdxGT", "IdxGE", "MemLoad", "MemStore", "ListWrite", - "ListRewind", "ListRead", "ListReset", "SortPut", - "SortMakeRec", "SortMakeKey", "Sort", "SortNext", - "SortCallback", "SortReset", "FileOpen", "FileRead", - "FileColumn", "AggReset", "AggFocus", "AggNext", - "AggSet", "AggGet", "AggFunc", "AggInit", + "ListRewind", "ListRead", "ListReset", "ListPush", + "ListPop", "SortPut", "SortMakeRec", "SortMakeKey", + "Sort", "SortNext", "SortCallback", "SortReset", + "FileOpen", "FileRead", "FileColumn", "AggReset", + "AggFocus", "AggNext", "AggSet", "AggGet", + "AggFunc", "AggInit", "AggPush", "AggPop", "SetInsert", "SetFound", "SetNotFound", "MakeRecord", "MakeKey", "MakeIdxKey", "IncrKey", "Goto", "If", "Halt", "ColumnCount", "ColumnName", @@ -1077,7 +1078,7 @@ static char *zOpName[] = { 0, "Le", "Gt", "Ge", "IsNull", "NotNull", "Negative", "And", "Or", "Not", "Concat", "Noop", "Function", - "Limit", "PushList", "PopList", + "Limit", }; /* @@ -3820,6 +3821,39 @@ case OP_ListReset: { break; } +/* Opcode: ListPush * * * +** +** Save the current Vdbe list such that it can be restored by a PopList +** opcode. The list is empty after this is executed. +*/ +case OP_ListPush: { + p->keylistStackDepth++; + assert(p->keylistStackDepth > 0); + p->keylistStack = sqliteRealloc(p->keylistStack, + sizeof(Keylist *) * p->keylistStackDepth); + p->keylistStack[p->keylistStackDepth - 1] = p->pList; + p->pList = 0; + break; +} + +/* Opcode: ListPop * * * +** +** Restore the Vdbe list to the state it was in when PushList was last +** executed. +*/ +case OP_ListPop: { + assert(p->keylistStackDepth > 0); + p->keylistStackDepth--; + KeylistFree(p->pList); + p->pList = p->keylistStack[p->keylistStackDepth]; + p->keylistStack[p->keylistStackDepth] = 0; + if( p->keylistStackDepth == 0 ){ + sqliteFree(p->keylistStack); + p->keylistStack = 0; + } + break; +} + /* Opcode: SortPut * * * ** ** The TOS is the key and the NOS is the data. Pop both from the stack @@ -4554,39 +4588,6 @@ case OP_SetFound: { break; } -/* Opcode: PushList * * * -** -** Save the current Vdbe list such that it can be restored by a PopList -** opcode. The list is empty after this is executed. -*/ -case OP_PushList: { - p->keylistStackDepth++; - assert(p->keylistStackDepth > 0); - p->keylistStack = sqliteRealloc(p->keylistStack, - sizeof(Keylist *) * p->keylistStackDepth); - p->keylistStack[p->keylistStackDepth - 1] = p->pList; - p->pList = 0; - break; -} - -/* Opcode: PopList * * * -** -** Restore the Vdbe list to the state it was in when PushList was last -** executed. -*/ -case OP_PopList: { - assert(p->keylistStackDepth > 0); - p->keylistStackDepth--; - KeylistFree(p->pList); - p->pList = p->keylistStack[p->keylistStackDepth]; - p->keylistStack[p->keylistStackDepth] = 0; - if( p->keylistStackDepth == 0 ){ - sqliteFree(p->keylistStack); - p->keylistStack = 0; - } - break; -} - /* Opcode: SetNotFound P1 P2 * ** ** Pop the stack once and compare the value popped off with the diff --git a/src/vdbe.h b/src/vdbe.h index 1260ce755e..23410437e8 100644 --- a/src/vdbe.h +++ b/src/vdbe.h @@ -15,7 +15,7 @@ ** or VDBE. The VDBE implements an abstract machine that runs a ** simple program to access and modify the underlying database. ** -** $Id: vdbe.h,v 1.51 2002/05/15 08:30:14 danielk1977 Exp $ +** $Id: vdbe.h,v 1.52 2002/05/23 22:07:03 drh Exp $ */ #ifndef _SQLITE_VDBE_H_ #define _SQLITE_VDBE_H_ @@ -121,87 +121,89 @@ typedef struct VdbeOp VdbeOp; #define OP_ListRewind 45 #define OP_ListRead 46 #define OP_ListReset 47 - -#define OP_SortPut 48 -#define OP_SortMakeRec 49 -#define OP_SortMakeKey 50 -#define OP_Sort 51 -#define OP_SortNext 52 -#define OP_SortCallback 53 -#define OP_SortReset 54 - -#define OP_FileOpen 55 -#define OP_FileRead 56 -#define OP_FileColumn 57 - -#define OP_AggReset 58 -#define OP_AggFocus 59 -#define OP_AggNext 60 -#define OP_AggSet 61 -#define OP_AggGet 62 -#define OP_AggFunc 63 -#define OP_AggInit 64 - -#define OP_SetInsert 65 -#define OP_SetFound 66 -#define OP_SetNotFound 67 - -#define OP_MakeRecord 68 -#define OP_MakeKey 69 -#define OP_MakeIdxKey 70 -#define OP_IncrKey 71 - -#define OP_Goto 72 -#define OP_If 73 -#define OP_Halt 74 - -#define OP_ColumnCount 75 -#define OP_ColumnName 76 -#define OP_Callback 77 -#define OP_NullCallback 78 - -#define OP_Integer 79 -#define OP_String 80 -#define OP_Pop 81 -#define OP_Dup 82 -#define OP_Pull 83 -#define OP_Push 84 -#define OP_MustBeInt 85 - -#define OP_Add 86 -#define OP_AddImm 87 -#define OP_Subtract 88 -#define OP_Multiply 89 -#define OP_Divide 90 -#define OP_Remainder 91 -#define OP_BitAnd 92 -#define OP_BitOr 93 -#define OP_BitNot 94 -#define OP_ShiftLeft 95 -#define OP_ShiftRight 96 -#define OP_AbsValue 97 -#define OP_Eq 98 -#define OP_Ne 99 -#define OP_Lt 100 -#define OP_Le 101 -#define OP_Gt 102 -#define OP_Ge 103 -#define OP_IsNull 104 -#define OP_NotNull 105 -#define OP_Negative 106 -#define OP_And 107 -#define OP_Or 108 -#define OP_Not 109 -#define OP_Concat 110 -#define OP_Noop 111 -#define OP_Function 112 - -#define OP_Limit 113 - -#define OP_PushList 114 -#define OP_PopList 115 - -#define OP_MAX 115 +#define OP_ListPush 48 +#define OP_ListPop 49 + +#define OP_SortPut 50 +#define OP_SortMakeRec 51 +#define OP_SortMakeKey 52 +#define OP_Sort 53 +#define OP_SortNext 54 +#define OP_SortCallback 55 +#define OP_SortReset 56 + +#define OP_FileOpen 57 +#define OP_FileRead 58 +#define OP_FileColumn 59 + +#define OP_AggReset 60 +#define OP_AggFocus 61 +#define OP_AggNext 62 +#define OP_AggSet 63 +#define OP_AggGet 64 +#define OP_AggFunc 65 +#define OP_AggInit 66 +#define OP_AggPush 67 +#define OP_AggPop 68 + +#define OP_SetInsert 69 +#define OP_SetFound 70 +#define OP_SetNotFound 71 + +#define OP_MakeRecord 72 +#define OP_MakeKey 73 +#define OP_MakeIdxKey 74 +#define OP_IncrKey 75 + +#define OP_Goto 76 +#define OP_If 77 +#define OP_Halt 78 + +#define OP_ColumnCount 79 +#define OP_ColumnName 80 +#define OP_Callback 81 +#define OP_NullCallback 82 + +#define OP_Integer 83 +#define OP_String 84 +#define OP_Pop 85 +#define OP_Dup 86 +#define OP_Pull 87 +#define OP_Push 88 +#define OP_MustBeInt 89 + +#define OP_Add 90 +#define OP_AddImm 91 +#define OP_Subtract 92 +#define OP_Multiply 93 +#define OP_Divide 94 +#define OP_Remainder 95 +#define OP_BitAnd 96 +#define OP_BitOr 97 +#define OP_BitNot 98 +#define OP_ShiftLeft 99 +#define OP_ShiftRight 100 +#define OP_AbsValue 101 +#define OP_Eq 102 +#define OP_Ne 103 +#define OP_Lt 104 +#define OP_Le 105 +#define OP_Gt 106 +#define OP_Ge 107 +#define OP_IsNull 108 +#define OP_NotNull 109 +#define OP_Negative 110 +#define OP_And 111 +#define OP_Or 112 +#define OP_Not 113 +#define OP_Concat 114 +#define OP_Noop 115 +#define OP_Function 116 + +#define OP_Limit 117 + + +#define OP_MAX 117 /* ** Prototypes for the VDBE interface. See comments on the implementation