1# 2010 February 16 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# 12# Test that nothing goes wrong if an rtree table is created, then the 13# database page-size is modified. At one point (3.6.22), this was causing 14# malfunctions. 15# 16 17if {![info exists testdir]} { 18 set testdir [file join [file dirname [info script]] .. .. test] 19} 20source $testdir/tester.tcl 21 22ifcapable !rtree||!vacuum { 23 finish_test 24 return 25} 26 27# Like execsql except display output as integer where that can be 28# done without loss of information. 29# 30proc execsql_intout {sql} { 31 set out {} 32 foreach term [execsql $sql] { 33 regsub {\.0$} $term {} term 34 lappend out $term 35 } 36 return $out 37} 38 39do_test rtree7-1.1 { 40 execsql { 41 PRAGMA page_size = 1024; 42 CREATE VIRTUAL TABLE rt USING rtree(id, x1, x2, y1, y2); 43 INSERT INTO rt VALUES(1, 1, 2, 3, 4); 44 } 45} {} 46do_test rtree7-1.2 { 47 execsql_intout { SELECT * FROM rt } 48} {1 1 2 3 4} 49do_test rtree7-1.3 { 50 execsql_intout { 51 PRAGMA page_size = 2048; 52 VACUUM; 53 SELECT * FROM rt; 54 } 55} {1 1 2 3 4} 56do_test rtree7-1.4 { 57 for {set i 2} {$i <= 51} {incr i} { 58 execsql { INSERT INTO rt VALUES($i, 1, 2, 3, 4) } 59 } 60 execsql_intout { SELECT sum(x1), sum(x2), sum(y1), sum(y2) FROM rt } 61} {51 102 153 204} 62do_test rtree7-1.5 { 63 execsql_intout { 64 PRAGMA page_size = 512; 65 VACUUM; 66 SELECT sum(x1), sum(x2), sum(y1), sum(y2) FROM rt 67 } 68} {51 102 153 204} 69 70finish_test 71