Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Enhance zeroblob tests to use the sqlite3_memory_highwater in order to double-check that no large allocations are occurring. (CVS 5217) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
e93079be83a9df7328d9b910fcbdb762 |
User & Date: | drh 2008-06-12 18:17:40.000 |
Context
2008-06-13
| ||
18:24 | Progress toward implementation of sqlite3_config() and a rework of the mutex and memory allocation subsystems. This is an incremental check-in. (CVS 5218) (check-in: a03c5af115 user: drh tags: trunk) | |
2008-06-12
| ||
18:17 | Enhance zeroblob tests to use the sqlite3_memory_highwater in order to double-check that no large allocations are occurring. (CVS 5217) (check-in: e93079be83 user: drh tags: trunk) | |
18:05 | Fix a typo in the date/time function tests. Add additional cases to the zeroblob tests to make sure sqlite3_bind_zeroblob() does not use excess memory. (CVS 5216) (check-in: c1006fb1c8 user: drh tags: trunk) | |
Changes
Changes to test/zeroblob.test.
︙ | ︙ | |||
9 10 11 12 13 14 15 | # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing of the zero-filled blob functionality # including the sqlite3_bind_zeroblob(), sqlite3_result_zeroblob(), # and the built-in zeroblob() SQL function. # | | > > > > | > > > | | | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing of the zero-filled blob functionality # including the sqlite3_bind_zeroblob(), sqlite3_result_zeroblob(), # and the built-in zeroblob() SQL function. # # $Id: zeroblob.test,v 1.12 2008/06/12 18:17:40 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl ifcapable !incrblob { finish_test return } # When zeroblob() is used for the last field of a column, then the # content of the zeroblob is never instantiated on the VDBE stack. # But it does get inserted into the database correctly. # db eval {PRAGMA cache_size=10} sqlite3_memory_highwater unset -nocomplain memused set memused [sqlite3_memory_used] do_test zeroblob-1.1 { execsql { CREATE TABLE t1(a,b,c,d); } set ::sqlite3_max_blobsize 0 execsql { INSERT INTO t1 VALUES(2,3,4,zeroblob(1000000)); } set ::sqlite3_max_blobsize } {10} do_test zeroblob-1.1.1 { expr {[sqlite3_memory_highwater]<$::memused+25000} } {1} do_test zeroblob-1.2 { execsql { SELECT length(d) FROM t1 } } {1000000} # If a non-NULL column follows the zeroblob, then the content of # the zeroblob must be instantiated. # do_test zeroblob-1.3 { set ::sqlite3_max_blobsize 0 execsql { INSERT INTO t1 VALUES(3,4,zeroblob(10000),5); } set ::sqlite3_max_blobsize } {10010} do_test zeroblob-1.4 { execsql { SELECT length(c), length(d) FROM t1 } } {1 1000000 10000 1} # Multiple zeroblobs can appear at the end of record. No instantiation # of the blob content occurs on the stack. # do_test zeroblob-1.5 { set ::sqlite3_max_blobsize 0 execsql { INSERT INTO t1 VALUES(4,5,zeroblob(10000),zeroblob(10000)); } set ::sqlite3_max_blobsize } {11} do_test zeroblob-1.6 { execsql { SELECT length(c), length(d) FROM t1 } } {1 1000000 10000 1 10000 10000} # NULLs can follow the zeroblob() or be intermixed with zeroblobs and # no instantiation of the zeroblobs occurs on the stack. # do_test zeroblob-1.7 { set ::sqlite3_max_blobsize 0 execsql { |
︙ | ︙ |