diff options
author | drh <drh@noemail.net> | 2017-06-01 00:54:35 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2017-06-01 00:54:35 +0000 |
commit | 2c2f392dcab522b41929d0ea1a786cebeeb3bafd (patch) | |
tree | c496ad2c8dadeec104323d1c80072b2eb46137b8 /src/tclsqlite.c | |
parent | cdbb126be7335a05a5930b8d0fa775c7d3a86ef0 (diff) | |
download | sqlite-2c2f392dcab522b41929d0ea1a786cebeeb3bafd.tar.gz sqlite-2c2f392dcab522b41929d0ea1a786cebeeb3bafd.zip |
Add interfaces sqlite3_prepare_v3() and sqlite3_prepare16_v3() with the
extra prepFlags argument. Add the SQLITE_PREPARE_PERSISTENT option as one
bit in that argument.
FossilOrigin-Name: 4a25c5883380fe5990d8180adb58c3bdc7a3d081bc4c69cd4de3cd57074fb251
Diffstat (limited to 'src/tclsqlite.c')
-rw-r--r-- | src/tclsqlite.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/tclsqlite.c b/src/tclsqlite.c index 754775e8e..9fe2316bf 100644 --- a/src/tclsqlite.c +++ b/src/tclsqlite.c @@ -1214,12 +1214,18 @@ static int dbPrepare( sqlite3_stmt **ppStmt, /* OUT: Prepared statement */ const char **pzOut /* OUT: Pointer to next SQL statement */ ){ + unsigned int prepFlags = 0; #ifdef SQLITE_TEST if( pDb->bLegacyPrepare ){ return sqlite3_prepare(pDb->db, zSql, -1, ppStmt, pzOut); } #endif - return sqlite3_prepare_v2(pDb->db, zSql, -1, ppStmt, pzOut); + /* If the statement cache is large, use the SQLITE_PREPARE_PERSISTENT + ** flags, which uses less lookaside memory. But if the cache is small, + ** omit that flag to make full use of lookaside */ + if( pDb->maxStmt>5 ) prepFlags = SQLITE_PREPARE_PERSISTENT; + + return sqlite3_prepare_v3(pDb->db, zSql, -1, prepFlags, ppStmt, pzOut); } /* |