System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 3f4a8ebcaa804132409d0ce95182e3fe45e0a25a:


0000: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0010: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0020: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0030: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0040: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
0050: 0a 23 0d 0a 23 20 61 75 74 68 6f 72 69 7a 65 72  .#..# authorizer
0060: 2e 65 61 67 6c 65 20 2d 2d 0d 0a 23 0d 0a 23 20  .eagle --..#..# 
0070: 57 72 69 74 74 65 6e 20 62 79 20 4a 6f 65 20 4d  Written by Joe M
0080: 69 73 74 61 63 68 6b 69 6e 2e 0d 0a 23 20 52 65  istachkin...# Re
0090: 6c 65 61 73 65 64 20 74 6f 20 74 68 65 20 70 75  leased to the pu
00a0: 62 6c 69 63 20 64 6f 6d 61 69 6e 2c 20 75 73 65  blic domain, use
00b0: 20 61 74 20 79 6f 75 72 20 6f 77 6e 20 72 69 73   at your own ris
00c0: 6b 21 0d 0a 23 0d 0a 23 23 23 23 23 23 23 23 23  k!..#..#########
00d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
00e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
00f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0100: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0110: 23 23 23 23 23 23 0d 0a 0d 0a 70 61 63 6b 61 67  ######....packag
0120: 65 20 72 65 71 75 69 72 65 20 45 61 67 6c 65 0d  e require Eagle.
0130: 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65  .package require
0140: 20 45 61 67 6c 65 2e 4c 69 62 72 61 72 79 0d 0a   Eagle.Library..
0150: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20  package require 
0160: 45 61 67 6c 65 2e 54 65 73 74 0d 0a 0d 0a 72 75  Eagle.Test....ru
0170: 6e 54 65 73 74 50 72 6f 6c 6f 67 75 65 0d 0a 0d  nTestPrologue...
0180: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
0190: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01d0: 0d 0a 0d 0a 70 61 63 6b 61 67 65 20 72 65 71 75  ....package requ
01e0: 69 72 65 20 53 79 73 74 65 6d 2e 44 61 74 61 2e  ire System.Data.
01f0: 53 51 4c 69 74 65 2e 54 65 73 74 0d 0a 72 75 6e  SQLite.Test..run
0200: 53 51 4c 69 74 65 54 65 73 74 50 72 6f 6c 6f 67  SQLiteTestProlog
0210: 75 65 0d 0a 0d 0a 23 23 23 23 23 23 23 23 23 23  ue....##########
0220: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0230: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0240: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0250: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0260: 23 23 23 23 23 0d 0a 0d 0a 72 75 6e 54 65 73 74  #####....runTest
0270: 20 7b 74 65 73 74 20 61 75 74 68 6f 72 69 7a 65   {test authorize
0280: 72 2d 31 2e 31 20 7b 53 51 4c 69 74 65 43 6f 6e  r-1.1 {SQLiteCon
0290: 6e 65 63 74 69 6f 6e 20 41 75 74 68 6f 72 69 7a  nection Authoriz
02a0: 65 20 65 76 65 6e 74 7d 20 2d 73 65 74 75 70 20  e event} -setup 
02b0: 7b 0d 0a 20 20 70 72 6f 63 20 6f 6e 41 75 74 68  {..  proc onAuth
02c0: 6f 72 69 7a 65 20 7b 20 73 65 6e 64 65 72 20 65  orize { sender e
02d0: 20 7d 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20   } {..    #..   
02e0: 20 23 20 4e 4f 54 45 3a 20 46 69 6c 74 65 72 20   # NOTE: Filter 
02f0: 6f 75 74 20 74 68 65 20 22 6e 6f 69 73 65 22 20  out the "noise" 
0300: 62 79 20 61 6c 6c 6f 77 69 6e 67 20 61 6c 6c 20  by allowing all 
0310: 73 74 61 6e 64 61 72 64 0d 0a 20 20 20 20 23 20  standard..    # 
0320: 20 20 20 20 20 20 65 76 65 6e 74 73 20 6f 6e 20        events on 
0330: 74 68 65 20 22 73 71 6c 69 74 65 5f 2a 22 20 74  the "sqlite_*" t
0340: 61 62 6c 65 73 2e 0d 0a 20 20 20 20 23 0d 0a 20  ables...    #.. 
0350: 20 20 20 73 65 74 20 6e 6f 69 73 65 41 63 74 69     set noiseActi
0360: 6f 6e 43 6f 64 65 73 20 5b 6c 69 73 74 20 5c 0d  onCodes [list \.
0370: 0a 20 20 20 20 20 20 20 20 43 72 65 61 74 65 54  .        CreateT
0380: 61 62 6c 65 20 43 72 65 61 74 65 49 6e 64 65 78  able CreateIndex
0390: 20 52 65 61 64 20 49 6e 73 65 72 74 20 55 70 64   Read Insert Upd
03a0: 61 74 65 20 44 65 6c 65 74 65 5d 0d 0a 0d 0a 20  ate Delete].... 
03b0: 20 20 20 69 66 20 7b 5b 24 65 20 41 63 74 69 6f     if {[$e Actio
03c0: 6e 43 6f 64 65 5d 20 69 6e 20 24 6e 6f 69 73 65  nCode] in $noise
03d0: 41 63 74 69 6f 6e 43 6f 64 65 73 20 26 26 20 5c  ActionCodes && \
03e0: 0d 0a 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e  ..        [strin
03f0: 67 20 6d 61 74 63 68 20 73 71 6c 69 74 65 5f 2a  g match sqlite_*
0400: 20 5b 24 65 20 41 72 67 75 6d 65 6e 74 31 5d 5d   [$e Argument1]]
0410: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
0420: 72 65 74 75 72 6e 0d 0a 20 20 20 20 7d 0d 0a 0d  return..    }...
0430: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
0440: 54 45 3a 20 46 69 6c 74 65 72 20 6f 75 74 20 61  TE: Filter out a
0450: 6c 6c 20 22 6e 6f 6e 2d 70 72 69 6d 61 72 79 22  ll "non-primary"
0460: 20 65 76 65 6e 74 73 20 74 6f 20 6d 61 6b 65 20   events to make 
0470: 74 68 65 20 74 65 73 74 0d 0a 20 20 20 20 23 20  the test..    # 
0480: 20 20 20 20 20 20 72 65 73 75 6c 74 73 20 6d 6f        results mo
0490: 72 65 20 64 65 74 65 72 6d 69 6e 69 73 74 69 63  re deterministic
04a0: 20 69 6e 20 74 68 65 20 66 61 63 65 20 6f 66 20   in the face of 
04b0: 64 69 66 66 65 72 65 6e 74 0d 0a 20 20 20 20 23  different..    #
04c0: 20 20 20 20 20 20 20 71 75 65 72 79 20 70 6c 61         query pla
04d0: 6e 73 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  ns...    #..    
04e0: 69 66 20 7b 5b 24 65 20 41 63 74 69 6f 6e 43 6f  if {[$e ActionCo
04f0: 64 65 5d 20 6e 65 20 24 3a 3a 66 69 6c 74 65 72  de] ne $::filter
0500: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
0510: 72 65 74 75 72 6e 0d 0a 20 20 20 20 7d 0d 0a 0d  return..    }...
0520: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
0530: 54 45 3a 20 52 65 63 6f 72 64 20 74 68 65 20 61  TE: Record the a
0540: 75 74 68 6f 72 69 7a 65 72 20 61 72 67 75 6d 65  uthorizer argume
0550: 6e 74 73 20 65 78 61 63 74 6c 79 20 61 73 20 77  nts exactly as w
0560: 65 20 72 65 63 65 69 76 65 64 0d 0a 20 20 20 20  e received..    
0570: 23 20 20 20 20 20 20 20 74 68 65 6d 2e 0d 0a 20  #       them... 
0580: 20 20 20 23 0d 0a 20 20 20 20 6c 61 70 70 65 6e     #..    lappen
0590: 64 20 3a 3a 64 61 74 61 20 5b 6c 69 73 74 20 5c  d ::data [list \
05a0: 0d 0a 20 20 20 20 20 20 20 20 5b 24 65 20 55 73  ..        [$e Us
05b0: 65 72 44 61 74 61 5d 20 5b 24 65 20 41 63 74 69  erData] [$e Acti
05c0: 6f 6e 43 6f 64 65 5d 20 5b 24 65 20 41 72 67 75  onCode] [$e Argu
05d0: 6d 65 6e 74 31 5d 20 5c 0d 0a 20 20 20 20 20 20  ment1] \..      
05e0: 20 20 5b 24 65 20 41 72 67 75 6d 65 6e 74 32 5d    [$e Argument2]
05f0: 20 5b 24 65 20 44 61 74 61 62 61 73 65 5d 20 5b   [$e Database] [
0600: 24 65 20 43 6f 6e 74 65 78 74 5d 5d 0d 0a 0d 0a  $e Context]]....
0610: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
0620: 45 3a 20 44 65 6e 79 20 61 6c 6c 20 61 74 74 65  E: Deny all atte
0630: 6d 70 74 73 20 74 6f 20 63 72 65 61 74 65 20 61  mpts to create a
0640: 20 74 61 62 6c 65 20 6e 61 6d 65 64 20 22 74 44   table named "tD
0650: 65 6e 79 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20  eny"...    #..  
0660: 20 20 69 66 20 7b 5b 24 65 20 41 63 74 69 6f 6e    if {[$e Action
0670: 43 6f 64 65 5d 20 65 71 20 22 43 72 65 61 74 65  Code] eq "Create
0680: 54 61 62 6c 65 22 20 26 26 20 5c 0d 0a 20 20 20  Table" && \..   
0690: 20 20 20 20 20 5b 24 65 20 41 72 67 75 6d 65 6e       [$e Argumen
06a0: 74 31 5d 20 65 71 20 22 74 44 65 6e 79 22 7d 20  t1] eq "tDeny"} 
06b0: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 24 65  then {..      $e
06c0: 20 52 65 74 75 72 6e 43 6f 64 65 20 44 65 6e 79   ReturnCode Deny
06d0: 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a  ..    }..  }....
06e0: 20 20 73 65 74 75 70 44 62 20 5b 73 65 74 20 66    setupDb [set f
06f0: 69 6c 65 4e 61 6d 65 20 61 75 74 68 6f 72 69 7a  ileName authoriz
0700: 65 72 2d 31 2e 31 2e 64 62 5d 0d 0a 7d 20 2d 62  er-1.1.db]..} -b
0710: 6f 64 79 20 7b 0d 0a 20 20 73 65 74 20 63 6f 6e  ody {..  set con
0720: 6e 65 63 74 69 6f 6e 20 5b 67 65 74 44 62 43 6f  nection [getDbCo
0730: 6e 6e 65 63 74 69 6f 6e 5d 0d 0a 0d 0a 20 20 73  nnection]....  s
0740: 65 74 20 63 61 6c 6c 62 61 63 6b 20 6f 6e 41 75  et callback onAu
0750: 74 68 6f 72 69 7a 65 0d 0a 20 20 6f 62 6a 65 63  thorize..  objec
0760: 74 20 69 6e 76 6f 6b 65 20 24 63 6f 6e 6e 65 63  t invoke $connec
0770: 74 69 6f 6e 20 61 64 64 5f 41 75 74 68 6f 72 69  tion add_Authori
0780: 7a 65 20 24 63 61 6c 6c 62 61 63 6b 0d 0a 0d 0a  ze $callback....
0790: 20 20 73 65 74 20 72 65 73 75 6c 74 73 20 5b 6c    set results [l
07a0: 69 73 74 5d 0d 0a 0d 0a 20 20 73 65 74 20 73 71  ist]....  set sq
07b0: 6c 20 5b 6c 69 73 74 20 5c 0d 0a 20 20 20 20 43  l [list \..    C
07c0: 72 65 61 74 65 54 61 62 6c 65 20 20 20 20 20 20  reateTable      
07d0: 20 7b 43 52 45 41 54 45 20 54 41 42 4c 45 20 74   {CREATE TABLE t
07e0: 31 28 78 29 3b 7d 20 5c 0d 0a 20 20 20 20 43 72  1(x);} \..    Cr
07f0: 65 61 74 65 49 6e 64 65 78 20 20 20 20 20 20 20  eateIndex       
0800: 7b 43 52 45 41 54 45 20 49 4e 44 45 58 20 69 31  {CREATE INDEX i1
0810: 20 4f 4e 20 74 31 28 78 29 3b 7d 20 5c 0d 0a 20   ON t1(x);} \.. 
0820: 20 20 20 43 72 65 61 74 65 54 72 69 67 67 65 72     CreateTrigger
0830: 20 20 20 20 20 7b 43 52 45 41 54 45 20 54 52 49       {CREATE TRI
0840: 47 47 45 52 20 74 72 31 20 42 45 46 4f 52 45 20  GGER tr1 BEFORE 
0850: 49 4e 53 45 52 54 20 4f 4e 20 74 31 0d 0a 20 20  INSERT ON t1..  
0860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0870: 20 20 20 20 20 42 45 47 49 4e 0d 0a 20 20 20 20       BEGIN..    
0880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0890: 20 20 20 20 20 53 45 4c 45 43 54 20 52 41 49 53       SELECT RAIS
08a0: 45 28 49 47 4e 4f 52 45 29 3b 0d 0a 20 20 20 20  E(IGNORE);..    
08b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
08c0: 20 20 20 45 4e 44 3b 7d 20 5c 0d 0a 20 20 20 20     END;} \..    
08d0: 43 72 65 61 74 65 56 69 65 77 20 20 20 20 20 20  CreateView      
08e0: 20 20 7b 43 52 45 41 54 45 20 56 49 45 57 20 76    {CREATE VIEW v
08f0: 31 20 41 53 20 53 45 4c 45 43 54 20 2a 20 46 52  1 AS SELECT * FR
0900: 4f 4d 20 74 31 3b 7d 20 5c 0d 0a 20 20 20 20 43  OM t1;} \..    C
0910: 72 65 61 74 65 54 65 6d 70 54 61 62 6c 65 20 20  reateTempTable  
0920: 20 7b 43 52 45 41 54 45 20 54 45 4d 50 4f 52 41   {CREATE TEMPORA
0930: 52 59 20 54 41 42 4c 45 20 74 32 28 78 29 3b 7d  RY TABLE t2(x);}
0940: 20 5c 0d 0a 20 20 20 20 43 72 65 61 74 65 54 65   \..    CreateTe
0950: 6d 70 49 6e 64 65 78 20 20 20 7b 43 52 45 41 54  mpIndex   {CREAT
0960: 45 20 49 4e 44 45 58 20 69 32 20 4f 4e 20 74 32  E INDEX i2 ON t2
0970: 28 78 29 3b 7d 20 5c 0d 0a 20 20 20 20 43 72 65  (x);} \..    Cre
0980: 61 74 65 54 65 6d 70 54 72 69 67 67 65 72 20 7b  ateTempTrigger {
0990: 43 52 45 41 54 45 20 54 45 4d 50 4f 52 41 52 59  CREATE TEMPORARY
09a0: 20 54 52 49 47 47 45 52 20 74 72 32 20 42 45 46   TRIGGER tr2 BEF
09b0: 4f 52 45 20 49 4e 53 45 52 54 20 4f 4e 20 74 32  ORE INSERT ON t2
09c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
09d0: 20 20 20 20 20 20 20 20 20 42 45 47 49 4e 0d 0a           BEGIN..
09e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
09f0: 20 20 20 20 20 20 20 20 20 53 45 4c 45 43 54 20           SELECT 
0a00: 52 41 49 53 45 28 49 47 4e 4f 52 45 29 3b 0d 0a  RAISE(IGNORE);..
0a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0a20: 20 20 20 20 20 20 20 45 4e 44 3b 7d 20 5c 0d 0a         END;} \..
0a30: 20 20 20 20 43 72 65 61 74 65 54 65 6d 70 56 69      CreateTempVi
0a40: 65 77 20 20 20 20 7b 43 52 45 41 54 45 20 54 45  ew    {CREATE TE
0a50: 4d 50 4f 52 41 52 59 20 56 49 45 57 20 76 32 20  MPORARY VIEW v2 
0a60: 41 53 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  AS SELECT * FROM
0a70: 20 74 32 3b 7d 20 5c 0d 0a 20 20 20 20 50 72 61   t2;} \..    Pra
0a80: 67 6d 61 20 20 20 20 20 20 20 20 20 20 20 20 7b  gma            {
0a90: 50 52 41 47 4d 41 20 6a 6f 75 72 6e 61 6c 5f 6d  PRAGMA journal_m
0aa0: 6f 64 65 3d 57 41 4c 3b 7d 20 5c 0d 0a 20 20 20  ode=WAL;} \..   
0ab0: 20 46 75 6e 63 74 69 6f 6e 20 20 20 20 20 20 20   Function       
0ac0: 20 20 20 7b 53 45 4c 45 43 54 20 6a 75 6c 69 61     {SELECT julia
0ad0: 6e 64 61 79 28 27 6e 6f 77 27 29 3b 7d 20 5c 0d  nday('now');} \.
0ae0: 0a 20 20 20 20 52 65 61 64 20 20 20 20 20 20 20  .    Read       
0af0: 20 20 20 20 20 20 20 7b 53 45 4c 45 43 54 20 78         {SELECT x
0b00: 20 46 52 4f 4d 20 74 31 3b 7d 20 5c 0d 0a 20 20   FROM t1;} \..  
0b10: 20 20 53 65 6c 65 63 74 20 20 20 20 20 20 20 20    Select        
0b20: 20 20 20 20 7b 53 45 4c 45 43 54 20 2a 20 46 52      {SELECT * FR
0b30: 4f 4d 20 74 31 3b 7d 20 5c 0d 0a 20 20 20 20 49  OM t1;} \..    I
0b40: 6e 73 65 72 74 20 20 20 20 20 20 20 20 20 20 20  nsert           
0b50: 20 7b 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31   {INSERT INTO t1
0b60: 28 78 29 20 56 41 4c 55 45 53 28 31 29 3b 7d 20  (x) VALUES(1);} 
0b70: 5c 0d 0a 20 20 20 20 55 70 64 61 74 65 20 20 20  \..    Update   
0b80: 20 20 20 20 20 20 20 20 20 7b 55 50 44 41 54 45           {UPDATE
0b90: 20 74 31 20 53 45 54 20 78 20 3d 20 78 20 2d 20   t1 SET x = x - 
0ba0: 31 3b 7d 20 5c 0d 0a 20 20 20 20 44 65 6c 65 74  1;} \..    Delet
0bb0: 65 20 20 20 20 20 20 20 20 20 20 20 20 7b 44 45  e            {DE
0bc0: 4c 45 54 45 20 46 52 4f 4d 20 74 31 3b 7d 20 5c  LETE FROM t1;} \
0bd0: 0d 0a 20 20 20 20 41 6c 74 65 72 54 61 62 6c 65  ..    AlterTable
0be0: 20 20 20 20 20 20 20 20 7b 41 4c 54 45 52 20 54          {ALTER T
0bf0: 41 42 4c 45 20 74 31 20 41 44 44 20 43 4f 4c 55  ABLE t1 ADD COLU
0c00: 4d 4e 20 79 3b 7d 20 5c 0d 0a 20 20 20 20 52 65  MN y;} \..    Re
0c10: 69 6e 64 65 78 20 20 20 20 20 20 20 20 20 20 20  index           
0c20: 7b 52 45 49 4e 44 45 58 20 74 31 3b 7d 20 5c 0d  {REINDEX t1;} \.
0c30: 0a 20 20 20 20 41 6e 61 6c 79 7a 65 20 20 20 20  .    Analyze    
0c40: 20 20 20 20 20 20 20 7b 41 4e 41 4c 59 5a 45 20         {ANALYZE 
0c50: 74 31 3b 7d 20 5c 0d 0a 20 20 20 20 44 72 6f 70  t1;} \..    Drop
0c60: 54 65 6d 70 56 69 65 77 20 20 20 20 20 20 7b 44  TempView      {D
0c70: 52 4f 50 20 56 49 45 57 20 76 32 3b 7d 20 5c 0d  ROP VIEW v2;} \.
0c80: 0a 20 20 20 20 44 72 6f 70 54 65 6d 70 54 72 69  .    DropTempTri
0c90: 67 67 65 72 20 20 20 7b 44 52 4f 50 20 54 52 49  gger   {DROP TRI
0ca0: 47 47 45 52 20 74 72 32 3b 7d 20 5c 0d 0a 20 20  GGER tr2;} \..  
0cb0: 20 20 44 72 6f 70 54 65 6d 70 49 6e 64 65 78 20    DropTempIndex 
0cc0: 20 20 20 20 7b 44 52 4f 50 20 49 4e 44 45 58 20      {DROP INDEX 
0cd0: 69 32 3b 7d 20 5c 0d 0a 20 20 20 20 44 72 6f 70  i2;} \..    Drop
0ce0: 54 65 6d 70 54 61 62 6c 65 20 20 20 20 20 7b 44  TempTable     {D
0cf0: 52 4f 50 20 54 41 42 4c 45 20 74 32 3b 7d 20 5c  ROP TABLE t2;} \
0d00: 0d 0a 20 20 20 20 44 72 6f 70 56 69 65 77 20 20  ..    DropView  
0d10: 20 20 20 20 20 20 20 20 7b 44 52 4f 50 20 56 49          {DROP VI
0d20: 45 57 20 76 31 3b 7d 20 5c 0d 0a 20 20 20 20 44  EW v1;} \..    D
0d30: 72 6f 70 54 72 69 67 67 65 72 20 20 20 20 20 20  ropTrigger      
0d40: 20 7b 44 52 4f 50 20 54 52 49 47 47 45 52 20 74   {DROP TRIGGER t
0d50: 72 31 3b 7d 20 5c 0d 0a 20 20 20 20 44 72 6f 70  r1;} \..    Drop
0d60: 49 6e 64 65 78 20 20 20 20 20 20 20 20 20 7b 44  Index         {D
0d70: 52 4f 50 20 49 4e 44 45 58 20 69 31 3b 7d 20 5c  ROP INDEX i1;} \
0d80: 0d 0a 20 20 20 20 52 65 63 75 72 73 69 76 65 20  ..    Recursive 
0d90: 20 20 20 20 20 20 20 20 7b 57 49 54 48 20 74 34          {WITH t4
0da0: 28 78 29 20 41 53 20 28 0d 0a 20 20 20 20 20 20  (x) AS (..      
0db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0dc0: 20 20 20 56 41 4c 55 45 53 28 31 29 0d 0a 20 20     VALUES(1)..  
0dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0de0: 20 20 20 20 20 20 20 55 4e 49 4f 4e 20 41 4c 4c         UNION ALL
0df0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
0e00: 20 20 20 20 20 20 20 20 20 20 20 53 45 4c 45 43             SELEC
0e10: 54 20 74 31 2e 78 20 46 52 4f 4d 20 74 31 2c 20  T t1.x FROM t1, 
0e20: 74 34 20 57 48 45 52 45 20 74 31 2e 78 20 3d 20  t4 WHERE t1.x = 
0e30: 74 34 2e 78 0d 0a 20 20 20 20 20 20 20 20 20 20  t4.x..          
0e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
0e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0e60: 20 20 20 20 20 20 20 53 45 4c 45 43 54 20 78 20         SELECT x 
0e70: 46 52 4f 4d 20 74 34 3b 7d 20 5c 0d 0a 20 20 20  FROM t4;} \..   
0e80: 20 44 72 6f 70 54 61 62 6c 65 20 20 20 20 20 20   DropTable      
0e90: 20 20 20 7b 44 52 4f 50 20 54 41 42 4c 45 20 74     {DROP TABLE t
0ea0: 31 3b 7d 20 5c 0d 0a 20 20 20 20 54 72 61 6e 73  1;} \..    Trans
0eb0: 61 63 74 69 6f 6e 20 20 20 20 20 20 20 7b 42 45  action       {BE
0ec0: 47 49 4e 3b 20 53 45 4c 45 43 54 20 30 3b 20 43  GIN; SELECT 0; C
0ed0: 4f 4d 4d 49 54 3b 7d 20 5c 0d 0a 20 20 20 20 53  OMMIT;} \..    S
0ee0: 61 76 65 70 6f 69 6e 74 20 20 20 20 20 20 20 20  avepoint        
0ef0: 20 7b 53 41 56 45 50 4f 49 4e 54 20 73 31 3b 20   {SAVEPOINT s1; 
0f00: 52 45 4c 45 41 53 45 20 53 41 56 45 50 4f 49 4e  RELEASE SAVEPOIN
0f10: 54 20 73 31 3b 7d 20 5c 0d 0a 20 20 20 20 41 74  T s1;} \..    At
0f20: 74 61 63 68 20 20 20 20 20 20 20 20 20 20 20 20  tach            
0f30: 7b 41 54 54 41 43 48 20 44 41 54 41 42 41 53 45  {ATTACH DATABASE
0f40: 20 27 3a 6d 65 6d 6f 72 79 3a 27 20 41 53 20 64   ':memory:' AS d
0f50: 31 3b 7d 20 5c 0d 0a 20 20 20 20 44 65 74 61 63  1;} \..    Detac
0f60: 68 20 20 20 20 20 20 20 20 20 20 20 20 7b 44 45  h            {DE
0f70: 54 41 43 48 20 44 41 54 41 42 41 53 45 20 64 31  TACH DATABASE d1
0f80: 3b 7d 20 5c 0d 0a 20 20 20 20 43 72 65 61 74 65  ;} \..    Create
0f90: 56 74 61 62 6c 65 20 20 20 20 20 20 7b 43 52 45  Vtable      {CRE
0fa0: 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c  ATE VIRTUAL TABL
0fb0: 45 20 74 33 20 55 53 49 4e 47 20 66 74 73 34 28  E t3 USING fts4(
0fc0: 78 20 54 45 58 54 29 3b 7d 20 5c 0d 0a 20 20 20  x TEXT);} \..   
0fd0: 20 44 72 6f 70 56 74 61 62 6c 65 20 20 20 20 20   DropVtable     
0fe0: 20 20 20 7b 44 52 4f 50 20 54 41 42 4c 45 20 74     {DROP TABLE t
0ff0: 33 3b 7d 20 5c 0d 0a 20 20 20 20 43 72 65 61 74  3;} \..    Creat
1000: 65 54 61 62 6c 65 20 20 20 20 20 20 20 7b 43 52  eTable       {CR
1010: 45 41 54 45 20 54 41 42 4c 45 20 74 44 65 6e 79  EATE TABLE tDeny
1020: 28 78 29 3b 7d 5d 0d 0a 0d 0a 20 20 66 6f 72 65  (x);}]....  fore
1030: 61 63 68 20 7b 6e 61 6d 65 20 76 61 6c 75 65 7d  ach {name value}
1040: 20 24 73 71 6c 20 7b 0d 0a 20 20 20 20 73 65 74   $sql {..    set
1050: 20 66 69 6c 74 65 72 20 24 6e 61 6d 65 3b 20 73   filter $name; s
1060: 65 74 20 64 61 74 61 20 5b 6c 69 73 74 5d 0d 0a  et data [list]..
1070: 20 20 20 20 73 65 74 20 63 6f 64 65 20 5b 63 61      set code [ca
1080: 74 63 68 20 7b 73 71 6c 20 65 78 65 63 75 74 65  tch {sql execute
1090: 20 24 64 62 20 24 76 61 6c 75 65 7d 20 72 65 73   $db $value} res
10a0: 75 6c 74 5d 0d 0a 20 20 20 20 73 65 74 20 72 65  ult]..    set re
10b0: 73 75 6c 74 20 5b 65 78 74 72 61 63 74 53 79 73  sult [extractSys
10c0: 74 65 6d 44 61 74 61 53 51 4c 69 74 65 45 78 63  temDataSQLiteExc
10d0: 65 70 74 69 6f 6e 4d 65 73 73 61 67 65 20 24 72  eptionMessage $r
10e0: 65 73 75 6c 74 5d 0d 0a 20 20 20 20 73 65 74 20  esult]..    set 
10f0: 72 65 73 75 6c 74 20 5b 6c 69 6e 64 65 78 20 5b  result [lindex [
1100: 73 70 6c 69 74 20 5b 73 74 72 69 6e 67 20 6d 61  split [string ma
1110: 70 20 5b 6c 69 73 74 20 5c 72 5c 6e 20 5c 6e 5d  p [list \r\n \n]
1120: 20 24 72 65 73 75 6c 74 5d 20 5c 6e 5d 20 30 5d   $result] \n] 0]
1130: 0d 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65  ..    lappend re
1140: 73 75 6c 74 73 20 5b 6c 69 73 74 20 24 6e 61 6d  sults [list $nam
1150: 65 20 24 64 61 74 61 20 24 63 6f 64 65 20 24 72  e $data $code $r
1160: 65 73 75 6c 74 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20  esult]..  }.... 
1170: 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 73   lappend results
1180: 20 5b 69 73 54 61 62 6c 65 49 6e 44 62 20 74 44   [isTableInDb tD
1190: 65 6e 79 5d 3b 20 73 65 74 20 72 65 73 75 6c 74  eny]; set result
11a0: 73 0d 0a 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0d  s..} -cleanup {.
11b0: 0a 20 20 63 61 74 63 68 20 7b 6f 62 6a 65 63 74  .  catch {object
11c0: 20 69 6e 76 6f 6b 65 20 24 63 6f 6e 6e 65 63 74   invoke $connect
11d0: 69 6f 6e 20 72 65 6d 6f 76 65 5f 41 75 74 68 6f  ion remove_Autho
11e0: 72 69 7a 65 20 24 63 61 6c 6c 62 61 63 6b 7d 0d  rize $callback}.
11f0: 0a 20 20 63 61 74 63 68 20 7b 6f 62 6a 65 63 74  .  catch {object
1200: 20 72 65 6d 6f 76 65 63 61 6c 6c 62 61 63 6b 20   removecallback 
1210: 24 63 61 6c 6c 62 61 63 6b 7d 0d 0a 0d 0a 20 20  $callback}....  
1220: 63 6c 65 61 6e 75 70 44 62 20 24 66 69 6c 65 4e  cleanupDb $fileN
1230: 61 6d 65 0d 0a 0d 0a 20 20 66 72 65 65 44 62 43  ame....  freeDbC
1240: 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 0d 0a 20 20 75  onnection....  u
1250: 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e  nset -nocomplain
1260: 20 72 65 73 75 6c 74 20 63 6f 64 65 20 64 61 74   result code dat
1270: 61 20 66 69 6c 74 65 72 20 76 61 6c 75 65 20 6e  a filter value n
1280: 61 6d 65 20 73 71 6c 20 72 65 73 75 6c 74 73 20  ame sql results 
1290: 63 61 6c 6c 62 61 63 6b 20 5c 0d 0a 20 20 20 20  callback \..    
12a0: 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 64 62 20    connection db 
12b0: 66 69 6c 65 4e 61 6d 65 0d 0a 0d 0a 20 20 72 65  fileName....  re
12c0: 6e 61 6d 65 20 6f 6e 41 75 74 68 6f 72 69 7a 65  name onAuthorize
12d0: 20 22 22 0d 0a 7d 20 2d 63 6f 6e 73 74 72 61 69   ""..} -constrai
12e0: 6e 74 73 20 7b 65 61 67 6c 65 20 63 6f 6d 6d 61  nts {eagle comma
12f0: 6e 64 2e 6f 62 6a 65 63 74 20 6d 6f 6e 6f 42 75  nd.object monoBu
1300: 67 32 38 20 63 6f 6d 6d 61 6e 64 2e 73 71 6c 20  g28 command.sql 
1310: 63 6f 6d 70 69 6c 65 2e 44 41 54 41 20 53 51 4c  compile.DATA SQL
1320: 69 74 65 5c 0d 0a 53 79 73 74 65 6d 2e 44 61 74  ite\..System.Dat
1330: 61 2e 53 51 4c 69 74 65 7d 20 2d 72 65 73 75 6c  a.SQLite} -resul
1340: 74 20 7b 7b 43 72 65 61 74 65 54 61 62 6c 65 20  t {{CreateTable 
1350: 7b 7b 30 20 43 72 65 61 74 65 54 61 62 6c 65 20  {{0 CreateTable 
1360: 74 31 20 7b 7d 20 6d 61 69 6e 20 7b 7d 7d 7d 20  t1 {} main {}}} 
1370: 30 20 30 7d 5c 0d 0a 7b 43 72 65 61 74 65 49 6e  0 0}\..{CreateIn
1380: 64 65 78 20 7b 7b 30 20 43 72 65 61 74 65 49 6e  dex {{0 CreateIn
1390: 64 65 78 20 69 31 20 74 31 20 6d 61 69 6e 20 7b  dex i1 t1 main {
13a0: 7d 7d 7d 20 30 20 30 7d 20 7b 43 72 65 61 74 65  }}} 0 0} {Create
13b0: 54 72 69 67 67 65 72 20 7b 7b 30 5c 0d 0a 43 72  Trigger {{0\..Cr
13c0: 65 61 74 65 54 72 69 67 67 65 72 20 74 72 31 20  eateTrigger tr1 
13d0: 74 31 20 6d 61 69 6e 20 7b 7d 7d 7d 20 30 20 30  t1 main {}}} 0 0
13e0: 7d 20 7b 43 72 65 61 74 65 56 69 65 77 20 7b 7b  } {CreateView {{
13f0: 30 20 43 72 65 61 74 65 56 69 65 77 20 76 31 20  0 CreateView v1 
1400: 7b 7d 20 6d 61 69 6e 20 7b 7d 7d 7d 5c 0d 0a 30  {} main {}}}\..0
1410: 20 30 7d 20 7b 43 72 65 61 74 65 54 65 6d 70 54   0} {CreateTempT
1420: 61 62 6c 65 20 7b 7b 30 20 43 72 65 61 74 65 54  able {{0 CreateT
1430: 65 6d 70 54 61 62 6c 65 20 74 32 20 7b 7d 20 74  empTable t2 {} t
1440: 65 6d 70 20 7b 7d 7d 7d 20 30 20 30 7d 20 7b 43  emp {}}} 0 0} {C
1450: 72 65 61 74 65 54 65 6d 70 49 6e 64 65 78 5c 0d  reateTempIndex\.
1460: 0a 7b 7b 30 20 43 72 65 61 74 65 54 65 6d 70 49  .{{0 CreateTempI
1470: 6e 64 65 78 20 69 32 20 74 32 20 74 65 6d 70 20  ndex i2 t2 temp 
1480: 7b 7d 7d 7d 20 30 20 30 7d 20 7b 43 72 65 61 74  {}}} 0 0} {Creat
1490: 65 54 65 6d 70 54 72 69 67 67 65 72 20 7b 7b 30  eTempTrigger {{0
14a0: 5c 0d 0a 43 72 65 61 74 65 54 65 6d 70 54 72 69  \..CreateTempTri
14b0: 67 67 65 72 20 74 72 32 20 74 32 20 74 65 6d 70  gger tr2 t2 temp
14c0: 20 7b 7d 7d 7d 20 30 20 30 7d 20 7b 43 72 65 61   {}}} 0 0} {Crea
14d0: 74 65 54 65 6d 70 56 69 65 77 20 7b 7b 30 20 43  teTempView {{0 C
14e0: 72 65 61 74 65 54 65 6d 70 56 69 65 77 20 76 32  reateTempView v2
14f0: 5c 0d 0a 7b 7d 20 74 65 6d 70 20 7b 7d 7d 7d 20  \..{} temp {}}} 
1500: 30 20 30 7d 20 7b 50 72 61 67 6d 61 20 7b 7b 30  0 0} {Pragma {{0
1510: 20 50 72 61 67 6d 61 20 6a 6f 75 72 6e 61 6c 5f   Pragma journal_
1520: 6d 6f 64 65 20 57 41 4c 20 7b 7d 20 7b 7d 7d 7d  mode WAL {} {}}}
1530: 20 30 20 2d 31 7d 20 7b 46 75 6e 63 74 69 6f 6e   0 -1} {Function
1540: 5c 0d 0a 7b 7b 30 20 46 75 6e 63 74 69 6f 6e 20  \..{{0 Function 
1550: 7b 7d 20 6a 75 6c 69 61 6e 64 61 79 20 7b 7d 20  {} julianday {} 
1560: 7b 7d 7d 7d 20 30 20 2d 31 7d 20 7b 52 65 61 64  {}}} 0 -1} {Read
1570: 20 7b 7b 30 20 52 65 61 64 20 74 31 20 78 20 6d   {{0 Read t1 x m
1580: 61 69 6e 20 7b 7d 7d 7d 20 30 20 2d 31 7d 5c 0d  ain {}}} 0 -1}\.
1590: 0a 7b 53 65 6c 65 63 74 20 7b 7b 30 20 53 65 6c  .{Select {{0 Sel
15a0: 65 63 74 20 7b 7d 20 7b 7d 20 7b 7d 20 7b 7d 7d  ect {} {} {} {}}
15b0: 7d 20 30 20 2d 31 7d 20 7b 49 6e 73 65 72 74 20  } 0 -1} {Insert 
15c0: 7b 7b 30 20 49 6e 73 65 72 74 20 74 31 20 7b 7d  {{0 Insert t1 {}
15d0: 20 6d 61 69 6e 20 7b 7d 7d 7d 20 30 20 30 7d 5c   main {}}} 0 0}\
15e0: 0d 0a 7b 55 70 64 61 74 65 20 7b 7b 30 20 55 70  ..{Update {{0 Up
15f0: 64 61 74 65 20 74 31 20 78 20 6d 61 69 6e 20 7b  date t1 x main {
1600: 7d 7d 7d 20 30 20 30 7d 20 7b 44 65 6c 65 74 65  }}} 0 0} {Delete
1610: 20 7b 7b 30 20 44 65 6c 65 74 65 20 74 31 20 7b   {{0 Delete t1 {
1620: 7d 20 6d 61 69 6e 20 7b 7d 7d 7d 20 30 20 30 7d  } main {}}} 0 0}
1630: 5c 0d 0a 7b 41 6c 74 65 72 54 61 62 6c 65 20 7b  \..{AlterTable {
1640: 7b 30 20 41 6c 74 65 72 54 61 62 6c 65 20 6d 61  {0 AlterTable ma
1650: 69 6e 20 74 31 20 7b 7d 20 7b 7d 7d 7d 20 30 20  in t1 {} {}}} 0 
1660: 30 7d 20 7b 52 65 69 6e 64 65 78 20 7b 7b 30 20  0} {Reindex {{0 
1670: 52 65 69 6e 64 65 78 20 69 31 20 7b 7d 20 6d 61  Reindex i1 {} ma
1680: 69 6e 5c 0d 0a 7b 7d 7d 7d 20 30 20 30 7d 20 7b  in\..{}}} 0 0} {
1690: 41 6e 61 6c 79 7a 65 20 7b 7b 30 20 41 6e 61 6c  Analyze {{0 Anal
16a0: 79 7a 65 20 74 31 20 7b 7d 20 6d 61 69 6e 20 7b  yze t1 {} main {
16b0: 7d 7d 7d 20 30 20 30 7d 20 7b 44 72 6f 70 54 65  }}} 0 0} {DropTe
16c0: 6d 70 56 69 65 77 20 7b 7b 30 5c 0d 0a 44 72 6f  mpView {{0\..Dro
16d0: 70 54 65 6d 70 56 69 65 77 20 76 32 20 7b 7d 20  pTempView v2 {} 
16e0: 74 65 6d 70 20 7b 7d 7d 7d 20 30 20 30 7d 20 7b  temp {}}} 0 0} {
16f0: 44 72 6f 70 54 65 6d 70 54 72 69 67 67 65 72 20  DropTempTrigger 
1700: 7b 7b 30 20 44 72 6f 70 54 65 6d 70 54 72 69 67  {{0 DropTempTrig
1710: 67 65 72 20 74 72 32 20 74 32 5c 0d 0a 74 65 6d  ger tr2 t2\..tem
1720: 70 20 7b 7d 7d 7d 20 30 20 30 7d 20 7b 44 72 6f  p {}}} 0 0} {Dro
1730: 70 54 65 6d 70 49 6e 64 65 78 20 7b 7b 30 20 44  pTempIndex {{0 D
1740: 72 6f 70 54 65 6d 70 49 6e 64 65 78 20 69 32 20  ropTempIndex i2 
1750: 74 32 20 74 65 6d 70 20 7b 7d 7d 7d 20 30 20 30  t2 temp {}}} 0 0
1760: 7d 5c 0d 0a 7b 44 72 6f 70 54 65 6d 70 54 61 62  }\..{DropTempTab
1770: 6c 65 20 7b 7b 30 20 44 72 6f 70 54 65 6d 70 54  le {{0 DropTempT
1780: 61 62 6c 65 20 74 32 20 7b 7d 20 74 65 6d 70 20  able t2 {} temp 
1790: 7b 7d 7d 7d 20 30 20 30 7d 20 7b 44 72 6f 70 56  {}}} 0 0} {DropV
17a0: 69 65 77 20 7b 7b 30 20 44 72 6f 70 56 69 65 77  iew {{0 DropView
17b0: 20 76 31 5c 0d 0a 7b 7d 20 6d 61 69 6e 20 7b 7d   v1\..{} main {}
17c0: 7d 7d 20 30 20 30 7d 20 7b 44 72 6f 70 54 72 69  }} 0 0} {DropTri
17d0: 67 67 65 72 20 7b 7b 30 20 44 72 6f 70 54 72 69  gger {{0 DropTri
17e0: 67 67 65 72 20 74 72 31 20 74 31 20 6d 61 69 6e  gger tr1 t1 main
17f0: 20 7b 7d 7d 7d 20 30 20 30 7d 20 7b 44 72 6f 70   {}}} 0 0} {Drop
1800: 49 6e 64 65 78 5c 0d 0a 7b 7b 30 20 44 72 6f 70  Index\..{{0 Drop
1810: 49 6e 64 65 78 20 69 31 20 74 31 20 6d 61 69 6e  Index i1 t1 main
1820: 20 7b 7d 7d 7d 20 30 20 30 7d 20 7b 52 65 63 75   {}}} 0 0} {Recu
1830: 72 73 69 76 65 20 7b 7b 30 20 52 65 63 75 72 73  rsive {{0 Recurs
1840: 69 76 65 20 7b 7d 20 7b 7d 20 7b 7d 20 7b 7d 7d  ive {} {} {} {}}
1850: 7d 20 30 20 2d 31 7d 5c 0d 0a 7b 44 72 6f 70 54  } 0 -1}\..{DropT
1860: 61 62 6c 65 20 7b 7b 30 20 44 72 6f 70 54 61 62  able {{0 DropTab
1870: 6c 65 20 74 31 20 7b 7d 20 6d 61 69 6e 20 7b 7d  le t1 {} main {}
1880: 7d 7d 20 30 20 30 7d 20 7b 54 72 61 6e 73 61 63  }} 0 0} {Transac
1890: 74 69 6f 6e 20 7b 7b 30 20 54 72 61 6e 73 61 63  tion {{0 Transac
18a0: 74 69 6f 6e 5c 0d 0a 42 45 47 49 4e 20 7b 7d 20  tion\..BEGIN {} 
18b0: 7b 7d 20 7b 7d 7d 20 7b 30 20 54 72 61 6e 73 61  {} {}} {0 Transa
18c0: 63 74 69 6f 6e 20 43 4f 4d 4d 49 54 20 7b 7d 20  ction COMMIT {} 
18d0: 7b 7d 20 7b 7d 7d 7d 20 30 20 2d 31 7d 20 7b 53  {} {}}} 0 -1} {S
18e0: 61 76 65 70 6f 69 6e 74 20 7b 7b 30 20 53 61 76  avepoint {{0 Sav
18f0: 65 70 6f 69 6e 74 5c 0d 0a 42 45 47 49 4e 20 73  epoint\..BEGIN s
1900: 31 20 7b 7d 20 7b 7d 7d 20 7b 30 20 53 61 76 65  1 {} {}} {0 Save
1910: 70 6f 69 6e 74 20 52 45 4c 45 41 53 45 20 73 31  point RELEASE s1
1920: 20 7b 7d 20 7b 7d 7d 7d 20 30 20 2d 31 7d 20 7b   {} {}}} 0 -1} {
1930: 41 74 74 61 63 68 20 7b 7b 30 20 41 74 74 61 63  Attach {{0 Attac
1940: 68 5c 0d 0a 3a 6d 65 6d 6f 72 79 3a 20 7b 7d 20  h\..:memory: {} 
1950: 7b 7d 20 7b 7d 7d 7d 20 30 20 2d 31 7d 20 7b 44  {} {}}} 0 -1} {D
1960: 65 74 61 63 68 20 7b 7b 30 20 44 65 74 61 63 68  etach {{0 Detach
1970: 20 64 31 20 7b 7d 20 7b 7d 20 7b 7d 7d 7d 20 30   d1 {} {} {}}} 0
1980: 20 2d 31 7d 20 7b 43 72 65 61 74 65 56 74 61 62   -1} {CreateVtab
1990: 6c 65 5c 0d 0a 7b 7b 30 20 43 72 65 61 74 65 56  le\..{{0 CreateV
19a0: 74 61 62 6c 65 20 74 33 20 66 74 73 34 20 6d 61  table t3 fts4 ma
19b0: 69 6e 20 7b 7d 7d 7d 20 30 20 30 7d 20 7b 44 72  in {}}} 0 0} {Dr
19c0: 6f 70 56 74 61 62 6c 65 20 7b 7b 30 20 44 72 6f  opVtable {{0 Dro
19d0: 70 56 74 61 62 6c 65 20 74 33 20 66 74 73 34 20  pVtable t3 fts4 
19e0: 6d 61 69 6e 5c 0d 0a 7b 7d 7d 7d 20 30 20 30 7d  main\..{}}} 0 0}
19f0: 20 7b 43 72 65 61 74 65 54 61 62 6c 65 20 7b 7b   {CreateTable {{
1a00: 30 20 43 72 65 61 74 65 54 61 62 6c 65 20 74 44  0 CreateTable tD
1a10: 65 6e 79 20 7b 7d 20 6d 61 69 6e 20 7b 7d 7d 7d  eny {} main {}}}
1a20: 20 31 20 7b 61 75 74 68 6f 72 69 7a 61 74 69 6f   1 {authorizatio
1a30: 6e 5c 0d 0a 64 65 6e 69 65 64 20 2d 2d 20 6e 6f  n\..denied -- no
1a40: 74 20 61 75 74 68 6f 72 69 7a 65 64 7d 7d 20 46  t authorized}} F
1a50: 61 6c 73 65 7d 7d 0d 0a 0d 0a 23 23 23 23 23 23  alse}}....######
1a60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1aa0: 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 72 75 6e  #########....run
1ab0: 53 51 4c 69 74 65 54 65 73 74 45 70 69 6c 6f 67  SQLiteTestEpilog
1ac0: 75 65 0d 0a 72 75 6e 54 65 73 74 45 70 69 6c 6f  ue..runTestEpilo
1ad0: 67 75 65 0d 0a                                   gue..