000001 # 2014 October 30 000002 # 000003 # The author disclaims copyright to this source code. In place of 000004 # a legal notice, here is a blessing: 000005 # 000006 # May you do good and not evil. 000007 # May you find forgiveness for yourself and forgive others. 000008 # May you share freely, never taking more than you give. 000009 # 000010 #*********************************************************************** 000011 # 000012 000013 set testdir [file dirname $argv0] 000014 source $testdir/tester.tcl 000015 set testprefix e_blobbytes 000016 000017 do_execsql_test 1.0 { 000018 CREATE TABLE q1(r INTEGER PRIMARY KEY, s TEXT); 000019 WITH d(a, b) AS ( 000020 SELECT 0, '' 000021 UNION ALL 000022 SELECT a+1, b||'.' FROM d WHERE a<10000 000023 ) 000024 INSERT INTO q1 SELECT * FROM d; 000025 } 000026 000027 000028 # EVIDENCE-OF: R-07796-55423 Returns the size in bytes of the BLOB 000029 # accessible via the successfully opened BLOB handle in its only 000030 # argument. 000031 # 000032 proc check_blob_size {tn rowid bytes} { 000033 uplevel [list do_test $tn [subst -nocommands { 000034 sqlite3_blob_open db main q1 s $rowid 0 B 000035 set res [sqlite3_blob_bytes [set B]] 000036 sqlite3_blob_close [set B] 000037 set res 000038 }] $bytes] 000039 } 000040 check_blob_size 1.1 43 43 000041 check_blob_size 1.2 391 391 000042 check_blob_size 1.3 6349 6349 000043 check_blob_size 1.4 2621 2621 000044 check_blob_size 1.5 7771 7771 000045 check_blob_size 1.6 7949 7949 000046 check_blob_size 1.7 4374 4374 000047 check_blob_size 1.8 2578 2578 000048 check_blob_size 1.9 7004 7004 000049 check_blob_size 1.10 2180 2180 000050 check_blob_size 1.11 3796 3796 000051 check_blob_size 1.12 7101 7101 000052 check_blob_size 1.13 7449 7449 000053 check_blob_size 1.14 7224 7224 000054 check_blob_size 1.15 3038 3038 000055 check_blob_size 1.16 1083 1083 000056 check_blob_size 1.17 5157 5157 000057 check_blob_size 1.18 6686 6686 000058 check_blob_size 1.19 6592 6592 000059 check_blob_size 1.20 0 0 000060 000061 000062 # EVIDENCE-OF: R-53088-19343 The incremental blob I/O routines can only 000063 # read or overwriting existing blob content; they cannot change the size 000064 # of a blob. 000065 # 000066 # Also demonstrated in other e_blobXXX.test files. 000067 # 000068 do_test 2.1 { 000069 sqlite3_blob_open db main q1 s 86 1 B 000070 list [catch { sqlite3_blob_write $B 86 "1" 1 } msg] $msg 000071 } {1 SQLITE_ERROR} 000072 sqlite3_blob_close $B 000073 000074 finish_test