-C Fix\stypo\sin\stest8.c.\s(CVS\s3240)
-D 2006-06-14T10:47:04
+C Add\scode\sto\stest8.c\sto\scheck\sthat\sthe\scorrect\sidxNum\svalue\sis\spassed\sto\sthe\sxFilter\smethod.\s(CVS\s3241)
+D 2006-06-14T10:55:53
F Makefile.in 200f6dc376ecfd9b01e5359c4e0c10c02f649b34
F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
F src/test5.c 7162f8526affb771c4ed256826eee7bb9eca265f
F src/test6.c 60a02961ceb7b3edc25f5dc5c1ac2556622a76de
F src/test7.c 03fa8d787f6aebc6d1f72504d52f33013ad2c8e3
-F src/test8.c cbf59c055ee5997e3296cb8b54fd654dffedc5be
+F src/test8.c 4ef86f83e5d119a29deb43602a34260a6c1e45cc
F src/test_async.c e3deaedd4d86a56391b81808fde9e44fbd92f1d3
F src/test_loadext.c 22065d601a18878e5542191001f0eaa5d77c0ed8
F src/test_md5.c 6c42bc0a3c0b54be34623ff77a0eec32b2fa96e3
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
-P 402a77c43d4e4dcd2e1197cfaaa2ed51249a1b8f
-R 85ab82b2cd4cf7efd7ef1f8ff6fc6e7a
+P 75be7d4988a3618ea9e3c1b65d5c05380ec7d25d
+R f2a6628a8f1ede4d65ffbece9678b741
U danielk1977
-Z df06791bd553f74b590c885aa7f9bb9a
+Z 0fc9e6c28ad3363f40d3a481f56028e0
** is not included in the SQLite library. It is used for automated
** testing of the SQLite library.
**
-** $Id: test8.c,v 1.15 2006/06/14 10:47:04 danielk1977 Exp $
+** $Id: test8.c,v 1.16 2006/06/14 10:55:53 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include "tcl.h"
return SQLITE_OK;
}
+/*
+** Compute a simple hash of the null terminated string zString.
+**
+** This module uses only sqlite3_index_info.idxStr, not
+** sqlite3_index_info.idxNum. So to test idxNum, when idxStr is set
+** in echoBestIndex(), idxNum is set to the corresponding hash value.
+** In echoFilter(), code assert()s that the supplied idxNum value is
+** indeed the hash of the supplied idxStr.
+*/
+static int hashString(const char *zString){
+ int val = 0;
+ int ii;
+ for(ii=0; zString[ii]; ii++){
+ val = (val << 3) + (int)zString[ii];
+ }
+ return val;
+}
+
static int echoFilter(
sqlite3_vtab_cursor *pVtabCursor,
echo_vtab *pVtab = (echo_vtab *)pVtabCursor->pVtab;
sqlite3 *db = pVtab->db;
+ assert( idxNum==hashString(idxStr) );
sqlite3_finalize(pCur->pStmt);
pCur->pStmt = 0;
rc = sqlite3_prepare(db, idxStr, -1, &pCur->pStmt, 0);
appendToEchoModule(pVtab->interp, "xBestIndex");;
appendToEchoModule(pVtab->interp, zQuery);
+ pIdxInfo->idxNum = hashString(zQuery);
pIdxInfo->idxStr = zQuery;
pIdxInfo->needToFreeIdxStr = 1;
pIdxInfo->estimatedCost = 1.0;