# 2011 November 16 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # # This file contains test cases for sqlite3_db_release_memory and # the PRAGMA shrink_memory statement. # set testdir [file dirname $argv0] source $testdir/tester.tcl test_set_config_pagecache 0 0 # purgeable pcache tracks memory differently ifcapable {enable_purgeable_pcache} { finish_test return } unset -nocomplain baseline do_test shrink-1.1 { db eval { PRAGMA cache_size = 2000; CREATE TABLE t1(x,y); INSERT INTO t1 VALUES(randomblob(1000000),1); } set ::baseline sqlite3_memory_used # EVIDENCE-OF: R-58814-63508 The sqlite3_db_release_memory(D) interface # attempts to free as much heap memory as possible from database # connection D. sqlite3_db_release_memory db expr {$::baseline > [sqlite3_memory_used]+500000} } {1} do_test shrink-1.2 { set baseline [sqlite3_memory_used] db eval { UPDATE t1 SET y=y+1; } expr {$::baseline+500000 < [sqlite3_memory_used]} } {1} do_test shrink-1.3 { set baseline [sqlite3_memory_used] db eval {PRAGMA shrink_memory} expr {$::baseline > [sqlite3_memory_used]+500000} } {1} test_restore_config_pagecache finish_test