Index: third_party/sqlite/src/ext/rtree/rtree3.test |
diff --git a/third_party/sqlite/src/ext/rtree/rtree3.test b/third_party/sqlite/src/ext/rtree/rtree3.test |
index fea5513069bb1fddcd10021e44da80d7be52e6c4..1d863c6cc2c477e75a130b0ac61fa2bf8423fb13 100644 |
--- a/third_party/sqlite/src/ext/rtree/rtree3.test |
+++ b/third_party/sqlite/src/ext/rtree/rtree3.test |
@@ -47,7 +47,8 @@ ifcapable !rtree { |
# |
# rtree3-8: Test OOM while registering the r-tree module with sqlite. |
# |
- |
+# rtree3-11: OOM following a constraint failure |
+# |
do_faultsim_test rtree3-1 -faults oom* -prep { |
faultsim_delete_and_reopen |
} -body { |
@@ -234,4 +235,32 @@ do_faultsim_test rtree3-10 -faults oom-* -prep { |
faultsim_test_result {0 2} |
} |
+ |
+do_test rtree3-11.prep { |
+ faultsim_delete_and_reopen |
+ execsql { |
+ CREATE VIRTUAL TABLE rt USING rtree(ii, x1, x2, y1, y2); |
+ INSERT INTO rt VALUES(1, 2, 3, 4, 5); |
+ } |
+ faultsim_save_and_close |
+} {} |
+do_faultsim_test rtree3-10.1 -faults oom-* -prep { |
+ faultsim_restore_and_reopen |
+ execsql { SELECT * FROM rt } |
+} -body { |
+ execsql { INSERT INTO rt VALUES(1, 2, 3, 4, 5) } |
+} -test { |
+ faultsim_test_result {1 {UNIQUE constraint failed: rt.ii}} \ |
+ {1 {constraint failed}} |
+} |
+do_faultsim_test rtree3-10.2 -faults oom-* -prep { |
+ faultsim_restore_and_reopen |
+ execsql { SELECT * FROM rt } |
+} -body { |
+ execsql { INSERT INTO rt VALUES(2, 2, 3, 5, 4) } |
+} -test { |
+ faultsim_test_result {1 {rtree constraint failed: rt.(y1<=y2)}} \ |
+ {1 {constraint failed}} |
+} |
+ |
finish_test |