| # 2012 March 23 |
| # |
| # 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. |
| # |
| #*********************************************************************** |
| # |
| # |
| set testdir [file dirname $argv0] |
| source $testdir/tester.tcl |
| ifcapable {!incrblob} { finish_test ; return } |
| set testprefix incrblob4 |
| |
| proc create_t1 {} { |
| execsql { |
| PRAGMA page_size = 1024; |
| CREATE TABLE t1(k INTEGER PRIMARY KEY, v); |
| } |
| } |
| |
| proc populate_t1 {} { |
| set data [list a b c d e f g h i j k l m n o p q r s t u v w x y z] |
| foreach d $data { |
| set blob [string repeat $d 900] |
| execsql { INSERT INTO t1(v) VALUES($blob) } |
| } |
| } |
| |
| |
| do_test 1.1 { |
| create_t1 |
| populate_t1 |
| } {} |
| |
| do_test 1.2 { |
| set blob [db incrblob t1 v 5] |
| read $blob 10 |
| } {eeeeeeeeee} |
| |
| do_test 1.3 { |
| execsql { DELETE FROM t1 } |
| populate_t1 |
| } {} |
| |
| |
| |
| do_test 2.1 { |
| reset_db |
| create_t1 |
| populate_t1 |
| } {} |
| |
| do_test 2.2 { |
| set blob [db incrblob t1 v 10] |
| read $blob 10 |
| } {jjjjjjjjjj} |
| |
| do_test 2.3 { |
| set new [string repeat % 900] |
| execsql { DELETE FROM t1 WHERE k=10 } |
| execsql { DELETE FROM t1 WHERE k=9 } |
| execsql { INSERT INTO t1(v) VALUES($new) } |
| } {} |
| |
| |
| |
| do_test 3.1 { |
| reset_db |
| create_t1 |
| populate_t1 |
| } {} |
| |
| do_test 3.2 { |
| set blob [db incrblob t1 v 20] |
| read $blob 10 |
| } {tttttttttt} |
| |
| do_test 3.3 { |
| set new [string repeat % 900] |
| execsql { UPDATE t1 SET v = $new WHERE k = 20 } |
| execsql { DELETE FROM t1 WHERE k=19 } |
| execsql { INSERT INTO t1(v) VALUES($new) } |
| } {} |
| |
| finish_test |