blob: a92e373536b9d4f43efb76a7cd7443c2fd45a300 [file] [log] [blame]
drhd60f4f42012-03-23 14:23:52 +00001# 2012 March 23
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#
13set testdir [file dirname $argv0]
14source $testdir/tester.tcl
15ifcapable {!incrblob} { finish_test ; return }
16set testprefix incrblob4
17
18proc create_t1 {} {
19 execsql {
20 PRAGMA page_size = 1024;
21 CREATE TABLE t1(k INTEGER PRIMARY KEY, v);
22 }
23}
24
25proc populate_t1 {} {
26 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]
27 foreach d $data {
28 set blob [string repeat $d 900]
29 execsql { INSERT INTO t1(v) VALUES($blob) }
30 }
31}
32
33
34do_test 1.1 {
35 create_t1
36 populate_t1
37} {}
38
39do_test 1.2 {
40 set blob [db incrblob t1 v 5]
41 read $blob 10
42} {eeeeeeeeee}
43
44do_test 1.3 {
45 execsql { DELETE FROM t1 }
46 populate_t1
47} {}
48
49
50
51do_test 2.1 {
52 reset_db
53 create_t1
54 populate_t1
55} {}
56
57do_test 2.2 {
58 set blob [db incrblob t1 v 10]
59 read $blob 10
60} {jjjjjjjjjj}
61
62do_test 2.3 {
63 set new [string repeat % 900]
64 execsql { DELETE FROM t1 WHERE k=10 }
65 execsql { DELETE FROM t1 WHERE k=9 }
66 execsql { INSERT INTO t1(v) VALUES($new) }
67} {}
68
69
70
71do_test 3.1 {
72 reset_db
73 create_t1
74 populate_t1
75} {}
76
77do_test 3.2 {
78 set blob [db incrblob t1 v 20]
79 read $blob 10
80} {tttttttttt}
81
82do_test 3.3 {
83 set new [string repeat % 900]
84 execsql { UPDATE t1 SET v = $new WHERE k = 20 }
85 execsql { DELETE FROM t1 WHERE k=19 }
86 execsql { INSERT INTO t1(v) VALUES($new) }
87} {}
88
89finish_test