109419b4bSdrh# 2011 November 16 209419b4bSdrh# 309419b4bSdrh# The author disclaims copyright to this source code. In place of 409419b4bSdrh# a legal notice, here is a blessing: 509419b4bSdrh# 609419b4bSdrh# May you do good and not evil. 709419b4bSdrh# May you find forgiveness for yourself and forgive others. 809419b4bSdrh# May you share freely, never taking more than you give. 909419b4bSdrh# 1009419b4bSdrh#*********************************************************************** 1109419b4bSdrh# 1209419b4bSdrh# This file contains test cases for sqlite3_db_release_memory and 1309419b4bSdrh# the PRAGMA shrink_memory statement. 1409419b4bSdrh# 1509419b4bSdrh 1609419b4bSdrhset testdir [file dirname $argv0] 1709419b4bSdrhsource $testdir/tester.tcl 187416f2edSdrhtest_set_config_pagecache 0 0 1909419b4bSdrh 2009419b4bSdrhunset -nocomplain baseline 2109419b4bSdrhdo_test shrink-1.1 { 2209419b4bSdrh db eval { 235d8341a9Sdan PRAGMA cache_size = 2000; 2409419b4bSdrh CREATE TABLE t1(x,y); 2509419b4bSdrh INSERT INTO t1 VALUES(randomblob(1000000),1); 2609419b4bSdrh } 27*905b82d5Sdrh set ::baseline [sqlite3_memory_used] 288dd7a6a9Sdrh # EVIDENCE-OF: R-58814-63508 The sqlite3_db_release_memory(D) interface 298dd7a6a9Sdrh # attempts to free as much heap memory as possible from database 308dd7a6a9Sdrh # connection D. 3109419b4bSdrh sqlite3_db_release_memory db 3209419b4bSdrh expr {$::baseline > [sqlite3_memory_used]+500000} 3309419b4bSdrh} {1} 3409419b4bSdrhdo_test shrink-1.2 { 3509419b4bSdrh set baseline [sqlite3_memory_used] 3609419b4bSdrh db eval { 3709419b4bSdrh UPDATE t1 SET y=y+1; 3809419b4bSdrh } 3909419b4bSdrh expr {$::baseline+500000 < [sqlite3_memory_used]} 4009419b4bSdrh} {1} 4109419b4bSdrhdo_test shrink-1.3 { 4209419b4bSdrh set baseline [sqlite3_memory_used] 4309419b4bSdrh db eval {PRAGMA shrink_memory} 4409419b4bSdrh expr {$::baseline > [sqlite3_memory_used]+500000} 4509419b4bSdrh} {1} 4609419b4bSdrh 477416f2edSdrhtest_restore_config_pagecache 4809419b4bSdrhfinish_test 49