/ Hex Artifact Content
Login

Artifact 439a945953b35cb6948a552edaec4dc31fd70a05:


0000: 23 20 32 30 31 34 20 4f 63 74 6f 62 65 72 20 33  # 2014 October 3
0010: 30 0a 23 0a 23 20 54 68 65 20 61 75 74 68 6f 72  0.#.# The author
0020: 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72   disclaims copyr
0030: 69 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75  ight to this sou
0040: 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c  rce code.  In pl
0050: 61 63 65 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c  ace of.# a legal
0060: 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69 73   notice, here is
0070: 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23   a blessing:.#.#
0080: 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f 20 67      May you do g
0090: 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c  ood and not evil
00a0: 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 66  ..#    May you f
00b0: 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73 20  ind forgiveness 
00c0: 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e 64  for yourself and
00d0: 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73 2e   forgive others.
00e0: 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 73 68  .#    May you sh
00f0: 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76 65  are freely, neve
0100: 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68  r taking more th
0110: 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23  an you give..#.#
0120: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 2a 0a 23 0a 0a 73 65 74 20 74  *******.#..set t
0170: 65 73 74 64 69 72 20 5b 66 69 6c 65 20 64 69 72  estdir [file dir
0180: 6e 61 6d 65 20 24 61 72 67 76 30 5d 0a 73 6f 75  name $argv0].sou
0190: 72 63 65 20 24 74 65 73 74 64 69 72 2f 74 65 73  rce $testdir/tes
01a0: 74 65 72 2e 74 63 6c 0a 73 65 74 20 74 65 73 74  ter.tcl.set test
01b0: 70 72 65 66 69 78 20 65 5f 62 6c 6f 62 62 79 74  prefix e_blobbyt
01c0: 65 73 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  es..do_execsql_t
01d0: 65 73 74 20 31 2e 30 20 7b 0a 20 20 43 52 45 41  est 1.0 {.  CREA
01e0: 54 45 20 54 41 42 4c 45 20 71 31 28 72 20 49 4e  TE TABLE q1(r IN
01f0: 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
0200: 59 2c 20 73 20 54 45 58 54 29 3b 0a 20 20 57 49  Y, s TEXT);.  WI
0210: 54 48 20 64 28 61 2c 20 62 29 20 41 53 20 28 0a  TH d(a, b) AS (.
0220: 20 20 20 20 53 45 4c 45 43 54 20 30 2c 20 27 27      SELECT 0, ''
0230: 20 0a 20 20 20 20 20 20 55 4e 49 4f 4e 20 41 4c   .      UNION AL
0240: 4c 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2b 31  L.    SELECT a+1
0250: 2c 20 62 7c 7c 27 2e 27 20 46 52 4f 4d 20 64 20  , b||'.' FROM d 
0260: 57 48 45 52 45 20 61 3c 31 30 30 30 30 0a 20 20  WHERE a<10000.  
0270: 29 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  ).  INSERT INTO 
0280: 71 31 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  q1 SELECT * FROM
0290: 20 64 3b 0a 7d 0a 0a 0a 23 20 45 56 49 44 45 4e   d;.}...# EVIDEN
02a0: 43 45 2d 4f 46 3a 20 52 2d 30 37 37 39 36 2d 35  CE-OF: R-07796-5
02b0: 35 34 32 33 20 52 65 74 75 72 6e 73 20 74 68 65  5423 Returns the
02c0: 20 73 69 7a 65 20 69 6e 20 62 79 74 65 73 20 6f   size in bytes o
02d0: 66 20 74 68 65 20 42 4c 4f 42 0a 23 20 61 63 63  f the BLOB.# acc
02e0: 65 73 73 69 62 6c 65 20 76 69 61 20 74 68 65 20  essible via the 
02f0: 73 75 63 63 65 73 73 66 75 6c 6c 79 20 6f 70 65  successfully ope
0300: 6e 65 64 20 42 4c 4f 42 20 68 61 6e 64 6c 65 20  ned BLOB handle 
0310: 69 6e 20 69 74 73 20 6f 6e 6c 79 0a 23 20 61 72  in its only.# ar
0320: 67 75 6d 65 6e 74 2e 0a 23 0a 70 72 6f 63 20 63  gument..#.proc c
0330: 68 65 63 6b 5f 62 6c 6f 62 5f 73 69 7a 65 20 7b  heck_blob_size {
0340: 74 6e 20 72 6f 77 69 64 20 62 79 74 65 73 7d 20  tn rowid bytes} 
0350: 7b 0a 20 20 75 70 6c 65 76 65 6c 20 5b 6c 69 73  {.  uplevel [lis
0360: 74 20 64 6f 5f 74 65 73 74 20 24 74 6e 20 5b 73  t do_test $tn [s
0370: 75 62 73 74 20 2d 6e 6f 63 6f 6d 6d 61 6e 64 73  ubst -nocommands
0380: 20 7b 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 62   {.    sqlite3_b
0390: 6c 6f 62 5f 6f 70 65 6e 20 64 62 20 6d 61 69 6e  lob_open db main
03a0: 20 71 31 20 73 20 24 72 6f 77 69 64 20 30 20 42   q1 s $rowid 0 B
03b0: 0a 20 20 20 20 73 65 74 20 72 65 73 20 5b 73 71  .    set res [sq
03c0: 6c 69 74 65 33 5f 62 6c 6f 62 5f 62 79 74 65 73  lite3_blob_bytes
03d0: 20 5b 73 65 74 20 42 5d 5d 0a 20 20 20 20 73 71   [set B]].    sq
03e0: 6c 69 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65  lite3_blob_close
03f0: 20 5b 73 65 74 20 42 5d 0a 20 20 20 20 73 65 74   [set B].    set
0400: 20 72 65 73 0a 20 20 7d 5d 20 24 62 79 74 65 73   res.  }] $bytes
0410: 5d 0a 7d 0a 63 68 65 63 6b 5f 62 6c 6f 62 5f 73  ].}.check_blob_s
0420: 69 7a 65 20 31 2e 31 20 34 33 20 34 33 0a 63 68  ize 1.1 43 43.ch
0430: 65 63 6b 5f 62 6c 6f 62 5f 73 69 7a 65 20 31 2e  eck_blob_size 1.
0440: 32 20 33 39 31 20 33 39 31 0a 63 68 65 63 6b 5f  2 391 391.check_
0450: 62 6c 6f 62 5f 73 69 7a 65 20 31 2e 33 20 36 33  blob_size 1.3 63
0460: 34 39 20 36 33 34 39 0a 63 68 65 63 6b 5f 62 6c  49 6349.check_bl
0470: 6f 62 5f 73 69 7a 65 20 31 2e 34 20 32 36 32 31  ob_size 1.4 2621
0480: 20 32 36 32 31 0a 63 68 65 63 6b 5f 62 6c 6f 62   2621.check_blob
0490: 5f 73 69 7a 65 20 31 2e 35 20 37 37 37 31 20 37  _size 1.5 7771 7
04a0: 37 37 31 0a 63 68 65 63 6b 5f 62 6c 6f 62 5f 73  771.check_blob_s
04b0: 69 7a 65 20 31 2e 36 20 37 39 34 39 20 37 39 34  ize 1.6 7949 794
04c0: 39 0a 63 68 65 63 6b 5f 62 6c 6f 62 5f 73 69 7a  9.check_blob_siz
04d0: 65 20 31 2e 37 20 34 33 37 34 20 34 33 37 34 0a  e 1.7 4374 4374.
04e0: 63 68 65 63 6b 5f 62 6c 6f 62 5f 73 69 7a 65 20  check_blob_size 
04f0: 31 2e 38 20 32 35 37 38 20 32 35 37 38 0a 63 68  1.8 2578 2578.ch
0500: 65 63 6b 5f 62 6c 6f 62 5f 73 69 7a 65 20 31 2e  eck_blob_size 1.
0510: 39 20 37 30 30 34 20 37 30 30 34 0a 63 68 65 63  9 7004 7004.chec
0520: 6b 5f 62 6c 6f 62 5f 73 69 7a 65 20 31 2e 31 30  k_blob_size 1.10
0530: 20 32 31 38 30 20 32 31 38 30 0a 63 68 65 63 6b   2180 2180.check
0540: 5f 62 6c 6f 62 5f 73 69 7a 65 20 31 2e 31 31 20  _blob_size 1.11 
0550: 33 37 39 36 20 33 37 39 36 0a 63 68 65 63 6b 5f  3796 3796.check_
0560: 62 6c 6f 62 5f 73 69 7a 65 20 31 2e 31 32 20 37  blob_size 1.12 7
0570: 31 30 31 20 37 31 30 31 0a 63 68 65 63 6b 5f 62  101 7101.check_b
0580: 6c 6f 62 5f 73 69 7a 65 20 31 2e 31 33 20 37 34  lob_size 1.13 74
0590: 34 39 20 37 34 34 39 0a 63 68 65 63 6b 5f 62 6c  49 7449.check_bl
05a0: 6f 62 5f 73 69 7a 65 20 31 2e 31 34 20 37 32 32  ob_size 1.14 722
05b0: 34 20 37 32 32 34 0a 63 68 65 63 6b 5f 62 6c 6f  4 7224.check_blo
05c0: 62 5f 73 69 7a 65 20 31 2e 31 35 20 33 30 33 38  b_size 1.15 3038
05d0: 20 33 30 33 38 0a 63 68 65 63 6b 5f 62 6c 6f 62   3038.check_blob
05e0: 5f 73 69 7a 65 20 31 2e 31 36 20 31 30 38 33 20  _size 1.16 1083 
05f0: 31 30 38 33 0a 63 68 65 63 6b 5f 62 6c 6f 62 5f  1083.check_blob_
0600: 73 69 7a 65 20 31 2e 31 37 20 35 31 35 37 20 35  size 1.17 5157 5
0610: 31 35 37 0a 63 68 65 63 6b 5f 62 6c 6f 62 5f 73  157.check_blob_s
0620: 69 7a 65 20 31 2e 31 38 20 36 36 38 36 20 36 36  ize 1.18 6686 66
0630: 38 36 0a 63 68 65 63 6b 5f 62 6c 6f 62 5f 73 69  86.check_blob_si
0640: 7a 65 20 31 2e 31 39 20 36 35 39 32 20 36 35 39  ze 1.19 6592 659
0650: 32 0a 63 68 65 63 6b 5f 62 6c 6f 62 5f 73 69 7a  2.check_blob_siz
0660: 65 20 31 2e 32 30 20 30 20 30 0a 0a 0a 23 20 45  e 1.20 0 0...# E
0670: 56 49 44 45 4e 43 45 2d 4f 46 3a 20 52 2d 35 33  VIDENCE-OF: R-53
0680: 30 38 38 2d 31 39 33 34 33 20 54 68 65 20 69 6e  088-19343 The in
0690: 63 72 65 6d 65 6e 74 61 6c 20 62 6c 6f 62 20 49  cremental blob I
06a0: 2f 4f 20 72 6f 75 74 69 6e 65 73 20 63 61 6e 20  /O routines can 
06b0: 6f 6e 6c 79 0a 23 20 72 65 61 64 20 6f 72 20 6f  only.# read or o
06c0: 76 65 72 77 72 69 74 69 6e 67 20 65 78 69 73 74  verwriting exist
06d0: 69 6e 67 20 62 6c 6f 62 20 63 6f 6e 74 65 6e 74  ing blob content
06e0: 3b 20 74 68 65 79 20 63 61 6e 6e 6f 74 20 63 68  ; they cannot ch
06f0: 61 6e 67 65 20 74 68 65 20 73 69 7a 65 0a 23 20  ange the size.# 
0700: 6f 66 20 61 20 62 6c 6f 62 2e 0a 23 0a 23 20 20  of a blob..#.#  
0710: 20 41 6c 73 6f 20 64 65 6d 6f 6e 73 74 72 61 74   Also demonstrat
0720: 65 64 20 69 6e 20 6f 74 68 65 72 20 65 5f 62 6c  ed in other e_bl
0730: 6f 62 58 58 58 2e 74 65 73 74 20 66 69 6c 65 73  obXXX.test files
0740: 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 32 2e 31 20  ..#.do_test 2.1 
0750: 7b 0a 20 20 73 71 6c 69 74 65 33 5f 62 6c 6f 62  {.  sqlite3_blob
0760: 5f 6f 70 65 6e 20 64 62 20 6d 61 69 6e 20 71 31  _open db main q1
0770: 20 73 20 38 36 20 31 20 42 0a 20 20 6c 69 73 74   s 86 1 B.  list
0780: 20 5b 63 61 74 63 68 20 7b 20 73 71 6c 69 74 65   [catch { sqlite
0790: 33 5f 62 6c 6f 62 5f 77 72 69 74 65 20 24 42 20  3_blob_write $B 
07a0: 38 36 20 22 31 22 20 31 20 7d 20 6d 73 67 5d 20  86 "1" 1 } msg] 
07b0: 24 6d 73 67 0a 7d 20 7b 31 20 53 51 4c 49 54 45  $msg.} {1 SQLITE
07c0: 5f 45 52 52 4f 52 7d 0a 73 71 6c 69 74 65 33 5f  _ERROR}.sqlite3_
07d0: 62 6c 6f 62 5f 63 6c 6f 73 65 20 24 42 0a 0a 66  blob_close $B..f
07e0: 69 6e 69 73 68 5f 74 65 73 74 0a                 inish_test.