OLD | NEW |
1 # 2001 September 15 | 1 # 2001 September 15 |
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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 } | 107 } |
108 } {ok} | 108 } {ok} |
109 } | 109 } |
110 # Ensure the data remaining in the table is what was expected. | 110 # Ensure the data remaining in the table is what was expected. |
111 foreach d $delete { | 111 foreach d $delete { |
112 set idx [lsearch $::tbl_data [make_str $d $ENTRY_LEN]] | 112 set idx [lsearch $::tbl_data [make_str $d $ENTRY_LEN]] |
113 set ::tbl_data [lreplace $::tbl_data $idx $idx] | 113 set ::tbl_data [lreplace $::tbl_data $idx $idx] |
114 } | 114 } |
115 do_test autovacuum-1.$tn.($delete).3 { | 115 do_test autovacuum-1.$tn.($delete).3 { |
116 execsql { | 116 execsql { |
117 select a from av1 | 117 select a from av1 order by rowid |
118 } | 118 } |
119 } $::tbl_data | 119 } $::tbl_data |
120 } | 120 } |
121 | 121 |
122 # All rows have been deleted. Ensure the file has shrunk to 4 pages. | 122 # All rows have been deleted. Ensure the file has shrunk to 4 pages. |
123 do_test autovacuum-1.$tn.3 { | 123 do_test autovacuum-1.$tn.3 { |
124 file_pages | 124 file_pages |
125 } {4} | 125 } {4} |
126 } | 126 } |
127 | 127 |
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
460 } {1} | 460 } {1} |
461 do_test autovacuum-3.3 { | 461 do_test autovacuum-3.3 { |
462 execsql { | 462 execsql { |
463 PRAGMA auto_vacuum = 0; | 463 PRAGMA auto_vacuum = 0; |
464 PRAGMA auto_vacuum; | 464 PRAGMA auto_vacuum; |
465 } | 465 } |
466 } {1} | 466 } {1} |
467 | 467 |
468 do_test autovacuum-3.4 { | 468 do_test autovacuum-3.4 { |
469 db close | 469 db close |
470 file delete -force test.db | 470 forcedelete test.db |
471 sqlite3 db test.db | 471 sqlite3 db test.db |
472 execsql { | 472 execsql { |
473 PRAGMA auto_vacuum; | 473 PRAGMA auto_vacuum; |
474 } | 474 } |
475 } $AUTOVACUUM | 475 } $AUTOVACUUM |
476 do_test autovacuum-3.5 { | 476 do_test autovacuum-3.5 { |
477 execsql { | 477 execsql { |
478 CREATE TABLE av1(x); | 478 CREATE TABLE av1(x); |
479 PRAGMA auto_vacuum; | 479 PRAGMA auto_vacuum; |
480 } | 480 } |
(...skipping 14 matching lines...) Expand all Loading... |
495 | 495 |
496 #----------------------------------------------------------------------- | 496 #----------------------------------------------------------------------- |
497 # Test that if a statement transaction around a CREATE INDEX statement is | 497 # Test that if a statement transaction around a CREATE INDEX statement is |
498 # rolled back no corruption occurs. | 498 # rolled back no corruption occurs. |
499 # | 499 # |
500 do_test autovacuum-4.0 { | 500 do_test autovacuum-4.0 { |
501 # The last round of tests may have left the db in non-autovacuum mode. | 501 # The last round of tests may have left the db in non-autovacuum mode. |
502 # Reset everything just in case. | 502 # Reset everything just in case. |
503 # | 503 # |
504 db close | 504 db close |
505 file delete -force test.db test.db-journal | 505 forcedelete test.db test.db-journal |
506 sqlite3 db test.db | 506 sqlite3 db test.db |
507 execsql { | 507 execsql { |
508 PRAGMA auto_vacuum = 1; | 508 PRAGMA auto_vacuum = 1; |
509 PRAGMA auto_vacuum; | 509 PRAGMA auto_vacuum; |
510 } | 510 } |
511 } {1} | 511 } {1} |
512 do_test autovacuum-4.1 { | 512 do_test autovacuum-4.1 { |
513 execsql { | 513 execsql { |
514 CREATE TABLE av1(a, b); | 514 CREATE TABLE av1(a, b); |
515 BEGIN; | 515 BEGIN; |
516 } | 516 } |
517 for {set i 0} {$i<100} {incr i} { | 517 for {set i 0} {$i<100} {incr i} { |
518 execsql "INSERT INTO av1 VALUES($i, '[string repeat X 200]');" | 518 execsql "INSERT INTO av1 VALUES($i, '[string repeat X 200]');" |
519 } | 519 } |
520 execsql "INSERT INTO av1 VALUES(99, '[string repeat X 200]');" | 520 execsql "INSERT INTO av1 VALUES(99, '[string repeat X 200]');" |
521 execsql { | 521 execsql { |
522 SELECT sum(a) FROM av1; | 522 SELECT sum(a) FROM av1; |
523 } | 523 } |
524 } {5049} | 524 } {5049} |
525 do_test autovacuum-4.2 { | 525 do_test autovacuum-4.2 { |
526 catchsql { | 526 catchsql { |
527 CREATE UNIQUE INDEX av1_i ON av1(a); | 527 CREATE UNIQUE INDEX av1_i ON av1(a); |
528 } | 528 } |
529 } {1 {indexed columns are not unique}} | 529 } {1 {UNIQUE constraint failed: av1.a}} |
530 do_test autovacuum-4.3 { | 530 do_test autovacuum-4.3 { |
531 execsql { | 531 execsql { |
532 SELECT sum(a) FROM av1; | 532 SELECT sum(a) FROM av1; |
533 } | 533 } |
534 } {5049} | 534 } {5049} |
535 do_test autovacuum-4.4 { | 535 do_test autovacuum-4.4 { |
536 execsql { | 536 execsql { |
537 COMMIT; | 537 COMMIT; |
538 } | 538 } |
539 } {} | 539 } {} |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
592 | 592 |
593 } | 593 } |
594 | 594 |
595 #--------------------------------------------------------------------- | 595 #--------------------------------------------------------------------- |
596 # Test cases autovacuum-7.X test the case where a page must be moved | 596 # Test cases autovacuum-7.X test the case where a page must be moved |
597 # and the destination location collides with at least one other | 597 # and the destination location collides with at least one other |
598 # entry in the page hash-table (internal to the pager.c module. | 598 # entry in the page hash-table (internal to the pager.c module. |
599 # | 599 # |
600 do_test autovacuum-7.1 { | 600 do_test autovacuum-7.1 { |
601 db close | 601 db close |
602 file delete -force test.db | 602 forcedelete test.db |
603 file delete -force test.db-journal | 603 forcedelete test.db-journal |
604 sqlite3 db test.db | 604 sqlite3 db test.db |
605 | 605 |
606 execsql { | 606 execsql { |
607 PRAGMA auto_vacuum=1; | 607 PRAGMA auto_vacuum=1; |
608 CREATE TABLE t1(a, b, PRIMARY KEY(a, b)); | 608 CREATE TABLE t1(a, b, PRIMARY KEY(a, b)); |
609 INSERT INTO t1 VALUES(randstr(400,400),randstr(400,400)); | 609 INSERT INTO t1 VALUES(randstr(400,400),randstr(400,400)); |
610 INSERT INTO t1 SELECT randstr(400,400), randstr(400,400) FROM t1; -- 2 | 610 INSERT INTO t1 SELECT randstr(400,400), randstr(400,400) FROM t1; -- 2 |
611 INSERT INTO t1 SELECT randstr(400,400), randstr(400,400) FROM t1; -- 4 | 611 INSERT INTO t1 SELECT randstr(400,400), randstr(400,400) FROM t1; -- 4 |
612 INSERT INTO t1 SELECT randstr(400,400), randstr(400,400) FROM t1; -- 8 | 612 INSERT INTO t1 SELECT randstr(400,400), randstr(400,400) FROM t1; -- 8 |
613 INSERT INTO t1 SELECT randstr(400,400), randstr(400,400) FROM t1; -- 16 | 613 INSERT INTO t1 SELECT randstr(400,400), randstr(400,400) FROM t1; -- 16 |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
689 do_test autovacuum-9.4 { | 689 do_test autovacuum-9.4 { |
690 execsql { INSERT INTO t1 SELECT NULL, randstr(50,50) FROM t1 } | 690 execsql { INSERT INTO t1 SELECT NULL, randstr(50,50) FROM t1 } |
691 } {} | 691 } {} |
692 do_test autovacuum-9.5 { | 692 do_test autovacuum-9.5 { |
693 execsql { DELETE FROM t1 WHERE rowid > (SELECT max(a)/2 FROM t1) } | 693 execsql { DELETE FROM t1 WHERE rowid > (SELECT max(a)/2 FROM t1) } |
694 file size test.db | 694 file size test.db |
695 } $::sqlite_pending_byte | 695 } $::sqlite_pending_byte |
696 | 696 |
697 | 697 |
698 finish_test | 698 finish_test |
OLD | NEW |