Annotation of embedaddon/sqlite3/test/walbig.test, revision 1.1
1.1 ! misho 1: # 2010 July 07
! 2: #
! 3: # The author disclaims copyright to this source code. In place of
! 4: # 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: # This file implements regression tests for SQLite library. The
! 12: # focus of this script testing the ability of SQLite to handle database
! 13: # files larger than 4GB in WAL mode.
! 14: #
! 15:
! 16:
! 17: set testdir [file dirname $argv0]
! 18: source $testdir/tester.tcl
! 19:
! 20: ifcapable !wal {
! 21: finish_test
! 22: return
! 23: }
! 24:
! 25: # Do not use a codec for this file, as the database is manipulated using
! 26: # external methods (the [fake_big_file] and [hexio_write] commands).
! 27: #
! 28: do_not_use_codec
! 29:
! 30: # If SQLITE_DISABLE_LFS is defined, omit this file.
! 31: ifcapable !lfs {
! 32: finish_test
! 33: return
! 34: }
! 35:
! 36: set a_string_counter 1
! 37: proc a_string {n} {
! 38: incr ::a_string_counter
! 39: string range [string repeat "${::a_string_counter}." $n] 1 $n
! 40: }
! 41: db func a_string a_string
! 42:
! 43: do_test walbig-1.0 {
! 44: execsql {
! 45: PRAGMA journal_mode = WAL;
! 46: CREATE TABLE t1(a PRIMARY KEY, b UNIQUE);
! 47: INSERT INTO t1 VALUES(a_string(300), a_string(500));
! 48: INSERT INTO t1 SELECT a_string(300), a_string(500) FROM t1;
! 49: INSERT INTO t1 SELECT a_string(300), a_string(500) FROM t1;
! 50: INSERT INTO t1 SELECT a_string(300), a_string(500) FROM t1;
! 51: }
! 52: } {wal}
! 53:
! 54: db close
! 55: if {[catch {fake_big_file 5000 [pwd]/test.db}]} {
! 56: puts "**** Unable to create a file larger than 5000 MB. *****"
! 57: finish_test
! 58: return
! 59: }
! 60: hexio_write test.db 28 00000000
! 61:
! 62: sqlite3 db test.db
! 63: db func a_string a_string
! 64: do_test walbig-1.1 {
! 65: execsql { INSERT INTO t1 SELECT a_string(300), a_string(500) FROM t1 }
! 66: } {}
! 67: db close
! 68:
! 69: sqlite3 db test.db
! 70: do_test walbig-1.2 {
! 71: execsql { SELECT a FROM t1 ORDER BY a }
! 72: } [lsort [execsql { SELECT a FROM t1 ORDER BY rowid }]]
! 73:
! 74: do_test walbig-1.3 {
! 75: execsql { SELECT b FROM t1 ORDER BY b }
! 76: } [lsort [execsql { SELECT b FROM t1 ORDER BY rowid }]]
! 77:
! 78: finish_test
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>