/ Hex Artifact Content
Login

Artifact ea904b853ce2d703b16c5ce90e2b54951bc1ae81:


0000: 23 20 32 30 30 32 20 4e 6f 76 65 6d 62 65 72 20  # 2002 November 
0010: 33 30 0a 23 0a 23 20 54 68 65 20 61 75 74 68 6f  30.#.# The autho
0020: 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79  r disclaims copy
0030: 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f  right to this so
0040: 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70  urce code.  In p
0050: 6c 61 63 65 20 6f 66 0a 23 20 61 20 6c 65 67 61  lace of.# a lega
0060: 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69  l notice, here i
0070: 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a  s a blessing:.#.
0080: 23 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f 20  #    May you do 
0090: 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76 69  good and not evi
00a0: 6c 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20  l..#    May you 
00b0: 66 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73  find forgiveness
00c0: 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e   for yourself an
00d0: 64 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73  d forgive others
00e0: 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 73  ..#    May you s
00f0: 68 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76  hare freely, nev
0100: 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74  er taking more t
0110: 68 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a  han you give..#.
0120: 23 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 2a 0a 23 20 54 68 69 73 20  ********.# This 
0170: 66 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20  file implements 
0180: 72 65 67 72 65 73 73 69 6f 6e 20 74 65 73 74 73  regression tests
0190: 20 66 6f 72 20 53 51 4c 69 74 65 20 6c 69 62 72   for SQLite libr
01a0: 61 72 79 2e 20 20 54 68 65 0a 23 20 66 6f 63 75  ary.  The.# focu
01b0: 73 20 6f 66 20 74 68 69 73 20 73 63 72 69 70 74  s of this script
01c0: 20 74 65 73 74 69 6e 67 20 74 68 65 20 61 62 69   testing the abi
01d0: 6c 69 74 79 20 6f 66 20 53 51 4c 69 74 65 20 74  lity of SQLite t
01e0: 6f 20 68 61 6e 64 6c 65 20 64 61 74 61 62 61 73  o handle databas
01f0: 65 0a 23 20 66 69 6c 65 73 20 6c 61 72 67 65 72  e.# files larger
0200: 20 74 68 61 6e 20 34 47 42 2e 0a 23 0a 23 20 24   than 4GB..#.# $
0210: 49 64 3a 20 62 69 67 66 69 6c 65 2e 74 65 73 74  Id: bigfile.test
0220: 2c 76 20 31 2e 33 20 32 30 30 33 2f 31 32 2f 31  ,v 1.3 2003/12/1
0230: 39 20 31 32 3a 33 31 3a 32 32 20 64 72 68 20 45  9 12:31:22 drh E
0240: 78 70 20 24 0a 23 0a 0a 73 65 74 20 74 65 73 74  xp $.#..set test
0250: 64 69 72 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d  dir [file dirnam
0260: 65 20 24 61 72 67 76 30 5d 0a 73 6f 75 72 63 65  e $argv0].source
0270: 20 24 74 65 73 74 64 69 72 2f 74 65 73 74 65 72   $testdir/tester
0280: 2e 74 63 6c 0a 0a 23 20 54 68 65 73 65 20 74 65  .tcl..# These te
0290: 73 74 73 20 6f 6e 6c 79 20 77 6f 72 6b 20 66 6f  sts only work fo
02a0: 72 20 54 63 6c 20 76 65 72 73 69 6f 6e 20 38 2e  r Tcl version 8.
02b0: 34 20 61 6e 64 20 6c 61 74 65 72 2e 20 20 50 72  4 and later.  Pr
02c0: 69 6f 72 20 74 6f 20 38 2e 34 2c 0a 23 20 54 63  ior to 8.4,.# Tc
02d0: 6c 20 77 61 73 20 75 6e 61 62 6c 65 20 74 6f 20  l was unable to 
02e0: 68 61 6e 64 6c 65 20 6c 61 72 67 65 20 66 69 6c  handle large fil
02f0: 65 73 2e 0a 23 0a 73 63 61 6e 20 24 3a 3a 74 63  es..#.scan $::tc
0300: 6c 5f 76 65 72 73 69 6f 6e 20 25 66 20 76 78 0a  l_version %f vx.
0310: 69 66 20 7b 24 76 78 3c 38 2e 34 7d 20 72 65 74  if {$vx<8.4} ret
0320: 75 72 6e 0a 0a 23 20 54 68 69 73 20 69 73 20 74  urn..# This is t
0330: 68 65 20 6d 64 35 20 63 68 65 63 6b 73 75 6d 20  he md5 checksum 
0340: 6f 66 20 61 6c 6c 20 74 68 65 20 64 61 74 61 20  of all the data 
0350: 69 6e 20 74 61 62 6c 65 20 74 31 20 61 73 20 63  in table t1 as c
0360: 72 65 61 74 65 64 0a 23 20 62 79 20 74 68 65 20  reated.# by the 
0370: 66 69 72 73 74 20 74 65 73 74 2e 20 20 57 65 20  first test.  We 
0380: 77 69 6c 6c 20 75 73 65 20 74 68 69 73 20 6e 75  will use this nu
0390: 6d 62 65 72 20 74 6f 20 6d 61 6b 65 20 73 75 72  mber to make sur
03a0: 65 20 74 68 61 74 20 64 61 74 61 0a 23 20 6e 65  e that data.# ne
03b0: 76 65 72 20 63 68 61 6e 67 65 73 2e 0a 23 0a 73  ver changes..#.s
03c0: 65 74 20 4d 41 47 49 43 5f 53 55 4d 20 7b 35 39  et MAGIC_SUM {59
03d0: 33 66 31 65 66 63 66 64 62 65 36 39 38 63 32 38  3f1efcfdbe698c28
03e0: 62 34 62 31 62 36 39 33 66 37 65 34 63 66 7d 0a  b4b1b693f7e4cf}.
03f0: 0a 64 6f 5f 74 65 73 74 20 62 69 67 66 69 6c 65  .do_test bigfile
0400: 2d 31 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c  -1.1 {.  execsql
0410: 20 7b 0a 20 20 20 20 42 45 47 49 4e 3b 0a 20 20   {.    BEGIN;.  
0420: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74    CREATE TABLE t
0430: 31 28 78 29 3b 0a 20 20 20 20 49 4e 53 45 52 54  1(x);.    INSERT
0440: 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28   INTO t1 VALUES(
0450: 27 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f  'abcdefghijklmno
0460: 70 71 72 73 74 75 76 77 78 79 7a 27 29 3b 0a 20  pqrstuvwxyz');. 
0470: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
0480: 31 20 53 45 4c 45 43 54 20 72 6f 77 69 64 20 7c  1 SELECT rowid |
0490: 7c 20 27 20 27 20 7c 7c 20 78 20 46 52 4f 4d 20  | ' ' || x FROM 
04a0: 74 31 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  t1;.    INSERT I
04b0: 4e 54 4f 20 74 31 20 53 45 4c 45 43 54 20 72 6f  NTO t1 SELECT ro
04c0: 77 69 64 20 7c 7c 20 27 20 27 20 7c 7c 20 78 20  wid || ' ' || x 
04d0: 46 52 4f 4d 20 74 31 3b 0a 20 20 20 20 49 4e 53  FROM t1;.    INS
04e0: 45 52 54 20 49 4e 54 4f 20 74 31 20 53 45 4c 45  ERT INTO t1 SELE
04f0: 43 54 20 72 6f 77 69 64 20 7c 7c 20 27 20 27 20  CT rowid || ' ' 
0500: 7c 7c 20 78 20 46 52 4f 4d 20 74 31 3b 0a 20 20  || x FROM t1;.  
0510: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31    INSERT INTO t1
0520: 20 53 45 4c 45 43 54 20 72 6f 77 69 64 20 7c 7c   SELECT rowid ||
0530: 20 27 20 27 20 7c 7c 20 78 20 46 52 4f 4d 20 74   ' ' || x FROM t
0540: 31 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  1;.    INSERT IN
0550: 54 4f 20 74 31 20 53 45 4c 45 43 54 20 72 6f 77  TO t1 SELECT row
0560: 69 64 20 7c 7c 20 27 20 27 20 7c 7c 20 78 20 46  id || ' ' || x F
0570: 52 4f 4d 20 74 31 3b 0a 20 20 20 20 49 4e 53 45  ROM t1;.    INSE
0580: 52 54 20 49 4e 54 4f 20 74 31 20 53 45 4c 45 43  RT INTO t1 SELEC
0590: 54 20 72 6f 77 69 64 20 7c 7c 20 27 20 27 20 7c  T rowid || ' ' |
05a0: 7c 20 78 20 46 52 4f 4d 20 74 31 3b 0a 20 20 20  | x FROM t1;.   
05b0: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20   INSERT INTO t1 
05c0: 53 45 4c 45 43 54 20 72 6f 77 69 64 20 7c 7c 20  SELECT rowid || 
05d0: 27 20 27 20 7c 7c 20 78 20 46 52 4f 4d 20 74 31  ' ' || x FROM t1
05e0: 3b 0a 20 20 20 20 43 4f 4d 4d 49 54 3b 0a 20 20  ;.    COMMIT;.  
05f0: 7d 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  }.  execsql {.  
0600: 20 20 53 45 4c 45 43 54 20 6d 64 35 73 75 6d 28    SELECT md5sum(
0610: 78 29 20 46 52 4f 4d 20 74 31 3b 0a 20 20 7d 0a  x) FROM t1;.  }.
0620: 7d 20 24 3a 3a 4d 41 47 49 43 5f 53 55 4d 0a 0a  } $::MAGIC_SUM..
0630: 23 20 54 72 79 20 74 6f 20 63 72 65 61 74 65 20  # Try to create 
0640: 61 20 6c 61 72 67 65 20 66 69 6c 65 20 2d 20 61  a large file - a
0650: 20 66 69 6c 65 20 74 68 61 74 20 69 73 20 6c 61   file that is la
0660: 72 67 65 72 20 74 68 61 6e 20 32 5e 33 32 20 62  rger than 2^32 b
0670: 79 74 65 73 2e 0a 23 20 49 66 20 74 68 69 73 20  ytes..# If this 
0680: 66 61 69 6c 73 2c 20 69 74 20 6d 65 61 6e 73 20  fails, it means 
0690: 74 68 61 74 20 74 68 65 20 73 79 73 74 65 6d 20  that the system 
06a0: 62 65 69 6e 67 20 74 65 73 74 65 64 20 64 6f 65  being tested doe
06b0: 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 0a 23 20  s not support.# 
06c0: 6c 61 72 67 65 20 66 69 6c 65 73 2e 20 20 53 6f  large files.  So
06d0: 20 73 6b 69 70 20 61 6c 6c 20 6f 66 20 74 68 65   skip all of the
06e0: 20 72 65 6d 61 69 6e 69 6e 67 20 74 65 73 74 73   remaining tests
06f0: 20 69 6e 20 74 68 69 73 20 66 69 6c 65 2e 0a 23   in this file..#
0700: 0a 64 62 20 63 6c 6f 73 65 0a 69 66 20 7b 5b 63  .db close.if {[c
0710: 61 74 63 68 20 7b 66 61 6b 65 5f 62 69 67 5f 66  atch {fake_big_f
0720: 69 6c 65 20 34 30 39 36 20 74 65 73 74 2e 64 62  ile 4096 test.db
0730: 7d 5d 7d 20 7b 0a 20 20 70 75 74 73 20 22 2a 2a  }]} {.  puts "**
0740: 2a 2a 20 55 6e 61 62 6c 65 20 74 6f 20 63 72 65  ** Unable to cre
0750: 61 74 65 20 61 20 66 69 6c 65 20 6c 61 72 67 65  ate a file large
0760: 72 20 74 68 61 6e 20 34 30 39 36 20 4d 42 2e 20  r than 4096 MB. 
0770: 2a 2a 2a 2a 2a 22 0a 20 20 66 69 6e 69 73 68 5f  *****".  finish_
0780: 74 65 73 74 0a 20 20 72 65 74 75 72 6e 0a 7d 0a  test.  return.}.
0790: 0a 64 6f 5f 74 65 73 74 20 62 69 67 66 69 6c 65  .do_test bigfile
07a0: 2d 31 2e 32 20 7b 0a 20 20 73 71 6c 69 74 65 20  -1.2 {.  sqlite 
07b0: 64 62 20 74 65 73 74 2e 64 62 0a 20 20 65 78 65  db test.db.  exe
07c0: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
07d0: 54 20 6d 64 35 73 75 6d 28 78 29 20 46 52 4f 4d  T md5sum(x) FROM
07e0: 20 74 31 3b 0a 20 20 7d 0a 7d 20 24 3a 3a 4d 41   t1;.  }.} $::MA
07f0: 47 49 43 5f 53 55 4d 0a 0a 23 20 54 68 65 20 70  GIC_SUM..# The p
0800: 72 65 76 69 6f 75 73 20 74 65 73 74 20 6d 61 79  revious test may
0810: 20 66 61 69 6c 20 6f 6e 20 73 6f 6d 65 20 73 79   fail on some sy
0820: 73 74 65 6d 73 20 62 65 63 61 75 73 65 20 74 68  stems because th
0830: 65 79 20 61 72 65 20 75 6e 61 62 6c 65 0a 23 20  ey are unable.# 
0840: 74 6f 20 68 61 6e 64 6c 65 20 6c 61 72 67 65 20  to handle large 
0850: 66 69 6c 65 73 2e 20 20 49 66 20 74 68 61 74 20  files.  If that 
0860: 69 73 20 73 6f 2c 20 74 68 65 6e 20 73 6b 69 70  is so, then skip
0870: 20 61 6c 6c 20 6f 66 20 74 68 65 20 66 6f 6c 6c   all of the foll
0880: 6f 77 69 6e 67 0a 23 20 74 65 73 74 73 2e 20 20  owing.# tests.  
0890: 57 65 20 77 69 6c 6c 20 6b 6e 6f 77 20 74 68 65  We will know the
08a0: 20 61 62 6f 76 65 20 74 65 73 74 20 66 61 69 6c   above test fail
08b0: 65 64 20 62 65 63 61 75 73 65 20 74 68 65 20 22  ed because the "
08c0: 64 62 22 20 63 6f 6d 6d 61 6e 64 0a 23 20 64 6f  db" command.# do
08d0: 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 0a 23 0a  es not exist..#.
08e0: 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e  if {[llength [in
08f0: 66 6f 20 63 6f 6d 6d 61 6e 64 20 64 62 5d 5d 3e  fo command db]]>
0900: 30 7d 20 7b 0a 0a 64 6f 5f 74 65 73 74 20 62 69  0} {..do_test bi
0910: 67 66 69 6c 65 2d 31 2e 33 20 7b 0a 20 20 65 78  gfile-1.3 {.  ex
0920: 65 63 73 71 6c 20 7b 0a 20 20 20 20 43 52 45 41  ecsql {.    CREA
0930: 54 45 20 54 41 42 4c 45 20 74 32 20 41 53 20 53  TE TABLE t2 AS S
0940: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 3b  ELECT * FROM t1;
0950: 0a 20 20 20 20 53 45 4c 45 43 54 20 6d 64 35 73  .    SELECT md5s
0960: 75 6d 28 78 29 20 46 52 4f 4d 20 74 32 3b 0a 20  um(x) FROM t2;. 
0970: 20 7d 0a 7d 20 24 3a 3a 4d 41 47 49 43 5f 53 55   }.} $::MAGIC_SU
0980: 4d 0a 64 6f 5f 74 65 73 74 20 62 69 67 66 69 6c  M.do_test bigfil
0990: 65 2d 31 2e 34 20 7b 0a 20 20 64 62 20 63 6c 6f  e-1.4 {.  db clo
09a0: 73 65 0a 20 20 73 71 6c 69 74 65 20 64 62 20 74  se.  sqlite db t
09b0: 65 73 74 2e 64 62 0a 20 20 65 78 65 63 73 71 6c  est.db.  execsql
09c0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 6d 64   {.    SELECT md
09d0: 35 73 75 6d 28 78 29 20 46 52 4f 4d 20 74 31 3b  5sum(x) FROM t1;
09e0: 0a 20 20 7d 0a 7d 20 24 3a 3a 4d 41 47 49 43 5f  .  }.} $::MAGIC_
09f0: 53 55 4d 0a 64 6f 5f 74 65 73 74 20 62 69 67 66  SUM.do_test bigf
0a00: 69 6c 65 2d 31 2e 35 20 7b 0a 20 20 65 78 65 63  ile-1.5 {.  exec
0a10: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
0a20: 20 6d 64 35 73 75 6d 28 78 29 20 46 52 4f 4d 20   md5sum(x) FROM 
0a30: 74 32 3b 0a 20 20 7d 0a 7d 20 24 3a 3a 4d 41 47  t2;.  }.} $::MAG
0a40: 49 43 5f 53 55 4d 0a 0a 64 62 20 63 6c 6f 73 65  IC_SUM..db close
0a50: 0a 69 66 20 7b 5b 63 61 74 63 68 20 7b 66 61 6b  .if {[catch {fak
0a60: 65 5f 62 69 67 5f 66 69 6c 65 20 38 31 39 32 20  e_big_file 8192 
0a70: 74 65 73 74 2e 64 62 7d 5d 7d 20 7b 0a 20 20 70  test.db}]} {.  p
0a80: 75 74 73 20 22 2a 2a 2a 2a 20 55 6e 61 62 6c 65  uts "**** Unable
0a90: 20 74 6f 20 63 72 65 61 74 65 20 61 20 66 69 6c   to create a fil
0aa0: 65 20 6c 61 72 67 65 72 20 74 68 61 6e 20 38 31  e larger than 81
0ab0: 39 32 20 4d 42 2e 20 2a 2a 2a 2a 2a 22 0a 20 20  92 MB. *****".  
0ac0: 66 69 6e 69 73 68 5f 74 65 73 74 0a 20 20 72 65  finish_test.  re
0ad0: 74 75 72 6e 0a 7d 0a 0a 64 6f 5f 74 65 73 74 20  turn.}..do_test 
0ae0: 62 69 67 66 69 6c 65 2d 31 2e 36 20 7b 0a 20 20  bigfile-1.6 {.  
0af0: 73 71 6c 69 74 65 20 64 62 20 74 65 73 74 2e 64  sqlite db test.d
0b00: 62 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  b.  execsql {.  
0b10: 20 20 53 45 4c 45 43 54 20 6d 64 35 73 75 6d 28    SELECT md5sum(
0b20: 78 29 20 46 52 4f 4d 20 74 31 3b 0a 20 20 7d 0a  x) FROM t1;.  }.
0b30: 7d 20 24 3a 3a 4d 41 47 49 43 5f 53 55 4d 0a 64  } $::MAGIC_SUM.d
0b40: 6f 5f 74 65 73 74 20 62 69 67 66 69 6c 65 2d 31  o_test bigfile-1
0b50: 2e 37 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .7 {.  execsql {
0b60: 0a 20 20 20 20 43 52 45 41 54 45 20 54 41 42 4c  .    CREATE TABL
0b70: 45 20 74 33 20 41 53 20 53 45 4c 45 43 54 20 2a  E t3 AS SELECT *
0b80: 20 46 52 4f 4d 20 74 31 3b 0a 20 20 20 20 53 45   FROM t1;.    SE
0b90: 4c 45 43 54 20 6d 64 35 73 75 6d 28 78 29 20 46  LECT md5sum(x) F
0ba0: 52 4f 4d 20 74 33 3b 0a 20 20 7d 0a 7d 20 24 3a  ROM t3;.  }.} $:
0bb0: 3a 4d 41 47 49 43 5f 53 55 4d 0a 64 6f 5f 74 65  :MAGIC_SUM.do_te
0bc0: 73 74 20 62 69 67 66 69 6c 65 2d 31 2e 38 20 7b  st bigfile-1.8 {
0bd0: 0a 20 20 64 62 20 63 6c 6f 73 65 0a 20 20 73 71  .  db close.  sq
0be0: 6c 69 74 65 20 64 62 20 74 65 73 74 2e 64 62 0a  lite db test.db.
0bf0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
0c00: 53 45 4c 45 43 54 20 6d 64 35 73 75 6d 28 78 29  SELECT md5sum(x)
0c10: 20 46 52 4f 4d 20 74 31 3b 0a 20 20 7d 0a 7d 20   FROM t1;.  }.} 
0c20: 24 3a 3a 4d 41 47 49 43 5f 53 55 4d 0a 64 6f 5f  $::MAGIC_SUM.do_
0c30: 74 65 73 74 20 62 69 67 66 69 6c 65 2d 31 2e 39  test bigfile-1.9
0c40: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
0c50: 20 20 20 53 45 4c 45 43 54 20 6d 64 35 73 75 6d     SELECT md5sum
0c60: 28 78 29 20 46 52 4f 4d 20 74 32 3b 0a 20 20 7d  (x) FROM t2;.  }
0c70: 0a 7d 20 24 3a 3a 4d 41 47 49 43 5f 53 55 4d 0a  .} $::MAGIC_SUM.
0c80: 64 6f 5f 74 65 73 74 20 62 69 67 66 69 6c 65 2d  do_test bigfile-
0c90: 31 2e 31 30 20 7b 0a 20 20 65 78 65 63 73 71 6c  1.10 {.  execsql
0ca0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 6d 64   {.    SELECT md
0cb0: 35 73 75 6d 28 78 29 20 46 52 4f 4d 20 74 33 3b  5sum(x) FROM t3;
0cc0: 0a 20 20 7d 0a 7d 20 24 3a 3a 4d 41 47 49 43 5f  .  }.} $::MAGIC_
0cd0: 53 55 4d 0a 0a 64 62 20 63 6c 6f 73 65 0a 69 66  SUM..db close.if
0ce0: 20 7b 5b 63 61 74 63 68 20 7b 66 61 6b 65 5f 62   {[catch {fake_b
0cf0: 69 67 5f 66 69 6c 65 20 31 36 33 38 34 20 74 65  ig_file 16384 te
0d00: 73 74 2e 64 62 7d 5d 7d 20 7b 0a 20 20 70 75 74  st.db}]} {.  put
0d10: 73 20 22 2a 2a 2a 2a 20 55 6e 61 62 6c 65 20 74  s "**** Unable t
0d20: 6f 20 63 72 65 61 74 65 20 61 20 66 69 6c 65 20  o create a file 
0d30: 6c 61 72 67 65 72 20 74 68 61 6e 20 31 36 33 38  larger than 1638
0d40: 34 20 4d 42 2e 20 2a 2a 2a 2a 2a 22 0a 20 20 66  4 MB. *****".  f
0d50: 69 6e 69 73 68 5f 74 65 73 74 0a 20 20 72 65 74  inish_test.  ret
0d60: 75 72 6e 0a 7d 0a 0a 64 6f 5f 74 65 73 74 20 62  urn.}..do_test b
0d70: 69 67 66 69 6c 65 2d 31 2e 31 31 20 7b 0a 20 20  igfile-1.11 {.  
0d80: 73 71 6c 69 74 65 20 64 62 20 74 65 73 74 2e 64  sqlite db test.d
0d90: 62 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  b.  execsql {.  
0da0: 20 20 53 45 4c 45 43 54 20 6d 64 35 73 75 6d 28    SELECT md5sum(
0db0: 78 29 20 46 52 4f 4d 20 74 31 3b 0a 20 20 7d 0a  x) FROM t1;.  }.
0dc0: 7d 20 24 3a 3a 4d 41 47 49 43 5f 53 55 4d 0a 64  } $::MAGIC_SUM.d
0dd0: 6f 5f 74 65 73 74 20 62 69 67 66 69 6c 65 2d 31  o_test bigfile-1
0de0: 2e 31 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .12 {.  execsql 
0df0: 7b 0a 20 20 20 20 43 52 45 41 54 45 20 54 41 42  {.    CREATE TAB
0e00: 4c 45 20 74 34 20 41 53 20 53 45 4c 45 43 54 20  LE t4 AS SELECT 
0e10: 2a 20 46 52 4f 4d 20 74 31 3b 0a 20 20 20 20 53  * FROM t1;.    S
0e20: 45 4c 45 43 54 20 6d 64 35 73 75 6d 28 78 29 20  ELECT md5sum(x) 
0e30: 46 52 4f 4d 20 74 34 3b 0a 20 20 7d 0a 7d 20 24  FROM t4;.  }.} $
0e40: 3a 3a 4d 41 47 49 43 5f 53 55 4d 0a 64 6f 5f 74  ::MAGIC_SUM.do_t
0e50: 65 73 74 20 62 69 67 66 69 6c 65 2d 31 2e 31 33  est bigfile-1.13
0e60: 20 7b 0a 20 20 64 62 20 63 6c 6f 73 65 0a 20 20   {.  db close.  
0e70: 73 71 6c 69 74 65 20 64 62 20 74 65 73 74 2e 64  sqlite db test.d
0e80: 62 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  b.  execsql {.  
0e90: 20 20 53 45 4c 45 43 54 20 6d 64 35 73 75 6d 28    SELECT md5sum(
0ea0: 78 29 20 46 52 4f 4d 20 74 31 3b 0a 20 20 7d 0a  x) FROM t1;.  }.
0eb0: 7d 20 24 3a 3a 4d 41 47 49 43 5f 53 55 4d 0a 64  } $::MAGIC_SUM.d
0ec0: 6f 5f 74 65 73 74 20 62 69 67 66 69 6c 65 2d 31  o_test bigfile-1
0ed0: 2e 31 34 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .14 {.  execsql 
0ee0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 6d 64 35  {.    SELECT md5
0ef0: 73 75 6d 28 78 29 20 46 52 4f 4d 20 74 32 3b 0a  sum(x) FROM t2;.
0f00: 20 20 7d 0a 7d 20 24 3a 3a 4d 41 47 49 43 5f 53    }.} $::MAGIC_S
0f10: 55 4d 0a 64 6f 5f 74 65 73 74 20 62 69 67 66 69  UM.do_test bigfi
0f20: 6c 65 2d 31 2e 31 35 20 7b 0a 20 20 65 78 65 63  le-1.15 {.  exec
0f30: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
0f40: 20 6d 64 35 73 75 6d 28 78 29 20 46 52 4f 4d 20   md5sum(x) FROM 
0f50: 74 33 3b 0a 20 20 7d 0a 7d 20 24 3a 3a 4d 41 47  t3;.  }.} $::MAG
0f60: 49 43 5f 53 55 4d 0a 64 6f 5f 74 65 73 74 20 62  IC_SUM.do_test b
0f70: 69 67 66 69 6c 65 2d 31 2e 31 36 20 7b 0a 20 20  igfile-1.16 {.  
0f80: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
0f90: 4c 45 43 54 20 6d 64 35 73 75 6d 28 78 29 20 46  LECT md5sum(x) F
0fa0: 52 4f 4d 20 74 33 3b 0a 20 20 7d 0a 7d 20 24 3a  ROM t3;.  }.} $:
0fb0: 3a 4d 41 47 49 43 5f 53 55 4d 0a 0a 7d 20 3b 23  :MAGIC_SUM..} ;#
0fc0: 20 45 6e 64 20 6f 66 20 74 68 65 20 22 69 66 28   End of the "if(
0fd0: 20 64 62 20 63 6f 6d 6d 61 6e 64 20 65 78 69 73   db command exis
0fe0: 74 73 20 29 22 0a 0a 66 69 6e 69 73 68 5f 74 65  ts )"..finish_te
0ff0: 73 74 0a                                         st.