Annotation of embedaddon/sqlite3/test/walbig.test, revision 1.1.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>