1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-07 02:42:48 +03:00

Fix the P4_TRANSIENT constant so that it works correct - so that it really

makes a copy of the string for the P4 argument.  Use P4_TRANSIENT wherever
appropriate.  Change P4_STATICs of schema names to P4_TRANSIENT.

FossilOrigin-Name: bf664b206bf6f5c1941da1986dfe2c0d1831d5e4
This commit is contained in:
drh
2011-04-05 12:25:19 +00:00
parent 0bfc2d1cc8
commit 8d129422ed
9 changed files with 24 additions and 24 deletions

View File

@@ -1,5 +1,5 @@
C Improved\scomment\son\sthe\ssqlite3SrcListLookup\sfunction. C Fix\sthe\sP4_TRANSIENT\sconstant\sso\sthat\sit\sworks\scorrect\s-\sso\sthat\sit\sreally\nmakes\sa\scopy\sof\sthe\sstring\sfor\sthe\sP4\sargument.\s\sUse\sP4_TRANSIENT\swherever\nappropriate.\s\sChange\sP4_STATICs\sof\sschema\snames\sto\sP4_TRANSIENT.
D 2011-04-05T11:26:54.833 D 2011-04-05T12:25:19.250
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 7a4d9524721d40ef9ee26f93f9bd6a51dba106f2 F Makefile.in 7a4d9524721d40ef9ee26f93f9bd6a51dba106f2
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -129,16 +129,16 @@ F src/callback.c 5069f224882cbdccd559f591271d28d7f37745bc
F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac
F src/ctime.c 52ff72f966cee3087e0138a3ec69371c22be3c01 F src/ctime.c 52ff72f966cee3087e0138a3ec69371c22be3c01
F src/date.c 1548fdac51377e4e7833251de878b4058c148e1b F src/date.c 1548fdac51377e4e7833251de878b4058c148e1b
F src/delete.c 860c82c7db9b9d358bae607776bd7178b411fecc F src/delete.c 7a24fcc9a31664d145acb97ce56b6d9f249a25e4
F src/expr.c 00817c672af554321fd67c44325afd7cef0e4648 F src/expr.c e3cf0957c6b8faaaf7386a3bc69e53c0dc9705be
F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
F src/fkey.c 418b840007c873975fd0d071746d952f8bca20ce F src/fkey.c 8ab7ace42f9be515e97202fc942e87c35309c05e
F src/func.c 3a8cb2fb2de3e3aed7f39106daf4878d9d17fcce F src/func.c 3a8cb2fb2de3e3aed7f39106daf4878d9d17fcce
F src/global.c 02335177cf6946fe5525c6f0755cf181140debf3 F src/global.c 02335177cf6946fe5525c6f0755cf181140debf3
F src/hash.c 458488dcc159c301b8e7686280ab209f1fb915af F src/hash.c 458488dcc159c301b8e7686280ab209f1fb915af
F src/hash.h 2894c932d84d9f892d4b4023a75e501f83050970 F src/hash.h 2894c932d84d9f892d4b4023a75e501f83050970
F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08 F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08
F src/insert.c 8ffb544ff516669aa84a6f13d05dbf5c93bdb1ea F src/insert.c 4083e8af5c7ca6faa32a56f8f2f80bac346b13a4
F src/journal.c 552839e54d1bf76fb8f7abe51868b66acacf6a0e F src/journal.c 552839e54d1bf76fb8f7abe51868b66acacf6a0e
F src/legacy.c a199d7683d60cef73089e892409113e69c23a99f F src/legacy.c a199d7683d60cef73089e892409113e69c23a99f
F src/lempar.c 7f026423f4d71d989e719a743f98a1cbd4e6d99e F src/lempar.c 7f026423f4d71d989e719a743f98a1cbd4e6d99e
@@ -170,7 +170,7 @@ F src/parse.y 12b7ebd61ea54f0e1b1083ff69cc2c8ce9353d58
F src/pcache.c 09d38c44ab275db581f7a2f6ff8b9bc7f8c0faaa F src/pcache.c 09d38c44ab275db581f7a2f6ff8b9bc7f8c0faaa
F src/pcache.h c683390d50f856d4cd8e24342ae62027d1bb6050 F src/pcache.h c683390d50f856d4cd8e24342ae62027d1bb6050
F src/pcache1.c d548e31beafa792d1994b663a29a5303569efc4e F src/pcache1.c d548e31beafa792d1994b663a29a5303569efc4e
F src/pragma.c 4221eb822d7cdb1fb69be555b189e15e5a24b6b5 F src/pragma.c 65698dc369567de328cac4aaf020e417e5b8745d
F src/prepare.c eb4944d9f7bfa13eb42a7416ed9aaed4de4d0bf3 F src/prepare.c eb4944d9f7bfa13eb42a7416ed9aaed4de4d0bf3
F src/printf.c 585a36b6a963df832cfb69505afa3a34ed5ef8a1 F src/printf.c 585a36b6a963df832cfb69505afa3a34ed5ef8a1
F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50 F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
@@ -230,13 +230,13 @@ F src/test_vfstrace.c 2265c9895f350c8d3c39b079998fbe7481505cc1
F src/test_wholenumber.c 6129adfbe7c7444f2e60cc785927f3aa74e12290 F src/test_wholenumber.c 6129adfbe7c7444f2e60cc785927f3aa74e12290
F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9 F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
F src/tokenize.c 604607d6813e9551cf5189d899e0a25c12681080 F src/tokenize.c 604607d6813e9551cf5189d899e0a25c12681080
F src/trigger.c ec4813709e990a169b6923293e839fa5dfd64282 F src/trigger.c 4c1ed08b8dca272e16112c837c64848c56b323e6
F src/update.c 81911be16ece3c3e7716aa18565b4814ec41f8b9 F src/update.c 81911be16ece3c3e7716aa18565b4814ec41f8b9
F src/utf.c d83650c3ea08f7407bd9d0839d9885241c209c60 F src/utf.c d83650c3ea08f7407bd9d0839d9885241c209c60
F src/util.c cd997077bad039efc0597eb027c929658f93c018 F src/util.c cd997077bad039efc0597eb027c929658f93c018
F src/vacuum.c 924bd1bcee2dfb05376f79845bd3b4cec7b54b2f F src/vacuum.c 924bd1bcee2dfb05376f79845bd3b4cec7b54b2f
F src/vdbe.c 6488f759929602cbc3acea5e9c7c10e2d2cd00ed F src/vdbe.c 6488f759929602cbc3acea5e9c7c10e2d2cd00ed
F src/vdbe.h 4de0efb4b0fdaaa900cf419b35c458933ef1c6d2 F src/vdbe.h 8a675fefdf7119441fe817c800a9a52440c2e797
F src/vdbeInt.h 7e2f028ecc1a9faa6f253e7aa8d89cae03662bae F src/vdbeInt.h 7e2f028ecc1a9faa6f253e7aa8d89cae03662bae
F src/vdbeapi.c a09ad9164cafc505250d5dd6b69660c960f1308c F src/vdbeapi.c a09ad9164cafc505250d5dd6b69660c960f1308c
F src/vdbeaux.c 010e4e67a5a577451b0220ea8903c9e279a43248 F src/vdbeaux.c 010e4e67a5a577451b0220ea8903c9e279a43248
@@ -926,7 +926,7 @@ F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
F tool/split-sqlite3c.tcl d9be87f1c340285a3e081eb19b4a247981ed290c F tool/split-sqlite3c.tcl d9be87f1c340285a3e081eb19b4a247981ed290c
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
P 6b270381daad5d1a9ca5746cf439c90f9c735a1b P bcbc9ff568d1eb9f925574ebd22e5fdfa06daf6e
R 2ab6636865bc4ea8875ff28b858a8e0a R 7427b4db22639678e80e85b7a7894dba
U drh U drh
Z eac0ee404fcc8c2a7c0088a90c957b5e Z 8ac4b3854411b1d7191f15313f585b57

View File

@@ -1 +1 @@
bcbc9ff568d1eb9f925574ebd22e5fdfa06daf6e bf664b206bf6f5c1941da1986dfe2c0d1831d5e4

View File

@@ -545,7 +545,7 @@ void sqlite3GenerateRowDelete(
sqlite3GenerateRowIndexDelete(pParse, pTab, iCur, 0); sqlite3GenerateRowIndexDelete(pParse, pTab, iCur, 0);
sqlite3VdbeAddOp2(v, OP_Delete, iCur, (count?OPFLAG_NCHANGE:0)); sqlite3VdbeAddOp2(v, OP_Delete, iCur, (count?OPFLAG_NCHANGE:0));
if( count ){ if( count ){
sqlite3VdbeChangeP4(v, -1, pTab->zName, P4_STATIC); sqlite3VdbeChangeP4(v, -1, pTab->zName, P4_TRANSIENT);
} }
} }
@@ -636,7 +636,7 @@ int sqlite3GenerateIndexKey(
} }
if( doMakeRec ){ if( doMakeRec ){
sqlite3VdbeAddOp3(v, OP_MakeRecord, regBase, nCol+1, regOut); sqlite3VdbeAddOp3(v, OP_MakeRecord, regBase, nCol+1, regOut);
sqlite3VdbeChangeP4(v, -1, sqlite3IndexAffinityStr(v, pIdx), 0); sqlite3VdbeChangeP4(v, -1, sqlite3IndexAffinityStr(v, pIdx), P4_TRANSIENT);
} }
sqlite3ReleaseTempRange(pParse, regBase, nCol+1); sqlite3ReleaseTempRange(pParse, regBase, nCol+1);
return regBase; return regBase;

View File

@@ -2345,7 +2345,7 @@ int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target){
assert( pExpr->u.zToken[0]!=0 ); assert( pExpr->u.zToken[0]!=0 );
sqlite3VdbeAddOp2(v, OP_Variable, pExpr->iColumn, target); sqlite3VdbeAddOp2(v, OP_Variable, pExpr->iColumn, target);
if( pExpr->u.zToken[1]!=0 ){ if( pExpr->u.zToken[1]!=0 ){
sqlite3VdbeChangeP4(v, -1, pExpr->u.zToken, 0); sqlite3VdbeChangeP4(v, -1, pExpr->u.zToken, P4_TRANSIENT);
} }
break; break;
} }

View File

@@ -398,7 +398,7 @@ static void fkLookupParent(
} }
sqlite3VdbeAddOp3(v, OP_MakeRecord, regTemp, nCol, regRec); sqlite3VdbeAddOp3(v, OP_MakeRecord, regTemp, nCol, regRec);
sqlite3VdbeChangeP4(v, -1, sqlite3IndexAffinityStr(v, pIdx), 0); sqlite3VdbeChangeP4(v, -1, sqlite3IndexAffinityStr(v,pIdx), P4_TRANSIENT);
sqlite3VdbeAddOp4Int(v, OP_Found, iCur, iOk, regRec, 0); sqlite3VdbeAddOp4Int(v, OP_Found, iCur, iOk, regRec, 0);
sqlite3ReleaseTempReg(pParse, regRec); sqlite3ReleaseTempReg(pParse, regRec);

View File

@@ -123,7 +123,7 @@ void sqlite3TableAffinityStr(Vdbe *v, Table *pTab){
pTab->zColAff = zColAff; pTab->zColAff = zColAff;
} }
sqlite3VdbeChangeP4(v, -1, pTab->zColAff, 0); sqlite3VdbeChangeP4(v, -1, pTab->zColAff, P4_TRANSIENT);
} }
/* /*
@@ -1327,7 +1327,7 @@ void sqlite3GenerateConstraintChecks(
} }
sqlite3VdbeAddOp2(v, OP_SCopy, regRowid, regIdx+i); sqlite3VdbeAddOp2(v, OP_SCopy, regRowid, regIdx+i);
sqlite3VdbeAddOp3(v, OP_MakeRecord, regIdx, pIdx->nColumn+1, aRegIdx[iCur]); sqlite3VdbeAddOp3(v, OP_MakeRecord, regIdx, pIdx->nColumn+1, aRegIdx[iCur]);
sqlite3VdbeChangeP4(v, -1, sqlite3IndexAffinityStr(v, pIdx), 0); sqlite3VdbeChangeP4(v, -1, sqlite3IndexAffinityStr(v, pIdx), P4_TRANSIENT);
sqlite3ExprCacheAffinityChange(pParse, regIdx, pIdx->nColumn+1); sqlite3ExprCacheAffinityChange(pParse, regIdx, pIdx->nColumn+1);
#ifdef SQLITE_OMIT_UNIQUE_ENFORCEMENT #ifdef SQLITE_OMIT_UNIQUE_ENFORCEMENT
@@ -1473,7 +1473,7 @@ void sqlite3CompleteInsertion(
} }
sqlite3VdbeAddOp3(v, OP_Insert, baseCur, regRec, regRowid); sqlite3VdbeAddOp3(v, OP_Insert, baseCur, regRec, regRowid);
if( !pParse->nested ){ if( !pParse->nested ){
sqlite3VdbeChangeP4(v, -1, pTab->zName, P4_STATIC); sqlite3VdbeChangeP4(v, -1, pTab->zName, P4_TRANSIENT);
} }
sqlite3VdbeChangeP5(v, pik_flags); sqlite3VdbeChangeP5(v, pik_flags);
} }

View File

@@ -1175,7 +1175,7 @@ void sqlite3Pragma(
addr = sqlite3VdbeAddOpList(v, ArraySize(idxErr), idxErr); addr = sqlite3VdbeAddOpList(v, ArraySize(idxErr), idxErr);
sqlite3VdbeChangeP4(v, addr+1, "rowid ", P4_STATIC); sqlite3VdbeChangeP4(v, addr+1, "rowid ", P4_STATIC);
sqlite3VdbeChangeP4(v, addr+3, " missing from index ", P4_STATIC); sqlite3VdbeChangeP4(v, addr+3, " missing from index ", P4_STATIC);
sqlite3VdbeChangeP4(v, addr+4, pIdx->zName, P4_STATIC); sqlite3VdbeChangeP4(v, addr+4, pIdx->zName, P4_TRANSIENT);
sqlite3VdbeJumpHere(v, addr+9); sqlite3VdbeJumpHere(v, addr+9);
sqlite3VdbeJumpHere(v, jmp2); sqlite3VdbeJumpHere(v, jmp2);
} }
@@ -1205,7 +1205,7 @@ void sqlite3Pragma(
sqlite3VdbeJumpHere(v, addr+4); sqlite3VdbeJumpHere(v, addr+4);
sqlite3VdbeChangeP4(v, addr+6, sqlite3VdbeChangeP4(v, addr+6,
"wrong # of entries in index ", P4_STATIC); "wrong # of entries in index ", P4_STATIC);
sqlite3VdbeChangeP4(v, addr+7, pIdx->zName, P4_STATIC); sqlite3VdbeChangeP4(v, addr+7, pIdx->zName, P4_TRANSIENT);
} }
} }
} }

View File

@@ -561,7 +561,7 @@ void sqlite3DropTriggerPtr(Parse *pParse, Trigger *pTrigger){
sqlite3BeginWriteOperation(pParse, 0, iDb); sqlite3BeginWriteOperation(pParse, 0, iDb);
sqlite3OpenMasterTable(pParse, iDb); sqlite3OpenMasterTable(pParse, iDb);
base = sqlite3VdbeAddOpList(v, ArraySize(dropTrigger), dropTrigger); base = sqlite3VdbeAddOpList(v, ArraySize(dropTrigger), dropTrigger);
sqlite3VdbeChangeP4(v, base+1, pTrigger->zName, 0); sqlite3VdbeChangeP4(v, base+1, pTrigger->zName, P4_TRANSIENT);
sqlite3VdbeChangeP4(v, base+4, "trigger", P4_STATIC); sqlite3VdbeChangeP4(v, base+4, "trigger", P4_STATIC);
sqlite3ChangeCookie(pParse, iDb); sqlite3ChangeCookie(pParse, iDb);
sqlite3VdbeAddOp2(v, OP_Close, 0, 0); sqlite3VdbeAddOp2(v, OP_Close, 0, 0);

View File

@@ -108,7 +108,7 @@ typedef struct VdbeOpList VdbeOpList;
#define P4_KEYINFO (-6) /* P4 is a pointer to a KeyInfo structure */ #define P4_KEYINFO (-6) /* P4 is a pointer to a KeyInfo structure */
#define P4_VDBEFUNC (-7) /* P4 is a pointer to a VdbeFunc structure */ #define P4_VDBEFUNC (-7) /* P4 is a pointer to a VdbeFunc structure */
#define P4_MEM (-8) /* P4 is a pointer to a Mem* structure */ #define P4_MEM (-8) /* P4 is a pointer to a Mem* structure */
#define P4_TRANSIENT (-9) /* P4 is a pointer to a transient string */ #define P4_TRANSIENT 0 /* P4 is a pointer to a transient string */
#define P4_VTAB (-10) /* P4 is a pointer to an sqlite3_vtab structure */ #define P4_VTAB (-10) /* P4 is a pointer to an sqlite3_vtab structure */
#define P4_MPRINTF (-11) /* P4 is a string obtained from sqlite3_mprintf() */ #define P4_MPRINTF (-11) /* P4 is a string obtained from sqlite3_mprintf() */
#define P4_REAL (-12) /* P4 is a 64-bit floating point value */ #define P4_REAL (-12) /* P4 is a 64-bit floating point value */