Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(51)

Side by Side Diff: third_party/sqlite/sqlite-src-3080704/test/incrblob_err.test

Issue 2363173002: [sqlite] Remove obsolete reference version 3.8.7.4. (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # 2007 May 1
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 # $Id: incrblob_err.test,v 1.14 2008/07/18 17:16:27 drh Exp $
13 #
14
15 set testdir [file dirname $argv0]
16 source $testdir/tester.tcl
17 set ::testprefix incrblob_err
18
19 ifcapable {!incrblob || !memdebug || !tclvar} {
20 finish_test
21 return
22 }
23
24 source $testdir/malloc_common.tcl
25
26 unset -nocomplain ::fd ::data
27 set ::fd [open [info script]]
28 set ::data [read $::fd]
29 close $::fd
30
31 do_malloc_test 1 -tclprep {
32 set bytes [file size [info script]]
33 execsql {
34 CREATE TABLE blobs(k, v BLOB);
35 INSERT INTO blobs VALUES(1, zeroblob($::bytes));
36 }
37 } -tclbody {
38 set ::blob [db incrblob blobs v 1]
39 fconfigure $::blob -translation binary
40 set rc [catch {puts -nonewline $::blob $::data}]
41 if {$rc} { error "out of memory" }
42 }
43
44 do_malloc_test 2 -tclprep {
45 execsql {
46 CREATE TABLE blobs(k, v BLOB);
47 INSERT INTO blobs VALUES(1, $::data);
48 }
49 } -tclbody {
50 set ::blob [db incrblob blobs v 1]
51 set rc [catch {set ::r [read $::blob]}]
52 if {$rc} {
53 error "out of memory"
54 } elseif {$::r ne $::data} {
55 error "Bad data read..."
56 }
57 }
58
59 do_malloc_test 3 -tclprep {
60 execsql {
61 CREATE TABLE blobs(k, v BLOB);
62 INSERT INTO blobs VALUES(1, $::data);
63 }
64 } -tclbody {
65 set ::blob [db incrblob blobs v 1]
66 set rc [catch {set ::r [read $::blob]}]
67 if {$rc} {
68 error "out of memory"
69 } elseif {$::r ne $::data} {
70 error "Bad data read..."
71 }
72 set rc [catch {close $::blob}]
73 if {$rc} {
74 error "out of memory"
75 }
76 }
77
78 do_ioerr_test incrblob_err-4 -cksum 1 -sqlprep {
79 CREATE TABLE blobs(k, v BLOB);
80 INSERT INTO blobs VALUES(1, $::data);
81 } -tclbody {
82 set ::blob [db incrblob blobs v 1]
83 read $::blob
84 }
85
86 do_ioerr_test incrblob_err-5 -cksum 1 -sqlprep {
87 CREATE TABLE blobs(k, v BLOB);
88 INSERT INTO blobs VALUES(1, zeroblob(length(CAST($::data AS BLOB))));
89 } -tclbody {
90 set ::blob [db incrblob blobs v 1]
91 fconfigure $::blob -translation binary
92 puts -nonewline $::blob $::data
93 close $::blob
94 }
95
96 do_ioerr_test incrblob_err-6 -cksum 1 -sqlprep {
97 CREATE TABLE blobs(k, v BLOB);
98 INSERT INTO blobs VALUES(1, $::data || $::data || $::data);
99 } -tclbody {
100 set ::blob [db incrblob blobs v 1]
101 fconfigure $::blob -translation binary
102 seek $::blob -20 end
103 puts -nonewline $::blob "12345678900987654321"
104 close $::blob
105 }
106
107 do_ioerr_test incrblob_err-7 -cksum 1 -sqlprep {
108 PRAGMA auto_vacuum = 1;
109 CREATE TABLE blobs(k INTEGER PRIMARY KEY, v BLOB);
110 INSERT INTO blobs VALUES(1, zeroblob(500 * 1020));
111 } -tclbody {
112 # Read some data from the end of the large blob inserted into table
113 # "blobs". This forces the IO error to occur while reading a pointer
114 # map page for the purposes of seeking to the end of the blob.
115 #
116 sqlite3 db2 test.db
117 set ::blob [db2 incrblob blobs v 1]
118 sqlite3_blob_read $::blob [expr 500*1020-20] 20
119 close $::blob
120 }
121 catch {db2 close}
122
123 do_ioerr_test incrblob_err-8 -cksum 1 -sqlprep {
124 PRAGMA auto_vacuum = 1;
125 CREATE TABLE blobs(k INTEGER PRIMARY KEY, v BLOB);
126 INSERT INTO blobs VALUES(1, zeroblob(500 * 1020));
127 } -tclbody {
128 # Read some data from the end of the large blob inserted into table
129 # "blobs". This forces the IO error to occur while reading a pointer
130 # map page for the purposes of seeking to the end of the blob.
131 #
132 sqlite3 db2 test.db
133 set ::blob [db2 incrblob blobs v 1]
134 sqlite3_blob_write $::blob [expr 500*1020-20] 12345678900987654321
135 close $::blob
136 }
137
138 catch {db2 close}
139
140 finish_test
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698