12d8e3caaSdan# 2014 October 30 22d8e3caaSdan# 32d8e3caaSdan# The author disclaims copyright to this source code. In place of 42d8e3caaSdan# a legal notice, here is a blessing: 52d8e3caaSdan# 62d8e3caaSdan# May you do good and not evil. 72d8e3caaSdan# May you find forgiveness for yourself and forgive others. 82d8e3caaSdan# May you share freely, never taking more than you give. 92d8e3caaSdan# 102d8e3caaSdan#*********************************************************************** 112d8e3caaSdan# 122d8e3caaSdan 132d8e3caaSdanset testdir [file dirname $argv0] 142d8e3caaSdansource $testdir/tester.tcl 152d8e3caaSdanset testprefix e_blobbytes 162d8e3caaSdan 17*a32536b4Sdanifcapable !incrblob { 18*a32536b4Sdan finish_test 19*a32536b4Sdan return 20*a32536b4Sdan} 21*a32536b4Sdan 222d8e3caaSdando_execsql_test 1.0 { 232d8e3caaSdan CREATE TABLE q1(r INTEGER PRIMARY KEY, s TEXT); 242d8e3caaSdan WITH d(a, b) AS ( 252d8e3caaSdan SELECT 0, '' 262d8e3caaSdan UNION ALL 272d8e3caaSdan SELECT a+1, b||'.' FROM d WHERE a<10000 282d8e3caaSdan ) 292d8e3caaSdan INSERT INTO q1 SELECT * FROM d; 302d8e3caaSdan} 312d8e3caaSdan 322d8e3caaSdan 332d8e3caaSdan# EVIDENCE-OF: R-07796-55423 Returns the size in bytes of the BLOB 342d8e3caaSdan# accessible via the successfully opened BLOB handle in its only 352d8e3caaSdan# argument. 362d8e3caaSdan# 372d8e3caaSdanproc check_blob_size {tn rowid bytes} { 382d8e3caaSdan uplevel [list do_test $tn [subst -nocommands { 392d8e3caaSdan sqlite3_blob_open db main q1 s $rowid 0 B 402d8e3caaSdan set res [sqlite3_blob_bytes [set B]] 412d8e3caaSdan sqlite3_blob_close [set B] 422d8e3caaSdan set res 432d8e3caaSdan }] $bytes] 442d8e3caaSdan} 452d8e3caaSdancheck_blob_size 1.1 43 43 462d8e3caaSdancheck_blob_size 1.2 391 391 472d8e3caaSdancheck_blob_size 1.3 6349 6349 482d8e3caaSdancheck_blob_size 1.4 2621 2621 492d8e3caaSdancheck_blob_size 1.5 7771 7771 502d8e3caaSdancheck_blob_size 1.6 7949 7949 512d8e3caaSdancheck_blob_size 1.7 4374 4374 522d8e3caaSdancheck_blob_size 1.8 2578 2578 532d8e3caaSdancheck_blob_size 1.9 7004 7004 542d8e3caaSdancheck_blob_size 1.10 2180 2180 552d8e3caaSdancheck_blob_size 1.11 3796 3796 562d8e3caaSdancheck_blob_size 1.12 7101 7101 572d8e3caaSdancheck_blob_size 1.13 7449 7449 582d8e3caaSdancheck_blob_size 1.14 7224 7224 592d8e3caaSdancheck_blob_size 1.15 3038 3038 602d8e3caaSdancheck_blob_size 1.16 1083 1083 612d8e3caaSdancheck_blob_size 1.17 5157 5157 622d8e3caaSdancheck_blob_size 1.18 6686 6686 632d8e3caaSdancheck_blob_size 1.19 6592 6592 642d8e3caaSdancheck_blob_size 1.20 0 0 652d8e3caaSdan 662d8e3caaSdan 672d8e3caaSdan# EVIDENCE-OF: R-53088-19343 The incremental blob I/O routines can only 682d8e3caaSdan# read or overwriting existing blob content; they cannot change the size 692d8e3caaSdan# of a blob. 702d8e3caaSdan# 712d8e3caaSdan# Also demonstrated in other e_blobXXX.test files. 722d8e3caaSdan# 732d8e3caaSdando_test 2.1 { 742d8e3caaSdan sqlite3_blob_open db main q1 s 86 1 B 752d8e3caaSdan list [catch { sqlite3_blob_write $B 86 "1" 1 } msg] $msg 762d8e3caaSdan} {1 SQLITE_ERROR} 772d8e3caaSdansqlite3_blob_close $B 782d8e3caaSdan 792d8e3caaSdanfinish_test 80