aboutsummaryrefslogtreecommitdiff
path: root/src/tclsqlite.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2017-06-01 00:54:35 +0000
committerdrh <drh@noemail.net>2017-06-01 00:54:35 +0000
commit2c2f392dcab522b41929d0ea1a786cebeeb3bafd (patch)
treec496ad2c8dadeec104323d1c80072b2eb46137b8 /src/tclsqlite.c
parentcdbb126be7335a05a5930b8d0fa775c7d3a86ef0 (diff)
downloadsqlite-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.c8
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);
}
/*