/ Hex Artifact Content
Login

Artifact a0fc9e965d039c4de24f9af929f9a25eb8be8539:


0000: 23 20 32 30 30 38 20 41 75 67 75 73 74 20 32 39  # 2008 August 29
0010: 0a 23 0a 23 20 54 68 65 20 61 75 74 68 6f 72 20  .#.# The author 
0020: 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69  disclaims copyri
0030: 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72  ght to this sour
0040: 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61  ce code.  In pla
0050: 63 65 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c 20  ce of.# a legal 
0060: 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69 73 20  notice, here is 
0070: 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23 20  a blessing:.#.# 
0080: 20 20 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f     May you do go
0090: 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e  od and not evil.
00a0: 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69  .#    May you fi
00b0: 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66  nd forgiveness f
00c0: 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20  or yourself and 
00d0: 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a  forgive others..
00e0: 23 20 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61  #    May you sha
00f0: 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72  re freely, never
0100: 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61   taking more tha
0110: 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23 2a  n 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 0a 23 0a 23 20 54 68 69 73 20  ******.#.# This 
0170: 66 69 6c 65 20 69 73 20 66 6f 63 75 73 65 64 20  file is focused 
0180: 6f 6e 20 74 65 73 74 69 6e 67 20 74 68 65 20 70  on testing the p
0190: 63 61 63 68 65 20 6d 6f 64 75 6c 65 2e 0a 23 0a  cache module..#.
01a0: 23 20 24 49 64 3a 20 70 63 61 63 68 65 2e 74 65  # $Id: pcache.te
01b0: 73 74 2c 76 20 31 2e 31 20 32 30 30 38 2f 30 38  st,v 1.1 2008/08
01c0: 2f 32 39 20 30 39 3a 31 30 3a 30 33 20 64 61 6e  /29 09:10:03 dan
01d0: 69 65 6c 6b 31 39 37 37 20 45 78 70 20 24 0a 0a  ielk1977 Exp $..
01e0: 73 65 74 20 74 65 73 74 64 69 72 20 5b 66 69 6c  set testdir [fil
01f0: 65 20 64 69 72 6e 61 6d 65 20 24 61 72 67 76 30  e dirname $argv0
0200: 5d 0a 73 6f 75 72 63 65 20 24 74 65 73 74 64 69  ].source $testdi
0210: 72 2f 74 65 73 74 65 72 2e 74 63 6c 0a 0a 0a 23  r/tester.tcl...#
0220: 20 54 68 65 20 70 63 61 63 68 65 20 6d 6f 64 75   The pcache modu
0230: 6c 65 20 6c 69 6d 69 74 73 20 74 68 65 20 6e 75  le limits the nu
0240: 6d 62 65 72 20 6f 66 20 70 61 67 65 73 20 61 76  mber of pages av
0250: 61 69 6c 61 62 6c 65 20 74 6f 20 70 75 72 67 65  ailable to purge
0260: 61 62 6c 65 0a 23 20 63 61 63 68 65 73 20 74 6f  able.# caches to
0270: 20 74 68 65 20 73 75 6d 20 6f 66 20 74 68 65 20   the sum of the 
0280: 27 63 61 63 68 65 5f 73 69 7a 65 27 20 76 61 6c  'cache_size' val
0290: 75 65 73 20 66 6f 72 20 74 68 65 20 73 65 74 20  ues for the set 
02a0: 6f 66 20 6f 70 65 6e 0a 23 20 63 61 63 68 65 73  of open.# caches
02b0: 2e 20 54 68 69 73 20 62 6c 6f 63 6b 20 6f 66 20  . This block of 
02c0: 74 65 73 74 73 2c 20 70 63 61 63 68 65 2d 31 2e  tests, pcache-1.
02d0: 2a 2c 20 74 65 73 74 20 74 68 61 74 20 74 68 65  *, test that the
02e0: 20 6c 69 62 72 61 72 79 20 62 65 68 61 76 65 73   library behaves
02f0: 0a 23 20 63 6f 72 72 63 74 6c 79 20 77 68 65 6e  .# corrctly when
0300: 20 69 74 20 69 73 20 66 6f 72 63 65 64 20 74 6f   it is forced to
0310: 20 65 78 63 65 65 64 20 74 68 69 73 20 6c 69 6d   exceed this lim
0320: 69 74 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 70 63  it..#.do_test pc
0330: 61 63 68 65 2d 31 2e 31 20 7b 0a 20 20 64 62 20  ache-1.1 {.  db 
0340: 63 6c 6f 73 65 0a 20 20 70 63 61 63 68 65 5f 73  close.  pcache_s
0350: 74 61 74 73 0a 7d 20 7b 63 75 72 72 65 6e 74 20  tats.} {current 
0360: 30 20 6d 61 78 20 30 20 6d 69 6e 20 30 20 72 65  0 max 0 min 0 re
0370: 63 79 63 6c 61 62 6c 65 20 30 7d 0a 0a 64 6f 5f  cyclable 0}..do_
0380: 74 65 73 74 20 70 63 61 63 68 65 2d 31 2e 32 20  test pcache-1.2 
0390: 7b 0a 20 20 73 71 6c 69 74 65 33 20 64 62 20 74  {.  sqlite3 db t
03a0: 65 73 74 2e 64 62 0a 20 20 65 78 65 63 73 71 6c  est.db.  execsql
03b0: 20 22 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73   "PRAGMA cache_s
03c0: 69 7a 65 3d 31 30 22 0a 20 20 70 63 61 63 68 65  ize=10".  pcache
03d0: 5f 73 74 61 74 73 0a 7d 20 7b 63 75 72 72 65 6e  _stats.} {curren
03e0: 74 20 31 20 6d 61 78 20 31 30 20 6d 69 6e 20 31  t 1 max 10 min 1
03f0: 30 20 72 65 63 79 63 6c 61 62 6c 65 20 31 7d 0a  0 recyclable 1}.
0400: 0a 64 6f 5f 74 65 73 74 20 70 63 61 63 68 65 2d  .do_test pcache-
0410: 31 2e 33 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  1.3 {.  execsql 
0420: 7b 0a 20 20 20 20 42 45 47 49 4e 3b 0a 20 20 20  {.    BEGIN;.   
0430: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 31   CREATE TABLE t1
0440: 28 61 2c 20 62 2c 20 63 29 3b 0a 20 20 20 20 43  (a, b, c);.    C
0450: 52 45 41 54 45 20 54 41 42 4c 45 20 74 32 28 61  REATE TABLE t2(a
0460: 2c 20 62 2c 20 63 29 3b 0a 20 20 20 20 43 52 45  , b, c);.    CRE
0470: 41 54 45 20 54 41 42 4c 45 20 74 33 28 61 2c 20  ATE TABLE t3(a, 
0480: 62 2c 20 63 29 3b 0a 20 20 20 20 43 52 45 41 54  b, c);.    CREAT
0490: 45 20 54 41 42 4c 45 20 74 34 28 61 2c 20 62 2c  E TABLE t4(a, b,
04a0: 20 63 29 3b 0a 20 20 20 20 43 52 45 41 54 45 20   c);.    CREATE 
04b0: 54 41 42 4c 45 20 74 35 28 61 2c 20 62 2c 20 63  TABLE t5(a, b, c
04c0: 29 3b 0a 20 20 7d 0a 20 20 70 63 61 63 68 65 5f  );.  }.  pcache_
04d0: 73 74 61 74 73 0a 7d 20 7b 63 75 72 72 65 6e 74  stats.} {current
04e0: 20 36 20 6d 61 78 20 31 30 20 6d 69 6e 20 31 30   6 max 10 min 10
04f0: 20 72 65 63 79 63 6c 61 62 6c 65 20 30 7d 0a 0a   recyclable 0}..
0500: 64 6f 5f 74 65 73 74 20 70 63 61 63 68 65 2d 31  do_test pcache-1
0510: 2e 34 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .4 {.  execsql {
0520: 0a 20 20 20 20 43 52 45 41 54 45 20 54 41 42 4c  .    CREATE TABL
0530: 45 20 74 36 28 61 2c 20 62 2c 20 63 29 3b 0a 20  E t6(a, b, c);. 
0540: 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20     CREATE TABLE 
0550: 74 37 28 61 2c 20 62 2c 20 63 29 3b 0a 20 20 20  t7(a, b, c);.   
0560: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 38   CREATE TABLE t8
0570: 28 61 2c 20 62 2c 20 63 29 3b 0a 20 20 20 20 43  (a, b, c);.    C
0580: 52 45 41 54 45 20 54 41 42 4c 45 20 74 39 28 61  REATE TABLE t9(a
0590: 2c 20 62 2c 20 63 29 3b 0a 20 20 7d 0a 20 20 70  , b, c);.  }.  p
05a0: 63 61 63 68 65 5f 73 74 61 74 73 0a 7d 20 7b 63  cache_stats.} {c
05b0: 75 72 72 65 6e 74 20 31 30 20 6d 61 78 20 31 30  urrent 10 max 10
05c0: 20 6d 69 6e 20 31 30 20 72 65 63 79 63 6c 61 62   min 10 recyclab
05d0: 6c 65 20 30 7d 0a 0a 64 6f 5f 74 65 73 74 20 70  le 0}..do_test p
05e0: 63 61 63 68 65 2d 31 2e 35 20 7b 0a 20 20 73 71  cache-1.5 {.  sq
05f0: 6c 69 74 65 33 20 64 62 32 20 74 65 73 74 2e 64  lite3 db2 test.d
0600: 62 0a 20 20 65 78 65 63 73 71 6c 20 22 50 52 41  b.  execsql "PRA
0610: 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 3d 31  GMA cache_size=1
0620: 30 22 20 64 62 32 0a 20 20 70 63 61 63 68 65 5f  0" db2.  pcache_
0630: 73 74 61 74 73 0a 7d 20 7b 63 75 72 72 65 6e 74  stats.} {current
0640: 20 31 31 20 6d 61 78 20 32 30 20 6d 69 6e 20 32   11 max 20 min 2
0650: 30 20 72 65 63 79 63 6c 61 62 6c 65 20 31 7d 0a  0 recyclable 1}.
0660: 0a 64 6f 5f 74 65 73 74 20 70 63 61 63 68 65 2d  .do_test pcache-
0670: 31 2e 36 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  1.6 {.  execsql 
0680: 7b 0a 20 20 20 20 42 45 47 49 4e 3b 0a 20 20 20  {.    BEGIN;.   
0690: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 73   SELECT * FROM s
06a0: 71 6c 69 74 65 5f 6d 61 73 74 65 72 3b 0a 20 20  qlite_master;.  
06b0: 7d 20 64 62 32 0a 20 20 70 63 61 63 68 65 5f 73  } db2.  pcache_s
06c0: 74 61 74 73 0a 7d 20 7b 63 75 72 72 65 6e 74 20  tats.} {current 
06d0: 31 31 20 6d 61 78 20 32 30 20 6d 69 6e 20 32 30  11 max 20 min 20
06e0: 20 72 65 63 79 63 6c 61 62 6c 65 20 30 7d 0a 0a   recyclable 0}..
06f0: 23 20 41 74 20 74 68 69 73 20 70 6f 69 6e 74 20  # At this point 
0700: 63 6f 6e 6e 65 63 74 69 6f 6e 20 64 62 32 20 68  connection db2 h
0710: 61 73 20 61 20 72 65 61 64 20 6c 6f 63 6b 20 6f  as a read lock o
0720: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  n the database f
0730: 69 6c 65 20 61 6e 64 20 61 20 0a 23 20 73 69 6e  ile and a .# sin
0740: 67 6c 65 20 70 69 6e 6e 65 64 20 70 61 67 65 20  gle pinned page 
0750: 69 6e 20 69 74 73 20 63 61 63 68 65 2e 20 43 6f  in its cache. Co
0760: 6e 6e 65 63 74 69 6f 6e 20 5b 64 62 5d 20 69 73  nnection [db] is
0770: 20 68 6f 6c 64 69 6e 67 20 31 30 20 64 69 72 74   holding 10 dirt
0780: 79 20 0a 23 20 70 61 67 65 73 2e 20 49 74 20 63  y .# pages. It c
0790: 61 6e 6e 6f 74 20 72 65 63 79 63 6c 65 20 74 68  annot recycle th
07a0: 65 6d 20 62 65 63 61 75 73 65 20 6f 66 20 74 68  em because of th
07b0: 65 20 72 65 61 64 20 6c 6f 63 6b 20 68 65 6c 64  e read lock held
07c0: 20 62 79 20 64 62 32 2e 0a 23 0a 64 6f 5f 74 65   by db2..#.do_te
07d0: 73 74 20 70 63 61 63 68 65 2d 31 2e 36 20 7b 0a  st pcache-1.6 {.
07e0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
07f0: 43 52 45 41 54 45 20 49 4e 44 45 58 20 69 31 20  CREATE INDEX i1 
0800: 4f 4e 20 74 31 28 61 2c 20 62 29 3b 0a 20 20 20  ON t1(a, b);.   
0810: 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 69 32   CREATE INDEX i2
0820: 20 4f 4e 20 74 32 28 61 2c 20 62 29 3b 0a 20 20   ON t2(a, b);.  
0830: 20 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 69    CREATE INDEX i
0840: 33 20 4f 4e 20 74 33 28 61 2c 20 62 29 3b 0a 20  3 ON t3(a, b);. 
0850: 20 20 20 43 52 45 41 54 45 20 49 4e 44 45 58 20     CREATE INDEX 
0860: 69 34 20 4f 4e 20 74 34 28 61 2c 20 62 29 3b 0a  i4 ON t4(a, b);.
0870: 20 20 20 20 43 52 45 41 54 45 20 49 4e 44 45 58      CREATE INDEX
0880: 20 69 35 20 4f 4e 20 74 35 28 61 2c 20 62 29 3b   i5 ON t5(a, b);
0890: 0a 20 20 20 20 43 52 45 41 54 45 20 49 4e 44 45  .    CREATE INDE
08a0: 58 20 69 36 20 4f 4e 20 74 36 28 61 2c 20 62 29  X i6 ON t6(a, b)
08b0: 3b 0a 20 20 20 20 43 52 45 41 54 45 20 49 4e 44  ;.    CREATE IND
08c0: 45 58 20 69 37 20 4f 4e 20 74 37 28 61 2c 20 62  EX i7 ON t7(a, b
08d0: 29 3b 0a 20 20 20 20 43 52 45 41 54 45 20 49 4e  );.    CREATE IN
08e0: 44 45 58 20 69 38 20 4f 4e 20 74 38 28 61 2c 20  DEX i8 ON t8(a, 
08f0: 62 29 3b 0a 20 20 20 20 43 52 45 41 54 45 20 49  b);.    CREATE I
0900: 4e 44 45 58 20 69 39 20 4f 4e 20 74 39 28 61 2c  NDEX i9 ON t9(a,
0910: 20 62 29 3b 0a 20 20 7d 20 0a 20 20 70 63 61 63   b);.  } .  pcac
0920: 68 65 5f 73 74 61 74 73 0a 7d 20 7b 63 75 72 72  he_stats.} {curr
0930: 65 6e 74 20 32 30 20 6d 61 78 20 32 30 20 6d 69  ent 20 max 20 mi
0940: 6e 20 32 30 20 72 65 63 79 63 6c 61 62 6c 65 20  n 20 recyclable 
0950: 30 7d 0a 0a 64 6f 5f 74 65 73 74 20 70 63 61 63  0}..do_test pcac
0960: 68 65 2d 31 2e 37 20 7b 0a 20 20 65 78 65 63 73  he-1.7 {.  execs
0970: 71 6c 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20  ql {.    CREATE 
0980: 54 41 42 4c 45 20 74 31 30 28 61 2c 20 62 2c 20  TABLE t10(a, b, 
0990: 63 29 3b 0a 20 20 7d 20 0a 20 20 70 63 61 63 68  c);.  } .  pcach
09a0: 65 5f 73 74 61 74 73 0a 7d 20 7b 63 75 72 72 65  e_stats.} {curre
09b0: 6e 74 20 32 31 20 6d 61 78 20 32 30 20 6d 69 6e  nt 21 max 20 min
09c0: 20 32 30 20 72 65 63 79 63 6c 61 62 6c 65 20 30   20 recyclable 0
09d0: 7d 0a 0a 23 20 52 6f 6c 6c 69 6e 67 20 62 61 63  }..# Rolling bac
09e0: 6b 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  k the transactio
09f0: 6e 20 68 65 6c 64 20 62 79 20 64 62 32 20 61 74  n held by db2 at
0a00: 20 74 68 69 73 20 70 6f 69 6e 74 20 72 65 6c 65   this point rele
0a10: 61 73 65 73 20 61 20 70 69 6e 6e 65 64 0a 23 20  ases a pinned.# 
0a20: 70 61 67 65 2e 20 42 65 63 61 75 73 65 20 74 68  page. Because th
0a30: 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 6c 6c 6f  e number of allo
0a40: 63 61 74 65 64 20 70 61 67 65 73 20 69 73 20 67  cated pages is g
0a50: 72 65 61 74 65 72 20 74 68 61 6e 20 74 68 65 20  reater than the 
0a60: 0a 23 20 63 6f 6e 66 69 67 75 72 65 64 20 6d 61  .# configured ma
0a70: 78 69 6d 75 6d 2c 20 74 68 69 73 20 70 61 67 65  ximum, this page
0a80: 20 73 68 6f 75 6c 64 20 62 65 20 66 72 65 65 64   should be freed
0a90: 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 69 6e 73   immediately ins
0aa0: 74 65 61 64 20 6f 66 0a 23 20 72 65 63 79 63 6c  tead of.# recycl
0ab0: 65 64 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 70 63  ed..#.do_test pc
0ac0: 61 63 68 65 2d 31 2e 38 20 7b 0a 20 20 65 78 65  ache-1.8 {.  exe
0ad0: 63 73 71 6c 20 7b 52 4f 4c 4c 42 41 43 4b 7d 20  csql {ROLLBACK} 
0ae0: 64 62 32 0a 20 20 70 63 61 63 68 65 5f 73 74 61  db2.  pcache_sta
0af0: 74 73 0a 7d 20 7b 63 75 72 72 65 6e 74 20 32 30  ts.} {current 20
0b00: 20 6d 61 78 20 32 30 20 6d 69 6e 20 32 30 20 72   max 20 min 20 r
0b10: 65 63 79 63 6c 61 62 6c 65 20 30 7d 0a 0a 64 6f  ecyclable 0}..do
0b20: 5f 74 65 73 74 20 70 63 61 63 68 65 2d 31 2e 39  _test pcache-1.9
0b30: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 43 4f 4d   {.  execsql COM
0b40: 4d 49 54 0a 20 20 70 63 61 63 68 65 5f 73 74 61  MIT.  pcache_sta
0b50: 74 73 0a 7d 20 7b 63 75 72 72 65 6e 74 20 32 30  ts.} {current 20
0b60: 20 6d 61 78 20 32 30 20 6d 69 6e 20 32 30 20 72   max 20 min 20 r
0b70: 65 63 79 63 6c 61 62 6c 65 20 32 30 7d 0a 0a 64  ecyclable 20}..d
0b80: 6f 5f 74 65 73 74 20 70 63 61 63 68 65 2d 31 2e  o_test pcache-1.
0b90: 31 30 20 7b 0a 20 20 64 62 32 20 63 6c 6f 73 65  10 {.  db2 close
0ba0: 0a 20 20 70 63 61 63 68 65 5f 73 74 61 74 73 0a  .  pcache_stats.
0bb0: 7d 20 7b 63 75 72 72 65 6e 74 20 31 30 20 6d 61  } {current 10 ma
0bc0: 78 20 31 30 20 6d 69 6e 20 31 30 20 72 65 63 79  x 10 min 10 recy
0bd0: 63 6c 61 62 6c 65 20 31 30 7d 0a 0a 64 6f 5f 74  clable 10}..do_t
0be0: 65 73 74 20 70 63 61 63 68 65 2d 31 2e 31 31 20  est pcache-1.11 
0bf0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 20 50 52  {.  execsql { PR
0c00: 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 20  AGMA cache_size 
0c10: 3d 20 32 30 20 7d 0a 20 20 70 63 61 63 68 65 5f  = 20 }.  pcache_
0c20: 73 74 61 74 73 0a 7d 20 7b 63 75 72 72 65 6e 74  stats.} {current
0c30: 20 31 30 20 6d 61 78 20 32 30 20 6d 69 6e 20 31   10 max 20 min 1
0c40: 30 20 72 65 63 79 63 6c 61 62 6c 65 20 31 30 7d  0 recyclable 10}
0c50: 0a 0a 64 6f 5f 74 65 73 74 20 70 63 61 63 68 65  ..do_test pcache
0c60: 2d 31 2e 31 32 20 7b 0a 20 20 65 78 65 63 73 71  -1.12 {.  execsq
0c70: 6c 20 7b 20 0a 20 20 20 20 53 45 4c 45 43 54 20  l { .    SELECT 
0c80: 2a 20 46 52 4f 4d 20 74 31 20 4f 52 44 45 52 20  * FROM t1 ORDER 
0c90: 42 59 20 61 3b 20 53 45 4c 45 43 54 20 2a 20 46  BY a; SELECT * F
0ca0: 52 4f 4d 20 74 31 3b 0a 20 20 20 20 53 45 4c 45  ROM t1;.    SELE
0cb0: 43 54 20 2a 20 46 52 4f 4d 20 74 32 20 4f 52 44  CT * FROM t2 ORD
0cc0: 45 52 20 42 59 20 61 3b 20 53 45 4c 45 43 54 20  ER BY a; SELECT 
0cd0: 2a 20 46 52 4f 4d 20 74 32 3b 0a 20 20 20 20 53  * FROM t2;.    S
0ce0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 33 20  ELECT * FROM t3 
0cf0: 4f 52 44 45 52 20 42 59 20 61 3b 20 53 45 4c 45  ORDER BY a; SELE
0d00: 43 54 20 2a 20 46 52 4f 4d 20 74 33 3b 0a 20 20  CT * FROM t3;.  
0d10: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
0d20: 74 34 20 4f 52 44 45 52 20 42 59 20 61 3b 20 53  t4 ORDER BY a; S
0d30: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 34 3b  ELECT * FROM t4;
0d40: 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52  .    SELECT * FR
0d50: 4f 4d 20 74 35 20 4f 52 44 45 52 20 42 59 20 61  OM t5 ORDER BY a
0d60: 3b 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ; SELECT * FROM 
0d70: 74 35 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a  t5;.    SELECT *
0d80: 20 46 52 4f 4d 20 74 36 20 4f 52 44 45 52 20 42   FROM t6 ORDER B
0d90: 59 20 61 3b 20 53 45 4c 45 43 54 20 2a 20 46 52  Y a; SELECT * FR
0da0: 4f 4d 20 74 36 3b 0a 20 20 20 20 53 45 4c 45 43  OM t6;.    SELEC
0db0: 54 20 2a 20 46 52 4f 4d 20 74 37 20 4f 52 44 45  T * FROM t7 ORDE
0dc0: 52 20 42 59 20 61 3b 20 53 45 4c 45 43 54 20 2a  R BY a; SELECT *
0dd0: 20 46 52 4f 4d 20 74 37 3b 0a 20 20 20 20 53 45   FROM t7;.    SE
0de0: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 38 20 4f  LECT * FROM t8 O
0df0: 52 44 45 52 20 42 59 20 61 3b 20 53 45 4c 45 43  RDER BY a; SELEC
0e00: 54 20 2a 20 46 52 4f 4d 20 74 38 3b 0a 20 20 20  T * FROM t8;.   
0e10: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
0e20: 39 20 4f 52 44 45 52 20 42 59 20 61 3b 20 53 45  9 ORDER BY a; SE
0e30: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 39 3b 0a  LECT * FROM t9;.
0e40: 20 20 7d 0a 20 20 70 63 61 63 68 65 5f 73 74 61    }.  pcache_sta
0e50: 74 73 0a 7d 20 7b 63 75 72 72 65 6e 74 20 31 39  ts.} {current 19
0e60: 20 6d 61 78 20 32 30 20 6d 69 6e 20 31 30 20 72   max 20 min 10 r
0e70: 65 63 79 63 6c 61 62 6c 65 20 31 39 7d 0a 0a 64  ecyclable 19}..d
0e80: 6f 5f 74 65 73 74 20 70 63 61 63 68 65 2d 31 2e  o_test pcache-1.
0e90: 31 33 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  13 {.  execsql {
0ea0: 20 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69   PRAGMA cache_si
0eb0: 7a 65 20 3d 20 31 35 20 7d 0a 20 20 70 63 61 63  ze = 15 }.  pcac
0ec0: 68 65 5f 73 74 61 74 73 0a 7d 20 7b 63 75 72 72  he_stats.} {curr
0ed0: 65 6e 74 20 31 35 20 6d 61 78 20 31 35 20 6d 69  ent 15 max 15 mi
0ee0: 6e 20 31 30 20 72 65 63 79 63 6c 61 62 6c 65 20  n 10 recyclable 
0ef0: 31 35 7d 0a 0a 66 69 6e 69 73 68 5f 74 65 73 74  15}..finish_test
0f00: 0a 0a                                            ..