Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: third_party/sqlite/src/test/wal.test

Issue 2751253002: [sql] Import SQLite 3.17.0. (Closed)
Patch Set: also clang on Linux i386 Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/sqlite/src/test/vtab_shared.test ('k') | third_party/sqlite/src/test/wal2.test » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # 2010 April 13 1 # 2010 April 13
2 # 2 #
3 # The author disclaims copyright to this source code. In place of 3 # The author disclaims copyright to this source code. In place of
4 # a legal notice, here is a blessing: 4 # a legal notice, here is a blessing:
5 # 5 #
6 # May you do good and not evil. 6 # May you do good and not evil.
7 # May you find forgiveness for yourself and forgive others. 7 # May you find forgiveness for yourself and forgive others.
8 # May you share freely, never taking more than you give. 8 # May you share freely, never taking more than you give.
9 # 9 #
10 #*********************************************************************** 10 #***********************************************************************
(...skipping 694 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 } [list 3 [wal_file_size 32 1024]] 705 } [list 3 [wal_file_size 32 1024]]
706 do_test wal-11.5 { 706 do_test wal-11.5 {
707 execsql { 707 execsql {
708 SELECT count(*) FROM t1; 708 SELECT count(*) FROM t1;
709 PRAGMA integrity_check; 709 PRAGMA integrity_check;
710 } 710 }
711 } {16 ok} 711 } {16 ok}
712 do_test wal-11.6 { 712 do_test wal-11.6 {
713 execsql COMMIT 713 execsql COMMIT
714 list [expr [file size test.db]/1024] [file size test.db-wal] 714 list [expr [file size test.db]/1024] [file size test.db-wal]
715 } [list 3 [wal_file_size 41 1024]] 715 } [list 3 [wal_file_size 40 1024]]
716 do_test wal-11.7 { 716 do_test wal-11.7 {
717 execsql { 717 execsql {
718 SELECT count(*) FROM t1; 718 SELECT count(*) FROM t1;
719 PRAGMA integrity_check; 719 PRAGMA integrity_check;
720 } 720 }
721 } {16 ok} 721 } {16 ok}
722 do_test wal-11.8 { 722 do_test wal-11.8 {
723 execsql { PRAGMA wal_checkpoint } 723 execsql { PRAGMA wal_checkpoint }
724 list [expr [file size test.db]/1024] [file size test.db-wal] 724 list [expr [file size test.db]/1024] [file size test.db-wal]
725 } [list 37 [wal_file_size 41 1024]] 725 } [list 37 [wal_file_size 40 1024]]
726 do_test wal-11.9 { 726 do_test wal-11.9 {
727 db close 727 db close
728 list [expr [file size test.db]/1024] [log_deleted test.db-wal] 728 list [expr [file size test.db]/1024] [log_deleted test.db-wal]
729 } {37 1} 729 } {37 1}
730 sqlite3_wal db test.db 730 sqlite3_wal db test.db
731 set nWal 39 731
732 if {[permutation]!="mmap"} {set nWal 37} 732 # After adding the capability of WAL to overwrite prior uncommitted
733 ifcapable !mmap {set nWal 37} 733 # frame in the WAL-file with revised content, the size of the WAL file
734 # following cache-spill is smaller.
735 #
736 #set nWal 39
737 #if {[permutation]!="mmap"} {set nWal 37}
738 #ifcapable !mmap {set nWal 37}
739 set nWal 34
740
734 do_test wal-11.10 { 741 do_test wal-11.10 {
735 execsql { 742 execsql {
736 PRAGMA cache_size = 10; 743 PRAGMA cache_size = 10;
737 BEGIN; 744 BEGIN;
738 INSERT INTO t1 SELECT blob(900) FROM t1; -- 32 745 INSERT INTO t1 SELECT blob(900) FROM t1; -- 32
739 SELECT count(*) FROM t1; 746 SELECT count(*) FROM t1;
740 } 747 }
741 list [expr [file size test.db]/1024] [file size test.db-wal] 748 list [expr [file size test.db]/1024] [file size test.db-wal]
742 } [list 37 [wal_file_size $nWal 1024]] 749 } [list 37 [wal_file_size $nWal 1024]]
743 do_test wal-11.11 { 750 do_test wal-11.11 {
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
811 do_test wal-12.6 { 818 do_test wal-12.6 {
812 forcecopy test.db test2.db 819 forcecopy test.db test2.db
813 forcecopy test.db-wal test2.db-wal 820 forcecopy test.db-wal test2.db-wal
814 sqlite3_wal db2 test2.db 821 sqlite3_wal db2 test2.db
815 execsql { SELECT * FROM t2 } db2 822 execsql { SELECT * FROM t2 } db2
816 } {B 2} 823 } {B 2}
817 db2 close 824 db2 close
818 db close 825 db close
819 826
820 #------------------------------------------------------------------------- 827 #-------------------------------------------------------------------------
821 # Test large log summaries.
822 #
823 # In this case "large" usually means a log file that requires a wal-index
824 # mapping larger than 64KB (the default initial allocation). A 64KB wal-index
825 # is large enough for a log file that contains approximately 13100 frames.
826 # So the following tests create logs containing at least this many frames.
827 #
828 # wal-13.1.*: This test case creates a very large log file within the
829 # file-system (around 200MB). The log file does not contain
830 # any valid frames. Test that the database file can still be
831 # opened and queried, and that the invalid log file causes no
832 # problems.
833 #
834 # wal-13.2.*: Test that a process may create a large log file and query
835 # the database (including the log file that it itself created).
836 #
837 # wal-13.3.*: Test that if a very large log file is created, and then a
838 # second connection is opened on the database file, it is possible
839 # to query the database (and the very large log) using the
840 # second connection.
841 #
842 # wal-13.4.*: Same test as wal-13.3.*. Except in this case the second
843 # connection is opened by an external process.
844 #
845 do_test wal-13.1.1 {
846 list [file exists test.db] [file exists test.db-wal]
847 } {1 0}
848 do_test wal-13.1.2 {
849 set fd [open test.db-wal w]
850 seek $fd [expr 200*1024*1024]
851 puts $fd ""
852 close $fd
853 sqlite3 db test.db
854 execsql { SELECT * FROM t2 }
855 } {B 2}
856 do_test wal-13.1.3 {
857 db close
858 file exists test.db-wal
859 } {0}
860
861 do_test wal-13.2.1 {
862 sqlite3 db test.db
863 execsql { SELECT count(*) FROM t2 }
864 } {1}
865 do_test wal-13.2.2 {
866 db function blob blob
867 for {set i 0} {$i < 16} {incr i} {
868 execsql { INSERT INTO t2 SELECT blob(400), blob(400) FROM t2 }
869 }
870 execsql { SELECT count(*) FROM t2 }
871 } [expr int(pow(2, 16))]
872 do_test wal-13.2.3 {
873 expr [file size test.db-wal] > [wal_file_size 33000 1024]
874 } 1
875
876 do_multiclient_test tn {
877 incr tn 2
878
879 do_test wal-13.$tn.0 {
880 sql1 {
881 PRAGMA journal_mode = WAL;
882 CREATE TABLE t1(x);
883 INSERT INTO t1 SELECT randomblob(800);
884 }
885 sql1 { SELECT count(*) FROM t1 }
886 } {1}
887
888 for {set ii 1} {$ii<16} {incr ii} {
889 do_test wal-13.$tn.$ii.a {
890 sql2 { INSERT INTO t1 SELECT randomblob(800) FROM t1 }
891 sql2 { SELECT count(*) FROM t1 }
892 } [expr (1<<$ii)]
893 do_test wal-13.$tn.$ii.b {
894 sql1 { SELECT count(*) FROM t1 }
895 } [expr (1<<$ii)]
896 do_test wal-13.$tn.$ii.c {
897 sql1 { SELECT count(*) FROM t1 }
898 } [expr (1<<$ii)]
899 do_test wal-13.$tn.$ii.d {
900 sql1 { PRAGMA integrity_check }
901 } {ok}
902 }
903 }
904
905 #-------------------------------------------------------------------------
906 # Check a fun corruption case has been fixed. 828 # Check a fun corruption case has been fixed.
907 # 829 #
908 # The problem was that after performing a checkpoint using a connection 830 # The problem was that after performing a checkpoint using a connection
909 # that had an out-of-date pager-cache, the next time the connection was 831 # that had an out-of-date pager-cache, the next time the connection was
910 # used it did not realize the cache was out-of-date and proceeded to 832 # used it did not realize the cache was out-of-date and proceeded to
911 # operate with an inconsistent cache. Leading to corruption. 833 # operate with an inconsistent cache. Leading to corruption.
912 # 834 #
913 catch { db close } 835 catch { db close }
914 catch { db2 close } 836 catch { db2 close }
915 catch { db3 close } 837 catch { db3 close }
(...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after
1449 } 1371 }
1450 execsql { SELECT * FROM t1 } 1372 execsql { SELECT * FROM t1 }
1451 } {1 2 3 4 5 6 7 8 9 10 11 12} 1373 } {1 2 3 4 5 6 7 8 9 10 11 12}
1452 do_test wal-21.3 { 1374 do_test wal-21.3 {
1453 execsql { PRAGMA integrity_check } 1375 execsql { PRAGMA integrity_check }
1454 } {ok} 1376 } {ok}
1455 1377
1456 #------------------------------------------------------------------------- 1378 #-------------------------------------------------------------------------
1457 # Test reading and writing of databases with different page-sizes. 1379 # Test reading and writing of databases with different page-sizes.
1458 # 1380 #
1381 incr ::do_not_use_codec
1459 foreach pgsz {512 1024 2048 4096 8192 16384 32768 65536} { 1382 foreach pgsz {512 1024 2048 4096 8192 16384 32768 65536} {
1460 do_multiclient_test tn [string map [list %PGSZ% $pgsz] { 1383 do_multiclient_test tn [string map [list %PGSZ% $pgsz] {
1461 do_test wal-22.%PGSZ%.$tn.1 { 1384 do_test wal-22.%PGSZ%.$tn.1 {
1462 sql1 { 1385 sql1 {
1463 PRAGMA main.page_size = %PGSZ%; 1386 PRAGMA main.page_size = %PGSZ%;
1464 PRAGMA auto_vacuum = 0; 1387 PRAGMA auto_vacuum = 0;
1465 PRAGMA journal_mode = WAL; 1388 PRAGMA journal_mode = WAL;
1466 CREATE TABLE t1(x UNIQUE); 1389 CREATE TABLE t1(x UNIQUE);
1467 INSERT INTO t1 SELECT randomblob(800); 1390 INSERT INTO t1 SELECT randomblob(800);
1468 INSERT INTO t1 SELECT randomblob(800); 1391 INSERT INTO t1 SELECT randomblob(800);
1469 INSERT INTO t1 SELECT randomblob(800); 1392 INSERT INTO t1 SELECT randomblob(800);
1470 } 1393 }
1471 } {wal} 1394 } {wal}
1472 do_test wal-22.%PGSZ%.$tn.2 { sql2 { PRAGMA integrity_check } } {ok} 1395 do_test wal-22.%PGSZ%.$tn.2 { sql2 { PRAGMA integrity_check } } {ok}
1473 do_test wal-22.%PGSZ%.$tn.3 { 1396 do_test wal-22.%PGSZ%.$tn.3 {
1474 sql1 {PRAGMA wal_checkpoint} 1397 sql1 {PRAGMA wal_checkpoint}
1475 expr {[file size test.db] % %PGSZ%} 1398 expr {[file size test.db] % %PGSZ%}
1476 } {0} 1399 } {0}
1477 }] 1400 }]
1478 } 1401 }
1402 incr ::do_not_use_codec -1
1479 1403
1480 #------------------------------------------------------------------------- 1404 #-------------------------------------------------------------------------
1481 # Test that when 1 or more pages are recovered from a WAL file, 1405 # Test that when 1 or more pages are recovered from a WAL file,
1482 # sqlite3_log() is invoked to report this to the user. 1406 # sqlite3_log() is invoked to report this to the user.
1483 # 1407 #
1484 ifcapable curdir { 1408 ifcapable curdir {
1485 set walfile [file nativename [file join [get_pwd] test.db-wal]] 1409 set walfile [file nativename [file join [get_pwd] test.db-wal]]
1486 } else { 1410 } else {
1487 set walfile test.db-wal 1411 set walfile test.db-wal
1488 } 1412 }
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
1583 sqlite3 db test.db 1507 sqlite3 db test.db
1584 do_test wal-25.$mode { 1508 do_test wal-25.$mode {
1585 db eval "PRAGMA journal_mode=$mode" 1509 db eval "PRAGMA journal_mode=$mode"
1586 db eval {ATTACH 'test2.db' AS t2; PRAGMA journal_mode=WAL;} 1510 db eval {ATTACH 'test2.db' AS t2; PRAGMA journal_mode=WAL;}
1587 } {wal} 1511 } {wal}
1588 db close 1512 db close
1589 } 1513 }
1590 1514
1591 test_restore_config_pagecache 1515 test_restore_config_pagecache
1592 finish_test 1516 finish_test
OLDNEW
« no previous file with comments | « third_party/sqlite/src/test/vtab_shared.test ('k') | third_party/sqlite/src/test/wal2.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698