Index: third_party/sqlite/sqlite-src-3170000/ext/rbu/rbu13.test |
diff --git a/third_party/sqlite/sqlite-src-3170000/ext/rbu/rbu13.test b/third_party/sqlite/sqlite-src-3170000/ext/rbu/rbu13.test |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ad67a98f802e854ccc1cbc1f2d35c43c690ea8fe |
--- /dev/null |
+++ b/third_party/sqlite/sqlite-src-3170000/ext/rbu/rbu13.test |
@@ -0,0 +1,65 @@ |
+# 2015 February 16 |
+# |
+# The author disclaims copyright to this source code. In place of |
+# a legal notice, here is a blessing: |
+# |
+# May you do good and not evil. |
+# May you find forgiveness for yourself and forgive others. |
+# May you share freely, never taking more than you give. |
+# |
+#*********************************************************************** |
+# |
+# Test an RBU update that features lots of different rbu_control strings |
+# for UPDATE statements. This tests RBU's internal UPDATE statement cache. |
+# |
+ |
+if {![info exists testdir]} { |
+ set testdir [file join [file dirname [info script]] .. .. test] |
+} |
+source $testdir/tester.tcl |
+source $testdir/lock_common.tcl |
+set ::testprefix rbu13 |
+ |
+do_execsql_test 1.0 { |
+ CREATE TABLE t1(a PRIMARY KEY, b, c, d, e, f, g, h); |
+ WITH ii(i) AS (SELECT 0 UNION ALL SELECT i+1 FROM ii WHERE i<127) |
+ INSERT INTO t1 SELECT i, 0, 0, 0, 0, 0, 0, 0 FROM ii; |
+} |
+ |
+forcedelete rbu.db |
+do_execsql_test 1.1 { |
+ ATTACH 'rbu.db' AS rbu; |
+ CREATE TABLE rbu.data_t1(a, b, c, d, e, f, g, h, rbu_control); |
+} |
+ |
+do_test 1.2 { |
+ for {set i 0} {$i<128} {incr i} { |
+ set control "." |
+ for {set bit 6} {$bit>=0} {incr bit -1} { |
+ if { $i & (1<<$bit) } { |
+ append control "x" |
+ } else { |
+ append control "." |
+ } |
+ } |
+ execsql { INSERT INTO data_t1 VALUES($i, 1, 1, 1, 1, 1, 1, 1, $control) } |
+ } |
+} {} |
+ |
+do_test 1.3 { |
+ sqlite3rbu rbu test.db rbu.db |
+ while 1 { |
+ set rc [rbu step] |
+ if {$rc!="SQLITE_OK"} break |
+ } |
+ rbu close |
+} {SQLITE_DONE} |
+ |
+do_execsql_test 1.4 { |
+ SELECT count(*) FROM t1 WHERE |
+ a == ( (b<<6) + (c<<5) + (d<<4) + (e<<3) + (f<<2) + (g<<1) + (h<<0) ) |
+} {128} |
+ |
+ |
+finish_test |
+ |