CoolFace
Modelpublic

AryaWu/sqlite

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
securedel2.test95 linesDownload Raw Back to test
1# 2012 August 72#3# The author disclaims copyright to this source code.  In place of4# a legal notice, here is a blessing:5#6#    May you do good and not evil.7#    May you find forgiveness for yourself and forgive others.8#    May you share freely, never taking more than you give.9#10#*************************************************************************11#12# Tests for the secure_delete pragma.13#14 15set testdir [file dirname $argv0]16source $testdir/tester.tcl17set ::testprefix securedel218 19# Generate 1000 pseudo-random 64-bit blobs.20#21for {set i 1} {$i <= 1000} {incr i} {22  set aBlob($i) [string range [db one {SELECT quote(randomblob(8))}] 2 end-1]23}24 25proc detect_blob_prepare {zFile} {26  set nByte [file size $zFile]27  set ::detect_blob_data [hexio_read $zFile 0 $nByte]28}29 30proc detect_blob {zFile iBlob} {31  if {$zFile != ""} { detect_blob_prepare $zFile }32  string match "*$::aBlob($iBlob)*" $::detect_blob_data33}34 35do_test 1.1 {36  execsql { PRAGMA secure_delete = 1 }37  execsql { PRAGMA auto_vacuum = 0 }38  execsql { CREATE TABLE t1(x, y) }39  for {set i 1} {$i <= 1000} {incr i} {40    set x "X'[string repeat $aBlob($i) 1]'"41    set y "X'[string repeat $aBlob($i) 500]'"42    execsql "INSERT INTO t1 VALUES($x, $y)"43  }44} {}45 46do_test         1.2   { detect_blob test.db 1 } {1}47 48forcecopy test.db test.db.bak49do_execsql_test 1.3.1 { PRAGMA secure_delete = 0 } {0}50do_execsql_test 1.3.2 { DELETE FROM t1 WHERE rowid = 1 }51do_test         1.3.3 { detect_blob test.db 1 } {1}52 53db close54forcecopy test.db.bak test.db55sqlite3 db test.db56do_execsql_test 1.4.1 { PRAGMA secure_delete = 1 } {1}57do_execsql_test 1.4.2 { DELETE FROM t1 WHERE rowid = 1 }58do_test         1.4.3 { detect_blob test.db 1 } {0}59 60do_execsql_test 1.5.1 { DELETE FROM t1 WHERE rowid>850 } {}61do_test 1.5.2 { 62  set n 063  detect_blob_prepare test.db64  for {set i 851} {$i <= 1000} {incr i 5} {65    incr n [detect_blob {} $i]66  }67  set n68} {0}69 70db close71sqlite3 db test.db72do_test 1.6.1 { 73  execsql {74    PRAGMA cache_size = 200;75    PRAGMA secure_delete = 1;76    CREATE TABLE t2(x);77    SELECT * FROM t1;78  }79  for {set i 100} {$i < 5000} {incr i} {80    execsql { INSERT INTO t2 VALUES(randomblob($i)) }81  }82  execsql { DELETE FROM t1 }83} {}84 85do_test 1.6.2 { 86  set n 087  detect_blob_prepare test.db88  for {set i 2} {$i <= 850} {incr i 5} {89    incr n [detect_blob {} $i]90  }91  set n92} {0}93 94finish_test95