xref: /sqlite-3.40.0/test/e_blobbytes.test (revision a32536b4)
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