| OLD | NEW |
| 1 # 2008 Feb 19 | 1 # 2008 Feb 19 |
| 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 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 execsql { INSERT INTO t1 VALUES(NULL, 1, 3, 2, 4) } | 187 execsql { INSERT INTO t1 VALUES(NULL, 1, 3, 2, 4) } |
| 188 execsql { SELECT rowid FROM t1 ORDER BY rowid } | 188 execsql { SELECT rowid FROM t1 ORDER BY rowid } |
| 189 } {1 2} | 189 } {1 2} |
| 190 do_test rtree-2.1.3 { | 190 do_test rtree-2.1.3 { |
| 191 execsql { INSERT INTO t1 VALUES(NULL, 1, 3, 2, 4) } | 191 execsql { INSERT INTO t1 VALUES(NULL, 1, 3, 2, 4) } |
| 192 execsql { SELECT ii FROM t1 ORDER BY ii } | 192 execsql { SELECT ii FROM t1 ORDER BY ii } |
| 193 } {1 2 3} | 193 } {1 2 3} |
| 194 | 194 |
| 195 do_test rtree-2.2.1 { | 195 do_test rtree-2.2.1 { |
| 196 catchsql { INSERT INTO t1 VALUES(2, 1, 3, 2, 4) } | 196 catchsql { INSERT INTO t1 VALUES(2, 1, 3, 2, 4) } |
| 197 } {1 {constraint failed}} | 197 } {1 {UNIQUE constraint failed: t1.ii}} |
| 198 do_test rtree-2.2.2 { | 198 do_test rtree-2.2.2 { |
| 199 catchsql { INSERT INTO t1 VALUES(4, 1, 3, 4, 2) } | 199 catchsql { INSERT INTO t1 VALUES(4, 1, 3, 4, 2) } |
| 200 } {1 {constraint failed}} | 200 } {1 {rtree constraint failed: t1.(y1<=y2)}} |
| 201 do_test rtree-2.2.3 { | 201 do_test rtree-2.2.3 { |
| 202 catchsql { INSERT INTO t1 VALUES(4, 3, 1, 2, 4) } | 202 catchsql { INSERT INTO t1 VALUES(4, 3, 1, 2, 4) } |
| 203 } {1 {constraint failed}} | 203 } {1 {rtree constraint failed: t1.(x1<=x2)}} |
| 204 do_test rtree-2.2.4 { | 204 do_test rtree-2.2.4 { |
| 205 execsql { SELECT ii FROM t1 ORDER BY ii } | 205 execsql { SELECT ii FROM t1 ORDER BY ii } |
| 206 } {1 2 3} | 206 } {1 2 3} |
| 207 | 207 |
| 208 do_test rtree-2.X { | 208 do_test rtree-2.X { |
| 209 execsql { DROP TABLE t1 } | 209 execsql { DROP TABLE t1 } |
| 210 } {} | 210 } {} |
| 211 | 211 |
| 212 #---------------------------------------------------------------------------- | 212 #---------------------------------------------------------------------------- |
| 213 # Test cases rtree-3.* test linear scans of r-tree table data. To test | 213 # Test cases rtree-3.* test linear scans of r-tree table data. To test |
| (...skipping 15 matching lines...) Expand all Loading... |
| 229 do_test rtree-3.1.3 { | 229 do_test rtree-3.1.3 { |
| 230 execsql_intout { | 230 execsql_intout { |
| 231 INSERT INTO t1 VALUES(6, 2, 6, 4, 8); | 231 INSERT INTO t1 VALUES(6, 2, 6, 4, 8); |
| 232 SELECT * FROM t1; | 232 SELECT * FROM t1; |
| 233 } | 233 } |
| 234 } {5 1 3 2 4 6 2 6 4 8} | 234 } {5 1 3 2 4 6 2 6 4 8} |
| 235 | 235 |
| 236 # Test the constraint on the coordinates (c[i]<=c[i+1] where (i%2==0)): | 236 # Test the constraint on the coordinates (c[i]<=c[i+1] where (i%2==0)): |
| 237 do_test rtree-3.2.1 { | 237 do_test rtree-3.2.1 { |
| 238 catchsql { INSERT INTO t1 VALUES(7, 2, 6, 4, 3) } | 238 catchsql { INSERT INTO t1 VALUES(7, 2, 6, 4, 3) } |
| 239 } {1 {constraint failed}} | 239 } {1 {rtree constraint failed: t1.(y1<=y2)}} |
| 240 do_test rtree-3.2.2 { | 240 do_test rtree-3.2.2 { |
| 241 catchsql { INSERT INTO t1 VALUES(8, 2, 6, 3, 3) } | 241 catchsql { INSERT INTO t1 VALUES(8, 2, 6, 3, 3) } |
| 242 } {0 {}} | 242 } {0 {}} |
| 243 | 243 |
| 244 #---------------------------------------------------------------------------- | 244 #---------------------------------------------------------------------------- |
| 245 # Test cases rtree-5.* test DELETE operations. | 245 # Test cases rtree-5.* test DELETE operations. |
| 246 # | 246 # |
| 247 do_test rtree-5.1.1 { | 247 do_test rtree-5.1.1 { |
| 248 execsql { CREATE VIRTUAL TABLE t2 USING rtree(ii, x1, x2) } | 248 execsql { CREATE VIRTUAL TABLE t2 USING rtree(ii, x1, x2) } |
| 249 } {} | 249 } {} |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 483 | 483 |
| 484 3 "UPDATE %CONF% t1 SET idx = ((idx+1)%5)+1 WHERE idx > 2" { | 484 3 "UPDATE %CONF% t1 SET idx = ((idx+1)%5)+1 WHERE idx > 2" { |
| 485 ROLLBACK 1 1 {1 1 2 3 4 2 2 3 4 5 3 3 4 5 6} | 485 ROLLBACK 1 1 {1 1 2 3 4 2 2 3 4 5 3 3 4 5 6} |
| 486 ABORT 1 1 {1 1 2 3 4 2 2 3 4 5 3 3 4 5 6 4 4 5 6 7} | 486 ABORT 1 1 {1 1 2 3 4 2 2 3 4 5 3 3 4 5 6 4 4 5 6 7} |
| 487 IGNORE 1 0 {1 1 2 3 4 2 2 3 4 5 4 4 5 6 7 5 3 4 5 6} | 487 IGNORE 1 0 {1 1 2 3 4 2 2 3 4 5 4 4 5 6 7 5 3 4 5 6} |
| 488 FAIL 1 1 {1 1 2 3 4 2 2 3 4 5 4 4 5 6 7 5 3 4 5 6} | 488 FAIL 1 1 {1 1 2 3 4 2 2 3 4 5 4 4 5 6 7 5 3 4 5 6} |
| 489 REPLACE 1 0 {1 4 5 6 7 2 2 3 4 5 5 3 4 5 6} | 489 REPLACE 1 0 {1 4 5 6 7 2 2 3 4 5 5 3 4 5 6} |
| 490 } | 490 } |
| 491 | 491 |
| 492 4 "INSERT %CONF% INTO t1 VALUES(2, 7, 6, 7, 7)" { | 492 4 "INSERT %CONF% INTO t1 VALUES(2, 7, 6, 7, 7)" { |
| 493 ROLLBACK 0 1 {1 1 2 3 4 2 2 3 4 5 3 3 4 5 6} | 493 ROLLBACK 0 2 {1 1 2 3 4 2 2 3 4 5 3 3 4 5 6} |
| 494 ABORT 0 1 {1 1 2 3 4 2 2 3 4 5 3 3 4 5 6 4 4 5 6 7} | 494 ABORT 0 2 {1 1 2 3 4 2 2 3 4 5 3 3 4 5 6 4 4 5 6 7} |
| 495 IGNORE 0 0 {1 1 2 3 4 2 2 3 4 5 3 3 4 5 6 4 4 5 6 7} | 495 IGNORE 0 0 {1 1 2 3 4 2 2 3 4 5 3 3 4 5 6 4 4 5 6 7} |
| 496 FAIL 0 1 {1 1 2 3 4 2 2 3 4 5 3 3 4 5 6 4 4 5 6 7} | 496 FAIL 0 2 {1 1 2 3 4 2 2 3 4 5 3 3 4 5 6 4 4 5 6 7} |
| 497 REPLACE 0 1 {1 1 2 3 4 2 2 3 4 5 3 3 4 5 6 4 4 5 6 7} | 497 REPLACE 0 2 {1 1 2 3 4 2 2 3 4 5 3 3 4 5 6 4 4 5 6 7} |
| 498 } | 498 } |
| 499 | 499 |
| 500 } { | 500 } { |
| 501 foreach {mode uses error data} $testdata { | 501 foreach {mode uses error data} $testdata { |
| 502 db_restore_and_reopen | 502 db_restore_and_reopen |
| 503 | 503 |
| 504 set sql [string map [list %CONF% "OR $mode"] $sql_template] | 504 set sql [string map [list %CONF% "OR $mode"] $sql_template] |
| 505 set testname "12.$tn.[string tolower $mode]" | 505 set testname "12.$tn.[string tolower $mode]" |
| 506 | 506 |
| 507 execsql { | 507 execsql { |
| 508 BEGIN; | 508 BEGIN; |
| 509 INSERT INTO t1 VALUES(4, 4, 5, 6, 7); | 509 INSERT INTO t1 VALUES(4, 4, 5, 6, 7); |
| 510 } | 510 } |
| 511 | 511 |
| 512 set res(0) {0 {}} | 512 set res(0) {0 {}} |
| 513 set res(1) {1 {constraint failed}} | 513 set res(1) {1 {UNIQUE constraint failed: t1.idx}} |
| 514 set res(2) {1 {rtree constraint failed: t1.(x1<=x2)}} |
| 515 |
| 514 do_catchsql_test $testname.1 $sql $res($error) | 516 do_catchsql_test $testname.1 $sql $res($error) |
| 515 do_test $testname.2 [list sql_uses_stmt db $sql] $uses | 517 do_test $testname.2 [list sql_uses_stmt db $sql] $uses |
| 516 do_execsql_test $testname.3 { SELECT * FROM t1 ORDER BY idx } $data | 518 do_execsql_test $testname.3 { SELECT * FROM t1 ORDER BY idx } $data |
| 517 | 519 |
| 518 do_test $testname.4 { rtree_check db t1 } 0 | 520 do_test $testname.4 { rtree_check db t1 } 0 |
| 519 db close | 521 db close |
| 520 } | 522 } |
| 521 } | 523 } |
| 522 | 524 |
| 523 #------------------------------------------------------------------------- | 525 #------------------------------------------------------------------------- |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 584 } | 586 } |
| 585 do_execsql_test 14.5 { | 587 do_execsql_test 14.5 { |
| 586 SELECT * FROM t10; | 588 SELECT * FROM t10; |
| 587 } { | 589 } { |
| 588 1 0 0 | 590 1 0 0 |
| 589 2 52 81 | 591 2 52 81 |
| 590 3 42 49 | 592 3 42 49 |
| 591 } | 593 } |
| 592 | 594 |
| 593 finish_test | 595 finish_test |
| OLD | NEW |