mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-08 14:02:16 +03:00
Improved VDBE comments on the ANALYZE code generator. This change
also fixes a harmless use of an uninitialized integer variable as an input to the %d format on a VDBE comment. FossilOrigin-Name: 1cb248a3fc4c35c5bc3993b554edcccaa5c5e91570af67ebb99643a15221ae33
This commit is contained in:
14
manifest
14
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Enhancements\sto\sthe\sincremental\sbuild\ssupport\sfor\sMSVC.
|
C Improved\sVDBE\scomments\son\sthe\sANALYZE\scode\sgenerator.\s\sThis\schange\nalso\sfixes\sa\sharmless\suse\sof\san\suninitialized\sinteger\svariable\sas\san\sinput\nto\sthe\s%d\sformat\son\sa\sVDBE\scomment.
|
||||||
D 2020-05-29T21:06:52.599
|
D 2020-05-30T00:30:08.761
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||||
@@ -468,7 +468,7 @@ F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
|
|||||||
F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
|
F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
|
||||||
F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
|
F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
|
||||||
F src/alter.c 826bc4561456094cf758f095776026f25892a2bb3a7cd86742323267dc9bdb5f
|
F src/alter.c 826bc4561456094cf758f095776026f25892a2bb3a7cd86742323267dc9bdb5f
|
||||||
F src/analyze.c 953a6c43870ccaf080597244e1eeb4dc2ff6cb84f9501b24e46323de36970b61
|
F src/analyze.c 2c77bcbb8651ccced4a8cdaf8d997663813b2967787070fa26d0360de2ee4367
|
||||||
F src/attach.c ff2daea0fe62080192e3f262670e4f61f5a86c1e7bea9cec34e960fe79852aa1
|
F src/attach.c ff2daea0fe62080192e3f262670e4f61f5a86c1e7bea9cec34e960fe79852aa1
|
||||||
F src/auth.c a3d5bfdba83d25abed1013a8c7a5f204e2e29b0c25242a56bc02bb0c07bf1e06
|
F src/auth.c a3d5bfdba83d25abed1013a8c7a5f204e2e29b0c25242a56bc02bb0c07bf1e06
|
||||||
F src/backup.c b1c90cd4110248c8e1273ff4578d3a84c0c34725e1b96dacd4a6294a908702de
|
F src/backup.c b1c90cd4110248c8e1273ff4578d3a84c0c34725e1b96dacd4a6294a908702de
|
||||||
@@ -1866,7 +1866,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P 5865d2f2d0333024366ecf1d919535fd4ec05c637feff16d75028ccdc8db4b50
|
P 2e25d915bcb8d6f1747f9befdef64d2e0e495cc6c5948a8eff5d0097b6613d06
|
||||||
R ea1f39211518f41f5c2b12c4cd8c40f2
|
R 2675b53bd7c59c171705e1753c06ddb1
|
||||||
U mistachkin
|
U drh
|
||||||
Z 0c710e2dd8d54ec195365654b7322b90
|
Z 4e29343ffa9662765735989ac396bab3
|
||||||
|
@@ -1 +1 @@
|
|||||||
2e25d915bcb8d6f1747f9befdef64d2e0e495cc6c5948a8eff5d0097b6613d06
|
1cb248a3fc4c35c5bc3993b554edcccaa5c5e91570af67ebb99643a15221ae33
|
@@ -951,6 +951,30 @@ static void callStatGet(Parse *pParse, int regStat, int iParam, int regOut){
|
|||||||
&statGetFuncdef, 0);
|
&statGetFuncdef, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS
|
||||||
|
/* Add a comment to the most recent VDBE opcode that is the name
|
||||||
|
** of the k-th column of the pIdx index.
|
||||||
|
*/
|
||||||
|
static void analyzeVdbeCommentIndexWithColumnName(
|
||||||
|
Vdbe *v, /* Prepared statement under construction */
|
||||||
|
Index *pIdx, /* Index whose column is being loaded */
|
||||||
|
int k /* Which column index */
|
||||||
|
){
|
||||||
|
int i; /* Index of column in the table */
|
||||||
|
assert( k>=0 && k<pIdx->nColumn );
|
||||||
|
i = pIdx->aiColumn[k];
|
||||||
|
if( NEVER(i==XN_ROWID) ){
|
||||||
|
VdbeComment((v,"%s.rowid",pIdx->zName));
|
||||||
|
}else if( i==XN_EXPR ){
|
||||||
|
VdbeComment((v,"%s.expr(%d)",pIdx->zName, k));
|
||||||
|
}else{
|
||||||
|
VdbeComment((v,"%s.%s", pIdx->zName, pIdx->pTable->aCol[i].zName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
# define analyzeVdbeCommentIndexWithColumnName(a,b,c)
|
||||||
|
#endif /* SQLITE_DEBUG */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Generate code to do an analysis of all indices associated with
|
** Generate code to do an analysis of all indices associated with
|
||||||
** a single table.
|
** a single table.
|
||||||
@@ -1167,7 +1191,7 @@ static void analyzeOneTable(
|
|||||||
char *pColl = (char*)sqlite3LocateCollSeq(pParse, pIdx->azColl[i]);
|
char *pColl = (char*)sqlite3LocateCollSeq(pParse, pIdx->azColl[i]);
|
||||||
sqlite3VdbeAddOp2(v, OP_Integer, i, regChng);
|
sqlite3VdbeAddOp2(v, OP_Integer, i, regChng);
|
||||||
sqlite3VdbeAddOp3(v, OP_Column, iIdxCur, i, regTemp);
|
sqlite3VdbeAddOp3(v, OP_Column, iIdxCur, i, regTemp);
|
||||||
VdbeComment((v, "%s.column(%d)", pIdx->zName, i));
|
analyzeVdbeCommentIndexWithColumnName(v,pIdx,i);
|
||||||
aGotoChng[i] =
|
aGotoChng[i] =
|
||||||
sqlite3VdbeAddOp4(v, OP_Ne, regTemp, 0, regPrev+i, pColl, P4_COLLSEQ);
|
sqlite3VdbeAddOp4(v, OP_Ne, regTemp, 0, regPrev+i, pColl, P4_COLLSEQ);
|
||||||
sqlite3VdbeChangeP5(v, SQLITE_NULLEQ);
|
sqlite3VdbeChangeP5(v, SQLITE_NULLEQ);
|
||||||
@@ -1188,7 +1212,7 @@ static void analyzeOneTable(
|
|||||||
for(i=0; i<nColTest; i++){
|
for(i=0; i<nColTest; i++){
|
||||||
sqlite3VdbeJumpHere(v, aGotoChng[i]);
|
sqlite3VdbeJumpHere(v, aGotoChng[i]);
|
||||||
sqlite3VdbeAddOp3(v, OP_Column, iIdxCur, i, regPrev+i);
|
sqlite3VdbeAddOp3(v, OP_Column, iIdxCur, i, regPrev+i);
|
||||||
VdbeComment((v, "%s.column(%d)", pIdx->zName, i));
|
analyzeVdbeCommentIndexWithColumnName(v,pIdx,i);
|
||||||
}
|
}
|
||||||
sqlite3VdbeResolveLabel(v, endDistinctTest);
|
sqlite3VdbeResolveLabel(v, endDistinctTest);
|
||||||
sqlite3DbFree(db, aGotoChng);
|
sqlite3DbFree(db, aGotoChng);
|
||||||
@@ -1214,7 +1238,7 @@ static void analyzeOneTable(
|
|||||||
k = sqlite3TableColumnToIndex(pIdx, pPk->aiColumn[j]);
|
k = sqlite3TableColumnToIndex(pIdx, pPk->aiColumn[j]);
|
||||||
assert( k>=0 && k<pIdx->nColumn );
|
assert( k>=0 && k<pIdx->nColumn );
|
||||||
sqlite3VdbeAddOp3(v, OP_Column, iIdxCur, k, regKey+j);
|
sqlite3VdbeAddOp3(v, OP_Column, iIdxCur, k, regKey+j);
|
||||||
VdbeComment((v, "%s.column(%d)", pIdx->zName, i));
|
analyzeVdbeCommentIndexWithColumnName(v,pIdx,k);
|
||||||
}
|
}
|
||||||
sqlite3VdbeAddOp3(v, OP_MakeRecord, regKey, pPk->nKeyCol, regRowid);
|
sqlite3VdbeAddOp3(v, OP_MakeRecord, regKey, pPk->nKeyCol, regRowid);
|
||||||
sqlite3ReleaseTempRange(pParse, regKey, pPk->nKeyCol);
|
sqlite3ReleaseTempRange(pParse, regKey, pPk->nKeyCol);
|
||||||
|
Reference in New Issue
Block a user