From a99db3b6accf3b7c0fb4c0a6a3585e2f69161713 Mon Sep 17 00:00:00 2001 From: drh Date: Sat, 19 Jun 2004 14:49:12 +0000 Subject: [PATCH] Omit the sqlite3VdbeCode() routine. Use sqlite3NameFromToken() more to reduce the amount of code. (CVS 1639) FossilOrigin-Name: 99d0436e0ee1c917b2b7bbf005f05288b535648a --- manifest | 28 ++++++++--------- manifest.uuid | 2 +- src/attach.c | 13 ++------ src/build.c | 84 ++++++++++++++++++------------------------------- src/expr.c | 26 +++------------ src/pragma.c | 12 +++---- src/select.c | 7 ++--- src/sqliteInt.h | 4 +-- src/trigger.c | 2 +- src/vdbe.h | 3 +- src/vdbeaux.c | 20 ------------ 11 files changed, 66 insertions(+), 135 deletions(-) diff --git a/manifest b/manifest index a70df75f7b..08b7dffdb6 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C file\sspaceanal.tcl\swas\sinitially\sadded\son\sbranch\sversion_2.\s(CVS\s1638) -D 2004-06-19T11:57:40 +C Omit\sthe\ssqlite3VdbeCode()\sroutine.\s\sUse\ssqlite3NameFromToken()\smore\sto\nreduce\sthe\samount\sof\scode.\s(CVS\s1639) +D 2004-06-19T14:49:12 F Makefile.in d69d53c543518c1572ee0a8e8723d7e00bdb2266 F Makefile.linux-gcc a9e5a0d309fa7c38e7c14d3ecf7690879d3a5457 F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd @@ -24,15 +24,15 @@ F spec.template a38492f1c1dd349fc24cb0565e08afc53045304b F sqlite.1 83f4a9d37bdf2b7ef079a82d54eaf2e3509ee6ea F sqlite.pc.in 30552343140c53304c2a658c080fbe810cd09ca2 F sqlite3.def c4bc3f10bccded91d06328c4b2b742ace4d3ed9f -F src/attach.c 293da1e8e3ea6e9244bb3d744da930606fbb4ab0 +F src/attach.c 78ca379f2db3701cca20055cdd802c6bd3b49870 F src/auth.c 204e1e9c45e64315589bc8b62cba5d9de29b6a3c F src/btree.c 0cf8a52a57a7eb13d50719114ee1fa353e89d7d3 F src/btree.h 32f96abef464cf8765b23ca669acfe90d191fcc5 -F src/build.c d7827169529c76cb86760bc1bc06a931c4ff6c8c +F src/build.c c843ef3d4440b591e154d0e78c664e213236db68 F src/date.c b3e8b2bef1e3f2ce24e5b057203036defb18c3f1 F src/delete.c a5191011b7429dff939df631b8bdcc1714b8d7aa F src/encode.c a876af473d1d636faa3dca51c7571f2e007eea37 -F src/expr.c 01cdf6a632ff66acfff667932c41bb79d18d5077 +F src/expr.c 9ae0e55a230802da35a55fd6e87533cca0301af9 F src/func.c b7a8b55200d34bf01fe2a52462db27399f291777 F src/hash.c 440c2f8cb373ee1b4e13a0988489c7cd95d55b6f F src/hash.h 762d95f1e567664d1eafc1687de755626be962fb @@ -51,13 +51,13 @@ F src/os_win.h 004eec47b1780fcaf07420ddc2072294b698d48c F src/pager.c d627c5e46084b0c757a16cec2c17adcc8046f8ee F src/pager.h bc58d32a9dee464f7268fb68652c130a4216e438 F src/parse.y 097438674976355a10cf177bd97326c548820b86 -F src/pragma.c 42de2b327d17af5167de66744a731f8dae8bbe96 +F src/pragma.c 424d812d7411a83816f0d7c41170a5d6e13b3824 F src/printf.c 823b6a5cbedb6971a9e62f5d83204fe9b0be7c1b F src/random.c eff68e3f257e05e81eae6c4d50a51eb88beb4ff3 -F src/select.c 91570af7f13d1c5584f3b711676e1226ee12194e +F src/select.c 9aa82bbc63983a304bc51d4a7c259e759f92c8dc F src/shell.c 24b641700c9d90f361fcfa4f432c5b4aff704e6d F src/sqlite.h.in c34414b9f5330f875e26a69fe685e38ca45f11b9 -F src/sqliteInt.h 6c141ab926097c9671e22641fbb70e24c58b883c +F src/sqliteInt.h 6a34196b2fc203b738ed3596c5ffef1d0748cc95 F src/table.c af14284fa36c8d41f6829e3f2819dce07d3e2de2 F src/tclsqlite.c ddef9b18271fb46344d3d35446bd7c001465a69a F src/test1.c ee426e026ad9223483e7a84bb68849fc6e9f542e @@ -66,16 +66,16 @@ F src/test3.c 7247090d15a5a43823079b6fd8dad1ed3cccdedf F src/test4.c a921a69821fd30209589228e64f94e9f715b6fe2 F src/test5.c 1b7c275b2929dbd034a567255d2aca339410d1d6 F src/tokenize.c 900374b6b37f04748bcd48c2d29a41c251542935 -F src/trigger.c b05699cf40e99a330649eabfb1cece05ff73e469 +F src/trigger.c fb38c34d933f32dbb6c31b48935f33d868cc7658 F src/update.c f9a03233577e0c3d57234d1957963875fc941da2 F src/utf.c 3a2596013e4b9582d075ca742de7f067ff7dee95 F src/util.c 1b3743413e11cae51a899dc03fa9b829a3a1f160 F src/vacuum.c fcb930215a3f6c50087300782555f61ad11dd80c F src/vdbe.c 324ad6157f9bd0a770be70a4e7dca2cb0d27bd82 -F src/vdbe.h 46f74444a213129bc4b5ce40124dd8ed613b0cde +F src/vdbe.h 9ad64674c4c7acd6744174cab5d34013413ef0d3 F src/vdbeInt.h 54af2e00301cde7573b86ea8a9b29a2152e762f7 F src/vdbeapi.c 1601fb2d015fc88ce3dd6a6a50cf44b6419fdbbf -F src/vdbeaux.c 82074da25adb94aabd80a407b32f91fa9389baca +F src/vdbeaux.c cf9caac1163ea384e49b11cb0d405082eef8741d F src/vdbemem.c 9359c53386e070fea9f5403cab0c6f0cfe36496b F src/where.c 6507074d8ce3f78e7a4cd33f667f11e62020553e F test/all.test 569a92a8ee88f5300c057cc4a8f50fbbc69a3242 @@ -225,7 +225,7 @@ F www/tclsqlite.tcl 19191cf2a1010eaeff74c51d83fd5f5a4d899075 F www/vdbe.tcl 59288db1ac5c0616296b26dce071c36cb611dfe9 F www/version3.tcl af528563442e3039928f9018327a18157e53a44f F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4 -P a5c98a272ec30971a9aa9ba2a6e2dec1a4dd8c18 -R 5f8f7f04d9aeffdc923f82538c2bcc15 +P 936e60d7b122079de23db301a55c6e8510c82e18 +R ed730593128daa92468fa18fd3a57762 U drh -Z 27045e58200021e41670a7eb9cdb0650 +Z f5520e1d232faa01844b8961883e0286 diff --git a/manifest.uuid b/manifest.uuid index 5b2d2c9b02..58055be525 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -936e60d7b122079de23db301a55c6e8510c82e18 \ No newline at end of file +99d0436e0ee1c917b2b7bbf005f05288b535648a \ No newline at end of file diff --git a/src/attach.c b/src/attach.c index 407f0c34e1..509db05a74 100644 --- a/src/attach.c +++ b/src/attach.c @@ -11,7 +11,7 @@ ************************************************************************* ** This file contains code used to implement the ATTACH and DETACH commands. ** -** $Id: attach.c,v 1.15 2004/06/19 09:08:16 danielk1977 Exp $ +** $Id: attach.c,v 1.16 2004/06/19 14:49:12 drh Exp $ */ #include "sqliteInt.h" @@ -47,10 +47,8 @@ void sqlite3Attach(Parse *pParse, Token *pFilename, Token *pDbname, Token *pKey) return; } - zFile = 0; - sqlite3SetNString(&zFile, pFilename->z, pFilename->n, 0); + zFile = sqlite3NameFromToken(pFilename);; if( zFile==0 ) return; - sqlite3Dequote(zFile); #ifndef SQLITE_OMIT_AUTHORIZATION if( sqlite3AuthCheck(pParse, SQLITE_ATTACH, zFile, 0, 0)!=SQLITE_OK ){ sqliteFree(zFile); @@ -58,10 +56,8 @@ void sqlite3Attach(Parse *pParse, Token *pFilename, Token *pDbname, Token *pKey) } #endif /* SQLITE_OMIT_AUTHORIZATION */ - zName = 0; - sqlite3SetNString(&zName, pDbname->z, pDbname->n, 0); + zName = sqlite3NameFromToken(pDbname); if( zName==0 ) return; - sqlite3Dequote(zName); for(i=0; inDb; i++){ if( db->aDb[i].zName && sqlite3StrICmp(db->aDb[i].zName, zName)==0 ){ sqlite3ErrorMsg(pParse, "database %z is already in use", zName); @@ -311,6 +307,3 @@ int sqlite3FixTriggerStep( } return 0; } - - - diff --git a/src/build.c b/src/build.c index 3c082699cd..f24130263a 100644 --- a/src/build.c +++ b/src/build.c @@ -23,7 +23,7 @@ ** ROLLBACK ** PRAGMA ** -** $Id: build.c,v 1.224 2004/06/19 09:35:36 danielk1977 Exp $ +** $Id: build.c,v 1.225 2004/06/19 14:49:12 drh Exp $ */ #include "sqliteInt.h" #include @@ -414,14 +414,23 @@ static void sqliteUnlinkAndDeleteTable(sqlite *db, Table *p){ } /* -** Construct the name of a user table or index from a token. +** Given a token, return a string that consists of the text of that +** token with any quotations removed. Space to hold the returned string +** is obtained from sqliteMalloc() and must be freed by the calling +** function. ** -** Space to hold the name is obtained from sqliteMalloc() and must -** be freed by the calling function. +** Tokens are really just pointers into the original SQL text and so +** are not \000 terminated and are not persistent. The returned string +** is \000 terminated and is persistent. */ -char *sqlite3TableNameFromToken(Token *pName){ - char *zName = sqliteStrNDup(pName->z, pName->n); - sqlite3Dequote(zName); +char *sqlite3NameFromToken(Token *pName){ + char *zName; + if( pName ){ + zName = sqliteStrNDup(pName->z, pName->n); + sqlite3Dequote(zName); + }else{ + zName = 0; + } return zName; } @@ -554,7 +563,7 @@ void sqlite3StartTable( if( isTemp ) iDb = 1; pParse->sNameToken = *pName; - zName = sqlite3TableNameFromToken(pName); + zName = sqlite3NameFromToken(pName); if( zName==0 ) return; if( SQLITE_OK!=sqlite3CheckObjectName(pParse, zName) ){ sqliteFree(zName); @@ -683,12 +692,11 @@ void sqlite3StartTable( void sqlite3AddColumn(Parse *pParse, Token *pName){ Table *p; int i; - char *z = 0; + char *z; Column *pCol; if( (p = pParse->pNewTable)==0 ) return; - sqlite3SetNString(&z, pName->z, pName->n, 0); + z = sqlite3NameFromToken(pName); if( z==0 ) return; - sqlite3Dequote(z); for(i=0; inCol; i++){ if( sqlite3StrICmp(z, p->aCol[i].zName)==0 ){ sqlite3ErrorMsg(pParse, "duplicate column name: %s", z); @@ -1573,7 +1581,7 @@ static void sqliteViewResetAll(sqlite *db, int idx){ Table *sqlite3TableFromToken(Parse *pParse, Token *pTok){ char *zName; Table *pTab; - zName = sqlite3TableNameFromToken(pTok); + zName = sqlite3NameFromToken(pTok); if( zName==0 ) return 0; pTab = sqlite3FindTable(pParse->db, zName, 0); sqliteFree(zName); @@ -1946,7 +1954,7 @@ void sqlite3CreateIndex( ** own name. */ if( pName ){ - zName = sqlite3TableNameFromToken(pName); + zName = sqlite3NameFromToken(pName); if( zName==0 ) goto exit_create_index; if( SQLITE_OK!=sqlite3CheckObjectName(pParse, zName) ){ goto exit_create_index; @@ -2148,10 +2156,8 @@ void sqlite3CreateIndex( sqlite3VdbeOp3(v, OP_CreateIndex, 0, iDb,(char*)&pIndex->tnum,P3_POINTER); pIndex->tnum = 0; if( pTblName ){ - sqlite3VdbeCode(v, - OP_Dup, 0, 0, - OP_Integer, iDb, 0, - 0); + sqlite3VdbeAddOp(v, OP_Dup, 0, 0); + sqlite3VdbeAddOp(v, OP_Integer, iDb, 0); sqlite3VdbeOp3(v, OP_OpenWrite, 1, 0, (char*)&pIndex->keyInfo, P3_KEYINFO); } @@ -2329,16 +2335,7 @@ IdList *sqlite3IdListAppend(IdList *pList, Token *pToken){ pList->a = a; } memset(&pList->a[pList->nId], 0, sizeof(pList->a[0])); - if( pToken ){ - char **pz = &pList->a[pList->nId].zName; - sqlite3SetNString(pz, pToken->z, pToken->n, 0); - if( *pz==0 ){ - sqlite3IdListDelete(pList); - return 0; - }else{ - sqlite3Dequote(*pz); - } - } + pList->a[pList->nId].zName = sqlite3NameFromToken(pToken); pList->nId++; return pList; } @@ -2369,6 +2366,7 @@ IdList *sqlite3IdListAppend(IdList *pList, Token *pToken){ ** Then C is the table name and B is the database name. */ SrcList *sqlite3SrcListAppend(SrcList *pList, Token *pTable, Token *pDatabase){ + struct SrcList_item *pItem; if( pList==0 ){ pList = sqliteMalloc( sizeof(SrcList) ); if( pList==0 ) return 0; @@ -2385,7 +2383,8 @@ SrcList *sqlite3SrcListAppend(SrcList *pList, Token *pTable, Token *pDatabase){ } pList = pNew; } - memset(&pList->a[pList->nSrc], 0, sizeof(pList->a[0])); + pItem = &pList->a[pList->nSrc]; + memset(pItem, 0, sizeof(pList->a[0])); if( pDatabase && pDatabase->z==0 ){ pDatabase = 0; } @@ -2394,27 +2393,9 @@ SrcList *sqlite3SrcListAppend(SrcList *pList, Token *pTable, Token *pDatabase){ pDatabase = pTable; pTable = pTemp; } - if( pTable ){ - char **pz = &pList->a[pList->nSrc].zName; - sqlite3SetNString(pz, pTable->z, pTable->n, 0); - if( *pz==0 ){ - sqlite3SrcListDelete(pList); - return 0; - }else{ - sqlite3Dequote(*pz); - } - } - if( pDatabase ){ - char **pz = &pList->a[pList->nSrc].zDatabase; - sqlite3SetNString(pz, pDatabase->z, pDatabase->n, 0); - if( *pz==0 ){ - sqlite3SrcListDelete(pList); - return 0; - }else{ - sqlite3Dequote(*pz); - } - } - pList->a[pList->nSrc].iCursor = -1; + pItem->zName = sqlite3NameFromToken(pTable); + pItem->zDatabase = sqlite3NameFromToken(pDatabase); + pItem->iCursor = -1; pList->nSrc++; return pList; } @@ -2436,9 +2417,7 @@ void sqlite3SrcListAssignCursors(Parse *pParse, SrcList *pList){ */ void sqlite3SrcListAddAlias(SrcList *pList, Token *pToken){ if( pList && pList->nSrc>0 ){ - int i = pList->nSrc - 1; - sqlite3SetNString(&pList->a[i].zAlias, pToken->z, pToken->n, 0); - sqlite3Dequote(pList->a[i].zAlias); + pList->a[pList->nSrc-1].zAlias = sqlite3NameFromToken(pToken); } } @@ -2633,4 +2612,3 @@ sqlite3_value *sqlite3GetTransientValue(sqlite *db){ } return db->pValue; } - diff --git a/src/expr.c b/src/expr.c index 39978d068e..471b7745c9 100644 --- a/src/expr.c +++ b/src/expr.c @@ -12,7 +12,7 @@ ** This file contains routines used for analyzing expressions and ** for generating VDBE code that evaluates expressions in SQLite. ** -** $Id: expr.c,v 1.144 2004/06/17 07:53:03 danielk1977 Exp $ +** $Id: expr.c,v 1.145 2004/06/19 14:49:12 drh Exp $ */ #include "sqliteInt.h" #include @@ -421,10 +421,7 @@ ExprList *sqlite3ExprListAppend(ExprList *pList, Expr *pExpr, Token *pName){ struct ExprList_item *pItem = &pList->a[pList->nExpr++]; memset(pItem, 0, sizeof(*pItem)); pItem->pExpr = pExpr; - if( pName ){ - sqlite3SetNString(&pItem->zName, pName->z, pName->n, 0); - sqlite3Dequote(pItem->zName); - } + pItem->zName = sqlite3NameFromToken(pName); } return pList; } @@ -575,21 +572,9 @@ static int lookupName( sqlite *db = pParse->db; /* The database */ assert( pColumnToken && pColumnToken->z ); /* The Z in X.Y.Z cannot be NULL */ - if( pDbToken && pDbToken->z ){ - zDb = sqliteStrNDup(pDbToken->z, pDbToken->n); - sqlite3Dequote(zDb); - }else{ - zDb = 0; - } - if( pTableToken && pTableToken->z ){ - zTab = sqliteStrNDup(pTableToken->z, pTableToken->n); - sqlite3Dequote(zTab); - }else{ - assert( zDb==0 ); - zTab = 0; - } - zCol = sqliteStrNDup(pColumnToken->z, pColumnToken->n); - sqlite3Dequote(zCol); + zDb = sqlite3NameFromToken(pDbToken); + zTab = sqlite3NameFromToken(pTableToken); + zCol = sqlite3NameFromToken(pColumnToken); if( sqlite3_malloc_failed ){ return 1; /* Leak memory (zDb and zTab) if malloc fails */ } @@ -1856,4 +1841,3 @@ FuncDef *sqlite3FindFunction( } return 0; } - diff --git a/src/pragma.c b/src/pragma.c index 4b5be3edcb..78fafbf12e 100644 --- a/src/pragma.c +++ b/src/pragma.c @@ -11,7 +11,7 @@ ************************************************************************* ** This file contains code used to implement the PRAGMA command. ** -** $Id: pragma.c,v 1.48 2004/06/18 23:21:47 dougcurrie Exp $ +** $Id: pragma.c,v 1.49 2004/06/19 14:49:12 drh Exp $ */ #include "sqliteInt.h" #include @@ -139,8 +139,8 @@ static int flagPragma(Parse *pParse, const char *zLeft, const char *zRight){ if( strcmp(zLeft,zRight)==0 && (v = sqlite3GetVdbe(pParse))!=0 ){ sqlite3VdbeSetNumCols(v, 1); sqlite3VdbeSetColName(v, 0, aPragma[i].zName, P3_STATIC); - sqlite3VdbeCode(v, OP_Integer, (db->flags & aPragma[i].mask)!=0, 0, - OP_Callback, 1, 0, 0); + sqlite3VdbeAddOp(v, OP_Integer, (db->flags & aPragma[i].mask)!=0, 0); + sqlite3VdbeAddOp(v, OP_Callback, 1, 0); }else if( getBoolean(zRight) ){ db->flags |= aPragma[i].mask; }else{ @@ -170,14 +170,12 @@ void sqlite3Pragma(Parse *pParse, Token *pLeft, Token *pRight, int minusFlag){ Vdbe *v = sqlite3GetVdbe(pParse); if( v==0 ) return; - zLeft = sqliteStrNDup(pLeft->z, pLeft->n); - sqlite3Dequote(zLeft); + zLeft = sqlite3NameFromToken(pLeft); if( minusFlag ){ zRight = 0; sqlite3SetNString(&zRight, "-", 1, pRight->z, pRight->n, 0); }else{ - zRight = sqliteStrNDup(pRight->z, pRight->n); - sqlite3Dequote(zRight); + zRight = sqlite3NameFromToken(pRight); } if( sqlite3AuthCheck(pParse, SQLITE_PRAGMA, zLeft, zRight, 0) ){ goto pragma_out; diff --git a/src/select.c b/src/select.c index 27e7f11934..dcfe096eb4 100644 --- a/src/select.c +++ b/src/select.c @@ -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.192 2004/06/17 07:53:03 danielk1977 Exp $ +** $Id: select.c,v 1.193 2004/06/19 14:49:12 drh Exp $ */ #include "sqliteInt.h" @@ -1125,9 +1125,8 @@ static int matchOrderbyToColumn( if( pEList->a[j].zName && (pE->op==TK_ID || pE->op==TK_STRING) ){ char *zName, *zLabel; zName = pEList->a[j].zName; - assert( pE->token.z ); - zLabel = sqliteStrNDup(pE->token.z, pE->token.n); - sqlite3Dequote(zLabel); + zLabel = sqlite3NameFromToken(&pE->token); + assert( zLabel!=0 ); if( sqlite3StrICmp(zName, zLabel)==0 ){ iCol = j; } diff --git a/src/sqliteInt.h b/src/sqliteInt.h index bc09a75a2e..18d91d2dbd 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -11,7 +11,7 @@ ************************************************************************* ** Internal interface definitions for SQLite. ** -** @(#) $Id: sqliteInt.h,v 1.292 2004/06/19 09:35:37 danielk1977 Exp $ +** @(#) $Id: sqliteInt.h,v 1.293 2004/06/19 14:49:12 drh Exp $ */ #include "config.h" #include "sqlite3.h" @@ -1302,7 +1302,7 @@ void sqlite3UnlinkAndDeleteIndex(sqlite*,Index*); void sqlite3Vacuum(Parse*, Token*); int sqlite3RunVacuum(char**, sqlite*); int sqlite3GlobCompare(const unsigned char*,const unsigned char*); -char *sqlite3TableNameFromToken(Token*); +char *sqlite3NameFromToken(Token*); int sqlite3ExprCheck(Parse*, Expr*, int, int*); int sqlite3ExprType(Expr*); int sqlite3ExprCompare(Expr*, Expr*); diff --git a/src/trigger.c b/src/trigger.c index ddb7b97f5c..23c43b764d 100644 --- a/src/trigger.c +++ b/src/trigger.c @@ -100,7 +100,7 @@ void sqlite3BeginTrigger( /* Check that the trigger name is not reserved and that no trigger of the ** specified name exists */ - zName = sqlite3TableNameFromToken(pName); + zName = sqlite3NameFromToken(pName); if( !zName || SQLITE_OK!=sqlite3CheckObjectName(pParse, zName) ){ goto trigger_cleanup; } diff --git a/src/vdbe.h b/src/vdbe.h index 1f5f8108d8..6abe89a6e2 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.85 2004/06/05 10:22:18 danielk1977 Exp $ +** $Id: vdbe.h,v 1.86 2004/06/19 14:49:12 drh Exp $ */ #ifndef _SQLITE_VDBE_H_ #define _SQLITE_VDBE_H_ @@ -104,7 +104,6 @@ Vdbe *sqlite3VdbeCreate(sqlite*); void sqlite3VdbeCreateCallback(Vdbe*, int*); int sqlite3VdbeAddOp(Vdbe*,int,int,int); int sqlite3VdbeOp3(Vdbe*,int,int,int,const char *zP3,int); -int sqlite3VdbeCode(Vdbe*,...); int sqlite3VdbeAddOpList(Vdbe*, int nOp, VdbeOpList const *aOp); void sqlite3VdbeChangeP1(Vdbe*, int addr, int P1); void sqlite3VdbeChangeP2(Vdbe*, int addr, int P2); diff --git a/src/vdbeaux.c b/src/vdbeaux.c index dfdbfde46f..a4df0af080 100644 --- a/src/vdbeaux.c +++ b/src/vdbeaux.c @@ -115,26 +115,6 @@ int sqlite3VdbeOp3(Vdbe *p, int op, int p1, int p2, const char *zP3,int p3type){ return addr; } -/* -** Add multiple opcodes. The list is terminated by an opcode of 0. -*/ -int sqlite3VdbeCode(Vdbe *p, ...){ - int addr; - va_list ap; - int opcode, p1, p2; - va_start(ap, p); - addr = p->nOp; - while( (opcode = va_arg(ap,int))!=0 ){ - p1 = va_arg(ap,int); - p2 = va_arg(ap,int); - sqlite3VdbeAddOp(p, opcode, p1, p2); - } - va_end(ap); - return addr; -} - - - /* ** Create a new symbolic label for an instruction that has yet to be ** coded. The symbolic label is really just a negative number. The