Omit the sqlite3VdbeCode() routine. Use sqlite3NameFromToken() more to
reduce the amount of code. (CVS 1639) FossilOrigin-Name: 99d0436e0ee1c917b2b7bbf005f05288b535648a
This commit is contained in:
@@ -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
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
936e60d7b122079de23db301a55c6e8510c82e18
|
||||
99d0436e0ee1c917b2b7bbf005f05288b535648a
|
||||
+3
-10
@@ -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; i<db->nDb; 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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
+31
-53
@@ -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 <ctype.h>
|
||||
@@ -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; i<p->nCol; 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;
|
||||
}
|
||||
|
||||
|
||||
+5
-21
@@ -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 <ctype.h>
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
+5
-7
@@ -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 <ctype.h>
|
||||
@@ -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;
|
||||
|
||||
+3
-4
@@ -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;
|
||||
}
|
||||
|
||||
+2
-2
@@ -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*);
|
||||
|
||||
+1
-1
@@ -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;
|
||||
}
|
||||
|
||||
+1
-2
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user