mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Add --verify to speed-check.sh and add --memdb and --output to speedtest1.c.
Other improvements to speedtest1.c. FossilOrigin-Name: 89a11120ab2ce13f8a539cb05a9d0628a1f83b4790910b2023c21d60aabc43ee
This commit is contained in:
16
manifest
16
manifest
@ -1,6 +1,6 @@
|
|||||||
B 7a876209a678a34c198b54ceef9e3c041f128a14dc73357f6a57cadadaa6cf7b
|
B 7a876209a678a34c198b54ceef9e3c041f128a14dc73357f6a57cadadaa6cf7b
|
||||||
C Enhance\sthe\s--verify\soption\sto\sspeedtest1.c\sso\sthat\sit\scomputes\sand\sdisplays\na\shash\sof\sthe\sresult\sfrom\sall\sSQL\squeries,\sfor\sverification\spurposes.
|
C Add\s--verify\sto\sspeed-check.sh\sand\sadd\s--memdb\sand\s--output\sto\sspeedtest1.c.\nOther\simprovements\sto\sspeedtest1.c.
|
||||||
D 2020-06-25T20:28:13.760
|
D 2020-06-26T14:05:58.668
|
||||||
F Makefile.in 19374a5db06c3199ec1bab71ab74a103d8abf21053c05e9389255dc58083f806
|
F Makefile.in 19374a5db06c3199ec1bab71ab74a103d8abf21053c05e9389255dc58083f806
|
||||||
F Makefile.msc 48f5a3fc32672c09ad73795749f6253e406a31526935fbbffd8f021108d54574
|
F Makefile.msc 48f5a3fc32672c09ad73795749f6253e406a31526935fbbffd8f021108d54574
|
||||||
F autoconf/Makefile.am a8d1d24affe52ebf8d7ddcf91aa973fa0316618ab95bb68c87cabf8faf527dc8
|
F autoconf/Makefile.am a8d1d24affe52ebf8d7ddcf91aa973fa0316618ab95bb68c87cabf8faf527dc8
|
||||||
@ -12,14 +12,12 @@ F src/build.c ba1bbe563a3dc02d5fed20537603181e5289c13ea30ae5e775f552e7557adbfa
|
|||||||
F src/shell.c.in d663152487d4bfddea0f6d21ebc2ed51575d22657a02c6828afd344bbd4651af
|
F src/shell.c.in d663152487d4bfddea0f6d21ebc2ed51575d22657a02c6828afd344bbd4651af
|
||||||
F src/test1.c fe56c4bcaa2685ca9aa25d817a0ee9345e189aff4a5a71a3d8ba946c7776feb8
|
F src/test1.c fe56c4bcaa2685ca9aa25d817a0ee9345e189aff4a5a71a3d8ba946c7776feb8
|
||||||
F test/decimal.test 12739a01bdba4c4d79f95b323e6b67b9fad1ab6ffb56116bd2b9c81a5b19e1d9
|
F test/decimal.test 12739a01bdba4c4d79f95b323e6b67b9fad1ab6ffb56116bd2b9c81a5b19e1d9
|
||||||
F test/speedtest1.c 62a22866f2f1bf3bfd81ded4473314d5508209e7758e122746ace56c138a0f66
|
F test/speedtest1.c 18c3a29fba651788a3dc423277d4aa1245860f03fa115f5cad1bebdfbf92bc02
|
||||||
F tool/mkautoconfamal.sh f62353eb6c06ab264da027fd4507d09914433dbdcab9cb011cdc18016f1ab3b8
|
F tool/mkautoconfamal.sh f62353eb6c06ab264da027fd4507d09914433dbdcab9cb011cdc18016f1ab3b8
|
||||||
F tool/mksqlite3c.tcl f4ef476510eca4124c874a72029f1e01bc54a896b1724e8f9eef0d8bfae0e84c
|
F tool/mksqlite3c.tcl f4ef476510eca4124c874a72029f1e01bc54a896b1724e8f9eef0d8bfae0e84c
|
||||||
F tool/mksqlite3h.tcl 1f5e4a1dbbbc43c83cc6e74fe32c6c620502240b66c7c0f33a51378e78fc4edf
|
F tool/mksqlite3h.tcl 1f5e4a1dbbbc43c83cc6e74fe32c6c620502240b66c7c0f33a51378e78fc4edf
|
||||||
P db2f0836b64cd2e119684f1cf75fa3b19a84ca6aca1a239f7e2b9298016e2c95
|
F tool/speed-check.sh 615cbdf50f1409ef3bbf9f682e396df80f49d97ed93ed3e61c8e91fae6afde58
|
||||||
R 612c27b420c2073a1256c7d89a8eeaa4
|
P 60d1e46c8c8a3c853034fd79f204bcb5d50d1c366eb246849c333a2d0abc2648
|
||||||
T *branch * speedtest-hash
|
R d502ce56ec4f409f68ad0bf60c478eac
|
||||||
T *sym-speedtest-hash *
|
|
||||||
T -sym-trunk *
|
|
||||||
U drh
|
U drh
|
||||||
Z 5bfc672238a7ff5aba5dfa178b2aded4
|
Z 9ade6808e0b03cd3693ddfa12386f5e0
|
||||||
|
@ -1 +1 @@
|
|||||||
60d1e46c8c8a3c853034fd79f204bcb5d50d1c366eb246849c333a2d0abc2648
|
89a11120ab2ce13f8a539cb05a9d0628a1f83b4790910b2023c21d60aabc43ee
|
@ -7,7 +7,7 @@ static const char zHelp[] =
|
|||||||
"Usage: %s [--options] DATABASE\n"
|
"Usage: %s [--options] DATABASE\n"
|
||||||
"Options:\n"
|
"Options:\n"
|
||||||
" --autovacuum Enable AUTOVACUUM mode\n"
|
" --autovacuum Enable AUTOVACUUM mode\n"
|
||||||
" --cachesize N Set the cache size to N\n"
|
" --cachesize N Set the cache size to N\n"
|
||||||
" --exclusive Enable locking_mode=EXCLUSIVE\n"
|
" --exclusive Enable locking_mode=EXCLUSIVE\n"
|
||||||
" --explain Like --sqlonly but with added EXPLAIN keywords\n"
|
" --explain Like --sqlonly but with added EXPLAIN keywords\n"
|
||||||
" --heap SZ MIN Memory allocator uses SZ bytes & min allocation MIN\n"
|
" --heap SZ MIN Memory allocator uses SZ bytes & min allocation MIN\n"
|
||||||
@ -15,11 +15,13 @@ static const char zHelp[] =
|
|||||||
" --journal M Set the journal_mode to M\n"
|
" --journal M Set the journal_mode to M\n"
|
||||||
" --key KEY Set the encryption key to KEY\n"
|
" --key KEY Set the encryption key to KEY\n"
|
||||||
" --lookaside N SZ Configure lookaside for N slots of SZ bytes each\n"
|
" --lookaside N SZ Configure lookaside for N slots of SZ bytes each\n"
|
||||||
|
" --memdb Use an in-memory database\n"
|
||||||
" --mmap SZ MMAP the first SZ bytes of the database file\n"
|
" --mmap SZ MMAP the first SZ bytes of the database file\n"
|
||||||
" --multithread Set multithreaded mode\n"
|
" --multithread Set multithreaded mode\n"
|
||||||
" --nomemstat Disable memory statistics\n"
|
" --nomemstat Disable memory statistics\n"
|
||||||
" --nosync Set PRAGMA synchronous=OFF\n"
|
" --nosync Set PRAGMA synchronous=OFF\n"
|
||||||
" --notnull Add NOT NULL constraints to table columns\n"
|
" --notnull Add NOT NULL constraints to table columns\n"
|
||||||
|
" --output FILE Store SQL output in FILE\n"
|
||||||
" --pagesize N Set the page size to N\n"
|
" --pagesize N Set the page size to N\n"
|
||||||
" --pcache N SZ Configure N pages of pagecache each of size SZ bytes\n"
|
" --pcache N SZ Configure N pages of pagecache each of size SZ bytes\n"
|
||||||
" --primarykey Use PRIMARY KEY instead of UNIQUE where appropriate\n"
|
" --primarykey Use PRIMARY KEY instead of UNIQUE where appropriate\n"
|
||||||
@ -62,11 +64,6 @@ static const char zHelp[] =
|
|||||||
|
|
||||||
typedef sqlite3_uint64 u64;
|
typedef sqlite3_uint64 u64;
|
||||||
|
|
||||||
#ifndef SPEEDTEST_OMIT_HASH
|
|
||||||
/****************************************************************************
|
|
||||||
** Hash algorithm used to verify that compilation is not miscompiled
|
|
||||||
** in such a was as to generate an incorrect result.
|
|
||||||
*/
|
|
||||||
/*
|
/*
|
||||||
** State structure for a Hash hash in progress
|
** State structure for a Hash hash in progress
|
||||||
*/
|
*/
|
||||||
@ -78,68 +75,6 @@ struct HashContext {
|
|||||||
unsigned char r[32]; /* Result */
|
unsigned char r[32]; /* Result */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
** Initialize a new hash. iSize determines the size of the hash
|
|
||||||
** in bits and should be one of 224, 256, 384, or 512. Or iSize
|
|
||||||
** can be zero to use the default hash size of 256 bits.
|
|
||||||
*/
|
|
||||||
static void HashInit(HashContext *p){
|
|
||||||
unsigned int k;
|
|
||||||
p->i = 0;
|
|
||||||
p->j = 0;
|
|
||||||
for(k=0; k<256; k++) p->s[k] = k;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Make consecutive calls to the HashUpdate function to add new content
|
|
||||||
** to the hash
|
|
||||||
*/
|
|
||||||
static void HashUpdate(
|
|
||||||
HashContext *p,
|
|
||||||
const unsigned char *aData,
|
|
||||||
unsigned int nData
|
|
||||||
){
|
|
||||||
unsigned char t;
|
|
||||||
unsigned char i = p->i;
|
|
||||||
unsigned char j = p->j;
|
|
||||||
unsigned int k;
|
|
||||||
for(k=0; k<nData; k++){
|
|
||||||
j += p->s[i] + aData[k];
|
|
||||||
t = p->s[j];
|
|
||||||
p->s[j] = p->s[i];
|
|
||||||
p->s[i] = t;
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
p->i = i;
|
|
||||||
p->j = j;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
** After all content has been added, invoke HashFinal() to compute
|
|
||||||
** the final hash. The function returns a pointer to the binary
|
|
||||||
** hash value.
|
|
||||||
*/
|
|
||||||
static unsigned char *HashFinal(HashContext *p){
|
|
||||||
unsigned int k;
|
|
||||||
unsigned char t, i, j;
|
|
||||||
i = p->i;
|
|
||||||
j = p->j;
|
|
||||||
for(k=0; k<32; k++){
|
|
||||||
i++;
|
|
||||||
t = p->s[i];
|
|
||||||
j += t;
|
|
||||||
p->s[i] = p->s[j];
|
|
||||||
p->s[j] = t;
|
|
||||||
t += p->s[i];
|
|
||||||
p->r[k] = p->s[t];
|
|
||||||
}
|
|
||||||
return p->r;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* End of the Hash hashing logic
|
|
||||||
*****************************************************************************/
|
|
||||||
#endif /* SPEEDTEST_OMIT_HASH */
|
|
||||||
|
|
||||||
|
|
||||||
/* All global state is held in this structure */
|
/* All global state is held in this structure */
|
||||||
static struct Global {
|
static struct Global {
|
||||||
@ -164,6 +99,7 @@ static struct Global {
|
|||||||
int nResult; /* Size of the current result */
|
int nResult; /* Size of the current result */
|
||||||
char zResult[3000]; /* Text of the current result */
|
char zResult[3000]; /* Text of the current result */
|
||||||
#ifndef SPEEDTEST_OMIT_HASH
|
#ifndef SPEEDTEST_OMIT_HASH
|
||||||
|
FILE *hashFile; /* Store all hash results in this file */
|
||||||
HashContext hash; /* Hash of all output */
|
HashContext hash; /* Hash of all output */
|
||||||
#endif
|
#endif
|
||||||
} g;
|
} g;
|
||||||
@ -174,9 +110,6 @@ static const char *isTemp(int N){
|
|||||||
return g.eTemp>=N ? " TEMP" : "";
|
return g.eTemp>=N ? " TEMP" : "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Print an error message and exit */
|
/* Print an error message and exit */
|
||||||
static void fatal_error(const char *zMsg, ...){
|
static void fatal_error(const char *zMsg, ...){
|
||||||
va_list ap;
|
va_list ap;
|
||||||
@ -186,6 +119,72 @@ static void fatal_error(const char *zMsg, ...){
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef SPEEDTEST_OMIT_HASH
|
||||||
|
/****************************************************************************
|
||||||
|
** Hash algorithm used to verify that compilation is not miscompiled
|
||||||
|
** in such a was as to generate an incorrect result.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Initialize a new hash. iSize determines the size of the hash
|
||||||
|
** in bits and should be one of 224, 256, 384, or 512. Or iSize
|
||||||
|
** can be zero to use the default hash size of 256 bits.
|
||||||
|
*/
|
||||||
|
static void HashInit(void){
|
||||||
|
unsigned int k;
|
||||||
|
g.hash.i = 0;
|
||||||
|
g.hash.j = 0;
|
||||||
|
for(k=0; k<256; k++) g.hash.s[k] = k;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Make consecutive calls to the HashUpdate function to add new content
|
||||||
|
** to the hash
|
||||||
|
*/
|
||||||
|
static void HashUpdate(
|
||||||
|
const unsigned char *aData,
|
||||||
|
unsigned int nData
|
||||||
|
){
|
||||||
|
unsigned char t;
|
||||||
|
unsigned char i = g.hash.i;
|
||||||
|
unsigned char j = g.hash.j;
|
||||||
|
unsigned int k;
|
||||||
|
if( g.hashFile ) fwrite(aData, 1, nData, g.hashFile);
|
||||||
|
for(k=0; k<nData; k++){
|
||||||
|
j += g.hash.s[i] + aData[k];
|
||||||
|
t = g.hash.s[j];
|
||||||
|
g.hash.s[j] = g.hash.s[i];
|
||||||
|
g.hash.s[i] = t;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
g.hash.i = i;
|
||||||
|
g.hash.j = j;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** After all content has been added, invoke HashFinal() to compute
|
||||||
|
** the final hash. The hash result is stored in g.hash.r[].
|
||||||
|
*/
|
||||||
|
static void HashFinal(void){
|
||||||
|
unsigned int k;
|
||||||
|
unsigned char t, i, j;
|
||||||
|
i = g.hash.i;
|
||||||
|
j = g.hash.j;
|
||||||
|
for(k=0; k<32; k++){
|
||||||
|
i++;
|
||||||
|
t = g.hash.s[i];
|
||||||
|
j += t;
|
||||||
|
g.hash.s[i] = g.hash.s[j];
|
||||||
|
g.hash.s[j] = t;
|
||||||
|
t += g.hash.s[i];
|
||||||
|
g.hash.r[k] = g.hash.s[t];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* End of the Hash hashing logic
|
||||||
|
*****************************************************************************/
|
||||||
|
#endif /* SPEEDTEST_OMIT_HASH */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Return the value of a hexadecimal digit. Return -1 if the input
|
** Return the value of a hexadecimal digit. Return -1 if the input
|
||||||
** is not a hex digit.
|
** is not a hex digit.
|
||||||
@ -413,17 +412,17 @@ void speedtest1_final(void){
|
|||||||
if( g.bVerify ){
|
if( g.bVerify ){
|
||||||
#ifndef SPEEDTEST_OMIT_HASH
|
#ifndef SPEEDTEST_OMIT_HASH
|
||||||
int i;
|
int i;
|
||||||
unsigned char *aHash = HashFinal(&g.hash);
|
|
||||||
#endif
|
#endif
|
||||||
printf("SQL Output Verification:\n");
|
printf("Verification Hash: %llu ", g.nResByte);
|
||||||
printf(" size: %llu\n", g.nResByte);
|
|
||||||
#ifndef SPEEDTEST_OMIT_HASH
|
#ifndef SPEEDTEST_OMIT_HASH
|
||||||
printf(" hash: ");
|
HashUpdate((const unsigned char*)"\n", 1);
|
||||||
for(i=0; i<32; i++){
|
HashFinal();
|
||||||
printf("%02x", aHash[i]);
|
for(i=0; i<24; i++){
|
||||||
|
printf("%02x", g.hash.r[i]);
|
||||||
}
|
}
|
||||||
printf("\n");
|
if( g.hashFile && g.hashFile!=stdout ) fclose(g.hashFile);
|
||||||
#endif
|
#endif
|
||||||
|
printf("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -537,8 +536,24 @@ void speedtest1_run(void){
|
|||||||
len = (int)strlen(z);
|
len = (int)strlen(z);
|
||||||
#ifndef SPEEDTEST_OMIT_HASH
|
#ifndef SPEEDTEST_OMIT_HASH
|
||||||
if( g.bVerify ){
|
if( g.bVerify ){
|
||||||
HashUpdate(&g.hash, (unsigned char*)z, len);
|
int eType = sqlite3_column_type(g.pStmt, i);
|
||||||
g.nResByte += len;
|
unsigned char zPrefix[2];
|
||||||
|
zPrefix[0] = '\n';
|
||||||
|
zPrefix[1] = "-IFTBN"[eType];
|
||||||
|
if( g.nResByte ){
|
||||||
|
HashUpdate(zPrefix, 2);
|
||||||
|
}else{
|
||||||
|
HashUpdate(zPrefix+1, 1);
|
||||||
|
}
|
||||||
|
if( eType==SQLITE_BLOB ){
|
||||||
|
int nBlob = sqlite3_column_bytes(g.pStmt, i);
|
||||||
|
const unsigned char *aBlob = sqlite3_column_blob(g.pStmt, i);
|
||||||
|
HashUpdate(aBlob, nBlob);
|
||||||
|
g.nResByte += nBlob + 2;
|
||||||
|
}else{
|
||||||
|
HashUpdate((unsigned char*)z, len);
|
||||||
|
g.nResByte += len + 2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if( g.nResult+len<sizeof(g.zResult)-2 ){
|
if( g.nResult+len<sizeof(g.zResult)-2 ){
|
||||||
@ -2124,6 +2139,7 @@ int main(int argc, char **argv){
|
|||||||
int showStats = 0; /* True for --stats */
|
int showStats = 0; /* True for --stats */
|
||||||
int nThread = 0; /* --threads value */
|
int nThread = 0; /* --threads value */
|
||||||
int mmapSize = 0; /* How big of a memory map to use */
|
int mmapSize = 0; /* How big of a memory map to use */
|
||||||
|
int memDb = 0; /* --memdb. Use an in-memory database */
|
||||||
char *zTSet = "main"; /* Which --testset torun */
|
char *zTSet = "main"; /* Which --testset torun */
|
||||||
int doTrace = 0; /* True for --trace */
|
int doTrace = 0; /* True for --trace */
|
||||||
const char *zEncoding = 0; /* --utf16be or --utf16le */
|
const char *zEncoding = 0; /* --utf16be or --utf16le */
|
||||||
@ -2137,7 +2153,7 @@ int main(int argc, char **argv){
|
|||||||
int rc; /* API return code */
|
int rc; /* API return code */
|
||||||
|
|
||||||
/* Display the version of SQLite being tested */
|
/* Display the version of SQLite being tested */
|
||||||
printf("-- Speedtest1 for SQLite %s %.50s\n",
|
printf("-- Speedtest1 for SQLite %s %.48s\n",
|
||||||
sqlite3_libversion(), sqlite3_sourceid());
|
sqlite3_libversion(), sqlite3_sourceid());
|
||||||
|
|
||||||
/* Process command-line arguments */
|
/* Process command-line arguments */
|
||||||
@ -2179,6 +2195,8 @@ int main(int argc, char **argv){
|
|||||||
nLook = integerValue(argv[i+1]);
|
nLook = integerValue(argv[i+1]);
|
||||||
szLook = integerValue(argv[i+2]);
|
szLook = integerValue(argv[i+2]);
|
||||||
i += 2;
|
i += 2;
|
||||||
|
}else if( strcmp(z,"memdb")==0 ){
|
||||||
|
memDb = 1;
|
||||||
#if SQLITE_VERSION_NUMBER>=3006000
|
#if SQLITE_VERSION_NUMBER>=3006000
|
||||||
}else if( strcmp(z,"multithread")==0 ){
|
}else if( strcmp(z,"multithread")==0 ){
|
||||||
sqlite3_config(SQLITE_CONFIG_MULTITHREAD);
|
sqlite3_config(SQLITE_CONFIG_MULTITHREAD);
|
||||||
@ -2194,6 +2212,22 @@ int main(int argc, char **argv){
|
|||||||
noSync = 1;
|
noSync = 1;
|
||||||
}else if( strcmp(z,"notnull")==0 ){
|
}else if( strcmp(z,"notnull")==0 ){
|
||||||
g.zNN = "NOT NULL";
|
g.zNN = "NOT NULL";
|
||||||
|
}else if( strcmp(z,"output")==0 ){
|
||||||
|
#ifdef SPEEDTEST_OMIT_HASH
|
||||||
|
fatal_error("The --output option is not supported with"
|
||||||
|
" -DSPEEDTEST_OMIT_HASH\n");
|
||||||
|
#else
|
||||||
|
if( i>=argc-1 ) fatal_error("missing argument on %s\n", argv[i]);
|
||||||
|
i++;
|
||||||
|
if( strcmp(argv[i],"-")==0 ){
|
||||||
|
g.hashFile = stdout;
|
||||||
|
}else{
|
||||||
|
g.hashFile = fopen(argv[i], "wb");
|
||||||
|
if( g.hashFile==0 ){
|
||||||
|
fatal_error("cannot open \"%s\" for writing\n", argv[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}else if( strcmp(z,"pagesize")==0 ){
|
}else if( strcmp(z,"pagesize")==0 ){
|
||||||
if( i>=argc-1 ) fatal_error("missing argument on %s\n", argv[i]);
|
if( i>=argc-1 ) fatal_error("missing argument on %s\n", argv[i]);
|
||||||
pageSize = integerValue(argv[++i]);
|
pageSize = integerValue(argv[++i]);
|
||||||
@ -2248,7 +2282,7 @@ int main(int argc, char **argv){
|
|||||||
}else if( strcmp(z,"verify")==0 ){
|
}else if( strcmp(z,"verify")==0 ){
|
||||||
g.bVerify = 1;
|
g.bVerify = 1;
|
||||||
#ifndef SPEEDTEST_OMIT_HASH
|
#ifndef SPEEDTEST_OMIT_HASH
|
||||||
HashInit(&g.hash);
|
HashInit();
|
||||||
#endif
|
#endif
|
||||||
}else if( strcmp(z,"without-rowid")==0 ){
|
}else if( strcmp(z,"without-rowid")==0 ){
|
||||||
g.zWR = "WITHOUT ROWID";
|
g.zWR = "WITHOUT ROWID";
|
||||||
@ -2291,13 +2325,13 @@ int main(int argc, char **argv){
|
|||||||
sqlite3_initialize();
|
sqlite3_initialize();
|
||||||
|
|
||||||
/* Open the database and the input file */
|
/* Open the database and the input file */
|
||||||
if( sqlite3_open(zDbName, &g.db) ){
|
if( sqlite3_open(memDb ? ":memory:" : zDbName, &g.db) ){
|
||||||
fatal_error("Cannot open database file: %s\n", zDbName);
|
fatal_error("Cannot open database file: %s\n", zDbName);
|
||||||
}
|
}
|
||||||
#if SQLITE_VERSION_NUMBER>=3006001
|
#if SQLITE_VERSION_NUMBER>=3006001
|
||||||
if( nLook>0 && szLook>0 ){
|
if( nLook>0 && szLook>0 ){
|
||||||
pLook = malloc( nLook*szLook );
|
pLook = malloc( nLook*szLook );
|
||||||
rc = sqlite3_db_config(g.db, SQLITE_DBCONFIG_LOOKASIDE, pLook, szLook,nLook);
|
rc = sqlite3_db_config(g.db, SQLITE_DBCONFIG_LOOKASIDE,pLook,szLook,nLook);
|
||||||
if( rc ) fatal_error("lookaside configuration failed: %d\n", rc);
|
if( rc ) fatal_error("lookaside configuration failed: %d\n", rc);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -2307,6 +2341,9 @@ int main(int argc, char **argv){
|
|||||||
#ifndef SQLITE_OMIT_DEPRECATED
|
#ifndef SQLITE_OMIT_DEPRECATED
|
||||||
if( doTrace ) sqlite3_trace(g.db, traceCallback, 0);
|
if( doTrace ) sqlite3_trace(g.db, traceCallback, 0);
|
||||||
#endif
|
#endif
|
||||||
|
if( memDb>0 ){
|
||||||
|
speedtest1_exec("PRAGMA temp_store=memory");
|
||||||
|
}
|
||||||
if( mmapSize>0 ){
|
if( mmapSize>0 ){
|
||||||
speedtest1_exec("PRAGMA mmap_size=%d", mmapSize);
|
speedtest1_exec("PRAGMA mmap_size=%d", mmapSize);
|
||||||
}
|
}
|
||||||
@ -2346,6 +2383,9 @@ int main(int argc, char **argv){
|
|||||||
}else{
|
}else{
|
||||||
zTSet = "";
|
zTSet = "";
|
||||||
}
|
}
|
||||||
|
if( g.iTotal>0 || zComma!=0 ){
|
||||||
|
printf(" Begin testset \"%s\"\n", zThisTest);
|
||||||
|
}
|
||||||
if( strcmp(zThisTest,"main")==0 ){
|
if( strcmp(zThisTest,"main")==0 ){
|
||||||
testset_main();
|
testset_main();
|
||||||
}else if( strcmp(zThisTest,"debug1")==0 ){
|
}else if( strcmp(zThisTest,"debug1")==0 ){
|
||||||
|
@ -79,6 +79,10 @@ while test "$1" != ""; do
|
|||||||
;;
|
;;
|
||||||
--legacy)
|
--legacy)
|
||||||
doWal=0
|
doWal=0
|
||||||
|
CC_OPTS="$CC_OPTS -DSPEEDTEST_OMIT_HASH"
|
||||||
|
;;
|
||||||
|
--verify)
|
||||||
|
SPEEDTEST_OPTS="$SPEEDTEST_OPTS --verify"
|
||||||
;;
|
;;
|
||||||
--wal)
|
--wal)
|
||||||
doWal=1
|
doWal=1
|
||||||
|
Reference in New Issue
Block a user