/ Hex Artifact Content
Login

Artifact 7480f4eb87c9883e0db47b97b57e23ee565f4248:


0000: 23 20 32 30 30 38 20 41 75 67 75 73 74 20 30 31  # 2008 August 01
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 65 73 74 73  ******.#.# Tests
0170: 20 66 6f 72 20 74 68 65 20 6c 6f 6f 6b 61 73 69   for the lookasi
0180: 64 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  de memory alloca
0190: 74 6f 72 2e 0a 23 0a 23 20 24 49 64 3a 20 6c 6f  tor..#.# $Id: lo
01a0: 6f 6b 61 73 69 64 65 2e 74 65 73 74 2c 76 20 31  okaside.test,v 1
01b0: 2e 31 20 32 30 30 38 2f 30 38 2f 30 31 20 31 36  .1 2008/08/01 16
01c0: 3a 33 31 3a 31 34 20 64 72 68 20 45 78 70 20 24  :31:14 drh Exp $
01d0: 0a 0a 73 65 74 20 74 65 73 74 64 69 72 20 5b 66  ..set testdir [f
01e0: 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 61 72 67  ile dirname $arg
01f0: 76 30 5d 0a 73 6f 75 72 63 65 20 24 74 65 73 74  v0].source $test
0200: 64 69 72 2f 74 65 73 74 65 72 2e 74 63 6c 0a 0a  dir/tester.tcl..
0210: 23 20 4d 61 6b 65 20 73 75 72 65 20 73 71 6c 69  # Make sure sqli
0220: 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29 20  te3_db_config() 
0230: 61 6e 64 20 73 71 6c 69 74 65 33 5f 64 62 5f 73  and sqlite3_db_s
0240: 74 61 74 75 73 20 61 72 65 20 77 6f 72 6b 69 6e  tatus are workin
0250: 67 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 6c 6f 6f  g..#.do_test loo
0260: 6b 61 73 69 64 65 2d 31 2e 31 20 7b 0a 20 20 63  kaside-1.1 {.  c
0270: 61 74 63 68 20 7b 73 71 6c 69 74 65 33 5f 63 6f  atch {sqlite3_co
0280: 6e 66 69 67 5f 65 72 72 6f 72 20 64 62 7d 0a 7d  nfig_error db}.}
0290: 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 6c 6f 6f   {0}.do_test loo
02a0: 6b 61 73 69 64 65 2d 31 2e 32 20 7b 0a 20 20 73  kaside-1.2 {.  s
02b0: 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67  qlite3_db_config
02c0: 5f 6c 6f 6f 6b 61 73 69 64 65 20 64 62 20 32 30  _lookaside db 20
02d0: 20 32 30 0a 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73   20.} {0}.do_tes
02e0: 74 20 6c 6f 6f 6b 61 73 69 64 65 2d 31 2e 33 20  t lookaside-1.3 
02f0: 7b 0a 20 20 73 71 6c 69 74 65 33 5f 64 62 5f 73  {.  sqlite3_db_s
0300: 74 61 74 75 73 20 64 62 20 53 51 4c 49 54 45 5f  tatus db SQLITE_
0310: 44 42 53 54 41 54 55 53 5f 4c 4f 4f 4b 41 53 49  DBSTATUS_LOOKASI
0320: 44 45 5f 55 53 45 44 20 30 0a 7d 20 7b 30 20 30  DE_USED 0.} {0 0
0330: 20 30 7d 0a 64 6f 5f 74 65 73 74 20 6c 6f 6f 6b   0}.do_test look
0340: 61 73 69 64 65 2d 31 2e 34 20 7b 0a 20 20 64 62  aside-1.4 {.  db
0350: 20 65 76 61 6c 20 7b 43 52 45 41 54 45 20 54 41   eval {CREATE TA
0360: 42 4c 45 20 74 31 28 78 29 3b 7d 0a 20 20 73 71  BLE t1(x);}.  sq
0370: 6c 69 74 65 33 5f 64 62 5f 73 74 61 74 75 73 20  lite3_db_status 
0380: 64 62 20 53 51 4c 49 54 45 5f 44 42 53 54 41 54  db SQLITE_DBSTAT
0390: 55 53 5f 4c 4f 4f 4b 41 53 49 44 45 5f 55 53 45  US_LOOKASIDE_USE
03a0: 44 20 30 0a 7d 20 7b 30 20 37 20 32 30 7d 0a 64  D 0.} {0 7 20}.d
03b0: 6f 5f 74 65 73 74 20 6c 6f 6f 6b 61 73 69 64 65  o_test lookaside
03c0: 2d 31 2e 35 20 7b 0a 20 20 73 71 6c 69 74 65 33  -1.5 {.  sqlite3
03d0: 5f 64 62 5f 73 74 61 74 75 73 20 64 62 20 53 51  _db_status db SQ
03e0: 4c 49 54 45 5f 44 42 53 54 41 54 55 53 5f 4c 4f  LITE_DBSTATUS_LO
03f0: 4f 4b 41 53 49 44 45 5f 55 53 45 44 20 31 0a 7d  OKASIDE_USED 1.}
0400: 20 7b 30 20 37 20 32 30 7d 0a 64 6f 5f 74 65 73   {0 7 20}.do_tes
0410: 74 20 6c 6f 6f 6b 61 73 69 64 65 2d 31 2e 36 20  t lookaside-1.6 
0420: 7b 0a 20 20 73 71 6c 69 74 65 33 5f 64 62 5f 73  {.  sqlite3_db_s
0430: 74 61 74 75 73 20 64 62 20 53 51 4c 49 54 45 5f  tatus db SQLITE_
0440: 44 42 53 54 41 54 55 53 5f 4c 4f 4f 4b 41 53 49  DBSTATUS_LOOKASI
0450: 44 45 5f 55 53 45 44 20 30 0a 7d 20 7b 30 20 37  DE_USED 0.} {0 7
0460: 20 37 7d 0a 64 6f 5f 74 65 73 74 20 6c 6f 6f 6b   7}.do_test look
0470: 61 73 69 64 65 2d 31 2e 37 20 7b 0a 20 20 64 62  aside-1.7 {.  db
0480: 20 63 61 63 68 65 20 66 6c 75 73 68 0a 20 20 73   cache flush.  s
0490: 71 6c 69 74 65 33 5f 64 62 5f 73 74 61 74 75 73  qlite3_db_status
04a0: 20 64 62 20 53 51 4c 49 54 45 5f 44 42 53 54 41   db SQLITE_DBSTA
04b0: 54 55 53 5f 4c 4f 4f 4b 41 53 49 44 45 5f 55 53  TUS_LOOKASIDE_US
04c0: 45 44 20 30 0a 7d 20 7b 30 20 30 20 37 7d 0a 64  ED 0.} {0 0 7}.d
04d0: 6f 5f 74 65 73 74 20 6c 6f 6f 6b 61 73 69 64 65  o_test lookaside
04e0: 2d 31 2e 38 20 7b 0a 20 20 64 62 20 63 61 63 68  -1.8 {.  db cach
04f0: 65 20 66 6c 75 73 68 0a 20 20 73 71 6c 69 74 65  e flush.  sqlite
0500: 33 5f 64 62 5f 73 74 61 74 75 73 20 64 62 20 53  3_db_status db S
0510: 51 4c 49 54 45 5f 44 42 53 54 41 54 55 53 5f 4c  QLITE_DBSTATUS_L
0520: 4f 4f 4b 41 53 49 44 45 5f 55 53 45 44 20 31 0a  OOKASIDE_USED 1.
0530: 7d 20 7b 30 20 30 20 37 7d 0a 64 6f 5f 74 65 73  } {0 0 7}.do_tes
0540: 74 20 6c 6f 6f 6b 61 73 69 64 65 2d 31 2e 39 20  t lookaside-1.9 
0550: 7b 0a 20 20 64 62 20 63 61 63 68 65 20 66 6c 75  {.  db cache flu
0560: 73 68 0a 20 20 73 71 6c 69 74 65 33 5f 64 62 5f  sh.  sqlite3_db_
0570: 73 74 61 74 75 73 20 64 62 20 53 51 4c 49 54 45  status db SQLITE
0580: 5f 44 42 53 54 41 54 55 53 5f 4c 4f 4f 4b 41 53  _DBSTATUS_LOOKAS
0590: 49 44 45 5f 55 53 45 44 20 30 0a 7d 20 7b 30 20  IDE_USED 0.} {0 
05a0: 30 20 30 7d 0a 0a 64 6f 5f 74 65 73 74 20 6c 6f  0 0}..do_test lo
05b0: 6f 6b 61 73 69 64 65 2d 32 2e 31 20 7b 0a 20 20  okaside-2.1 {.  
05c0: 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
05d0: 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 64 62 20 31  g_lookaside db 1
05e0: 30 30 20 31 30 30 30 0a 7d 20 7b 30 7d 0a 64 6f  00 1000.} {0}.do
05f0: 5f 74 65 73 74 20 6c 6f 6f 6b 61 73 69 64 65 2d  _test lookaside-
0600: 32 2e 32 20 7b 0a 20 20 64 62 20 65 76 61 6c 20  2.2 {.  db eval 
0610: 7b 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 32  {CREATE TABLE t2
0620: 28 78 29 3b 7d 0a 20 20 73 71 6c 69 74 65 33 5f  (x);}.  sqlite3_
0630: 64 62 5f 73 74 61 74 75 73 20 64 62 20 53 51 4c  db_status db SQL
0640: 49 54 45 5f 44 42 53 54 41 54 55 53 5f 4c 4f 4f  ITE_DBSTATUS_LOO
0650: 4b 41 53 49 44 45 5f 55 53 45 44 20 30 0a 7d 20  KASIDE_USED 0.} 
0660: 7b 30 20 31 30 20 34 38 7d 0a 64 6f 5f 74 65 73  {0 10 48}.do_tes
0670: 74 20 6c 6f 6f 6b 61 73 69 64 65 2d 32 2e 33 20  t lookaside-2.3 
0680: 7b 0a 20 20 73 71 6c 69 74 65 33 5f 64 62 5f 63  {.  sqlite3_db_c
0690: 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20  onfig_lookaside 
06a0: 64 62 20 35 30 20 35 30 0a 7d 20 7b 35 7d 20 20  db 50 50.} {5}  
06b0: 3b 23 20 53 51 4c 49 54 45 5f 42 55 53 59 0a 64  ;# SQLITE_BUSY.d
06c0: 6f 5f 74 65 73 74 20 6c 6f 6f 6b 61 73 69 64 65  o_test lookaside
06d0: 2d 32 2e 34 20 7b 0a 20 20 64 62 20 63 61 63 68  -2.4 {.  db cach
06e0: 65 20 66 6c 75 73 68 0a 20 20 73 71 6c 69 74 65  e flush.  sqlite
06f0: 33 5f 64 62 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b  3_db_config_look
0700: 61 73 69 64 65 20 64 62 20 35 30 20 35 30 0a 7d  aside db 50 50.}
0710: 20 7b 30 7d 20 20 3b 23 20 53 51 4c 49 54 45 5f   {0}  ;# SQLITE_
0720: 4f 4b 0a 0a 23 20 73 71 6c 69 74 65 33 5f 64 62  OK..# sqlite3_db
0730: 5f 73 74 61 74 75 73 28 29 20 77 69 74 68 20 61  _status() with a
0740: 6e 20 69 6e 76 61 6c 69 64 20 76 65 72 62 20 72  n invalid verb r
0750: 65 74 75 72 6e 73 20 61 6e 20 65 72 72 6f 72 2e  eturns an error.
0760: 0a 23 0a 64 6f 5f 74 65 73 74 20 6c 6f 6f 6b 61  .#.do_test looka
0770: 73 69 64 65 2d 33 2e 31 20 7b 0a 20 20 73 71 6c  side-3.1 {.  sql
0780: 69 74 65 33 5f 64 62 5f 73 74 61 74 75 73 20 64  ite3_db_status d
0790: 62 20 39 39 39 39 39 20 30 0a 7d 20 7b 31 20 30  b 99999 0.} {1 0
07a0: 20 30 7d 0a 0a 23 20 54 65 73 74 20 74 68 61 74   0}..# Test that
07b0: 20 61 6e 20 69 6e 76 61 6c 69 64 20 76 65 72 62   an invalid verb
07c0: 20 6f 6e 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66   on sqlite3_conf
07d0: 69 67 28 29 20 69 73 20 64 65 74 65 63 74 65 64  ig() is detected
07e0: 20 61 6e 64 0a 23 20 72 65 70 6f 72 74 65 64 20   and.# reported 
07f0: 61 73 20 61 6e 20 65 72 72 6f 72 2e 0a 23 0a 64  as an error..#.d
0800: 6f 5f 74 65 73 74 20 6c 6f 6f 6b 61 73 69 64 65  o_test lookaside
0810: 2d 34 2e 31 20 7b 0a 20 20 64 62 20 63 6c 6f 73  -4.1 {.  db clos
0820: 65 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74  e.  sqlite3_shut
0830: 64 6f 77 6e 0a 20 20 63 61 74 63 68 20 73 71 6c  down.  catch sql
0840: 69 74 65 33 5f 63 6f 6e 66 69 67 5f 65 72 72 6f  ite3_config_erro
0850: 72 0a 7d 20 7b 30 7d 0a 73 71 6c 69 74 65 33 5f  r.} {0}.sqlite3_
0860: 69 6e 69 74 69 61 6c 69 7a 65 0a                 initialize.