/ Hex Artifact Content
Login

Artifact 95b03429ee6b138645703c6ca192c3ac96eaf093:


0000: 0a 0a 70 72 6f 63 20 6c 6f 61 64 66 69 6c 65 20  ..proc loadfile 
0010: 7b 66 7d 20 7b 0a 20 20 73 65 74 20 66 64 20 5b  {f} {.  set fd [
0020: 6f 70 65 6e 20 24 66 5d 0a 20 20 73 65 74 20 64  open $f].  set d
0030: 61 74 61 20 5b 72 65 61 64 20 24 66 64 5d 0a 20  ata [read $fd]. 
0040: 20 63 6c 6f 73 65 20 24 66 64 0a 20 20 72 65 74   close $fd.  ret
0050: 75 72 6e 20 24 64 61 74 61 0a 7d 0a 0a 73 65 74  urn $data.}..set
0060: 20 3a 3a 6e 52 6f 77 20 30 0a 73 65 74 20 3a 3a   ::nRow 0.set ::
0070: 6e 52 6f 77 50 65 72 44 6f 74 20 31 30 30 30 0a  nRowPerDot 1000.
0080: 0a 70 72 6f 63 20 6c 6f 61 64 5f 68 69 65 72 61  .proc load_hiera
0090: 63 68 79 20 7b 64 69 72 7d 20 7b 0a 20 20 66 6f  chy {dir} {.  fo
00a0: 72 65 61 63 68 20 66 20 5b 67 6c 6f 62 20 2d 6e  reach f [glob -n
00b0: 6f 63 6f 6d 70 6c 61 69 6e 20 2d 64 69 72 20 24  ocomplain -dir $
00c0: 64 69 72 20 2a 5d 20 7b 0a 20 20 20 20 69 66 20  dir *] {.    if 
00d0: 7b 24 3a 3a 4f 28 6c 69 6d 69 74 29 20 26 26 20  {$::O(limit) && 
00e0: 24 3a 3a 6e 52 6f 77 3e 3d 24 3a 3a 4f 28 6c 69  $::nRow>=$::O(li
00f0: 6d 69 74 29 7d 20 62 72 65 61 6b 0a 20 20 20 20  mit)} break.    
0100: 69 66 20 7b 5b 66 69 6c 65 20 69 73 64 69 72 20  if {[file isdir 
0110: 24 66 5d 7d 20 7b 0a 20 20 20 20 20 20 6c 6f 61  $f]} {.      loa
0120: 64 5f 68 69 65 72 61 63 68 79 20 24 66 0a 20 20  d_hierachy $f.  
0130: 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20    } else {.     
0140: 20 64 62 20 65 76 61 6c 20 7b 20 49 4e 53 45 52   db eval { INSER
0150: 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53  T INTO t1 VALUES
0160: 28 24 66 2c 20 6c 6f 61 64 66 69 6c 65 28 24 66  ($f, loadfile($f
0170: 29 29 20 7d 0a 20 20 20 20 20 20 69 6e 63 72 20  )) }.      incr 
0180: 3a 3a 6e 52 6f 77 0a 0a 20 20 20 20 20 20 69 66  ::nRow..      if
0190: 20 7b 24 3a 3a 4f 28 74 72 61 6e 73 29 20 26 26   {$::O(trans) &&
01a0: 20 28 24 3a 3a 6e 52 6f 77 20 25 20 24 3a 3a 4f   ($::nRow % $::O
01b0: 28 74 72 61 6e 73 29 29 3d 3d 30 7d 20 7b 0a 20  (trans))==0} {. 
01c0: 20 20 20 20 20 20 20 64 62 20 65 76 61 6c 20 7b         db eval {
01d0: 20 43 4f 4d 4d 49 54 20 7d 0a 20 20 20 20 20 20   COMMIT }.      
01e0: 20 20 64 62 20 65 76 61 6c 20 7b 20 49 4e 53 45    db eval { INSE
01f0: 52 54 20 49 4e 54 4f 20 74 31 28 74 31 29 20 56  RT INTO t1(t1) V
0200: 41 4c 55 45 53 28 27 69 6e 74 65 67 72 69 74 79  ALUES('integrity
0210: 2d 63 68 65 63 6b 27 29 20 7d 0a 20 20 20 20 20  -check') }.     
0220: 20 20 20 64 62 20 65 76 61 6c 20 7b 20 42 45 47     db eval { BEG
0230: 49 4e 20 7d 0a 20 20 20 20 20 20 7d 0a 0a 20 20  IN }.      }..  
0240: 20 20 20 20 69 66 20 7b 28 24 3a 3a 6e 52 6f 77      if {($::nRow
0250: 20 25 20 24 3a 3a 6e 52 6f 77 50 65 72 44 6f 74   % $::nRowPerDot
0260: 29 3d 3d 30 7d 20 7b 0a 20 20 20 20 20 20 20 20  )==0} {.        
0270: 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 20  puts -nonewline 
0280: 2e 0a 20 20 20 20 20 20 20 20 69 66 20 7b 28 24  ..        if {($
0290: 3a 3a 6e 52 6f 77 20 25 20 28 36 35 2a 24 3a 3a  ::nRow % (65*$::
02a0: 6e 52 6f 77 50 65 72 44 6f 74 29 29 3d 3d 30 7d  nRowPerDot))==0}
02b0: 20 7b 20 70 75 74 73 20 22 22 20 7d 0a 20 20 20   { puts "" }.   
02c0: 20 20 20 20 20 66 6c 75 73 68 20 73 74 64 6f 75       flush stdou
02d0: 74 0a 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 7d  t.      }..    }
02e0: 0a 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 75 73 61  .  }.}..proc usa
02f0: 67 65 20 7b 7d 20 7b 0a 20 20 70 75 74 73 20 73  ge {} {.  puts s
0300: 74 64 65 72 72 20 22 55 73 61 67 65 3a 20 24 3a  tderr "Usage: $:
0310: 3a 61 72 67 76 30 20 3f 53 57 49 54 43 48 45 53  :argv0 ?SWITCHES
0320: 3f 20 44 41 54 41 42 41 53 45 20 50 41 54 48 22  ? DATABASE PATH"
0330: 0a 20 20 70 75 74 73 20 73 74 64 65 72 72 20 22  .  puts stderr "
0340: 22 0a 20 20 70 75 74 73 20 73 74 64 65 72 72 20  ".  puts stderr 
0350: 22 53 77 69 74 63 68 65 73 20 61 72 65 3a 22 0a  "Switches are:".
0360: 20 20 70 75 74 73 20 73 74 64 65 72 72 20 22 20    puts stderr " 
0370: 20 2d 66 74 73 34 20 20 20 20 20 20 20 20 28 75   -fts4        (u
0380: 73 65 20 66 74 73 34 20 69 6e 73 74 65 61 64 20  se fts4 instead 
0390: 6f 66 20 66 74 73 35 29 22 0a 20 20 70 75 74 73  of fts5)".  puts
03a0: 20 73 74 64 65 72 72 20 22 20 20 2d 66 74 73 35   stderr "  -fts5
03b0: 20 20 20 20 20 20 20 20 28 75 73 65 20 66 74 73          (use fts
03c0: 35 29 22 0a 20 20 70 75 74 73 20 73 74 64 65 72  5)".  puts stder
03d0: 72 20 22 20 20 2d 70 6f 72 74 65 72 20 20 20 20  r "  -porter    
03e0: 20 20 28 75 73 65 20 70 6f 72 74 65 72 20 74 6f    (use porter to
03f0: 6b 65 6e 69 7a 65 72 29 22 0a 20 20 70 75 74 73  kenizer)".  puts
0400: 20 73 74 64 65 72 72 20 22 20 20 2d 64 65 6c 65   stderr "  -dele
0410: 74 65 20 20 20 20 20 20 28 64 65 6c 65 74 65 20  te      (delete 
0420: 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
0430: 65 20 62 65 66 6f 72 65 20 73 74 61 72 74 69 6e  e before startin
0440: 67 29 22 0a 20 20 70 75 74 73 20 73 74 64 65 72  g)".  puts stder
0450: 72 20 22 20 20 2d 6c 69 6d 69 74 20 4e 20 20 20  r "  -limit N   
0460: 20 20 28 6c 6f 61 64 20 6e 6f 20 6d 6f 72 65 20    (load no more 
0470: 74 68 61 6e 20 4e 20 64 6f 63 75 6d 65 6e 74 73  than N documents
0480: 29 22 0a 20 20 70 75 74 73 20 73 74 64 65 72 72  )".  puts stderr
0490: 20 22 20 20 2d 61 75 74 6f 6d 65 72 67 65 20 4e   "  -automerge N
04a0: 20 28 73 65 74 20 74 68 65 20 61 75 74 6f 6d 65   (set the autome
04b0: 72 67 65 20 70 61 72 61 6d 65 74 65 72 20 74 6f  rge parameter to
04c0: 20 4e 29 22 0a 20 20 70 75 74 73 20 73 74 64 65   N)".  puts stde
04d0: 72 72 20 22 20 20 2d 63 72 69 73 69 73 6d 65 72  rr "  -crisismer
04e0: 67 65 20 4e 20 28 73 65 74 20 74 68 65 20 63 72  ge N (set the cr
04f0: 69 73 69 73 6d 65 72 67 65 20 70 61 72 61 6d 65  isismerge parame
0500: 74 65 72 20 74 6f 20 4e 29 22 0a 20 20 70 75 74  ter to N)".  put
0510: 73 20 73 74 64 65 72 72 20 22 20 20 2d 70 72 65  s stderr "  -pre
0520: 66 69 78 20 50 52 45 46 49 58 20 28 63 6f 6d 6d  fix PREFIX (comm
0530: 61 20 73 65 70 61 72 61 74 65 64 20 70 72 65 66  a separated pref
0540: 69 78 3d 20 61 72 67 75 6d 65 6e 74 29 22 0a 20  ix= argument)". 
0550: 20 70 75 74 73 20 73 74 64 65 72 72 20 22 20 20   puts stderr "  
0560: 2d 74 72 61 6e 73 20 4e 20 20 20 20 20 28 63 6f  -trans N     (co
0570: 6d 6d 69 74 20 61 66 74 65 72 20 4e 20 69 6e 73  mmit after N ins
0580: 65 72 74 73 20 2d 20 30 20 3d 3d 20 6e 65 76 65  erts - 0 == neve
0590: 72 29 22 0a 20 20 70 75 74 73 20 73 74 64 65 72  r)".  puts stder
05a0: 72 20 22 20 20 2d 68 61 73 68 73 69 7a 65 20 4e  r "  -hashsize N
05b0: 20 20 28 73 65 74 20 74 68 65 20 66 74 73 35 20    (set the fts5 
05c0: 68 61 73 68 73 69 7a 65 20 70 61 72 61 6d 65 74  hashsize paramet
05d0: 65 72 20 74 6f 20 4e 29 22 0a 20 20 70 75 74 73  er to N)".  puts
05e0: 20 73 74 64 65 72 72 20 22 20 20 2d 64 65 74 61   stderr "  -deta
05f0: 69 6c 20 4d 4f 44 45 20 28 64 65 74 61 69 6c 20  il MODE (detail 
0600: 6d 6f 64 65 20 66 6f 72 20 66 74 73 35 20 74 61  mode for fts5 ta
0610: 62 6c 65 73 29 22 0a 20 20 65 78 69 74 20 31 0a  bles)".  exit 1.
0620: 7d 0a 0a 73 65 74 20 4f 28 76 74 61 62 29 20 20  }..set O(vtab)  
0630: 20 20 20 20 20 66 74 73 35 0a 73 65 74 20 4f 28       fts5.set O(
0640: 74 6f 6b 29 20 20 20 20 20 20 20 20 22 22 0a 73  tok)        "".s
0650: 65 74 20 4f 28 6c 69 6d 69 74 29 20 20 20 20 20  et O(limit)     
0660: 20 30 0a 73 65 74 20 4f 28 64 65 6c 65 74 65 29   0.set O(delete)
0670: 20 20 20 20 20 30 0a 73 65 74 20 4f 28 61 75 74       0.set O(aut
0680: 6f 6d 65 72 67 65 29 20 20 2d 31 0a 73 65 74 20  omerge)  -1.set 
0690: 4f 28 63 72 69 73 69 73 6d 65 72 67 65 29 20 20  O(crisismerge)  
06a0: 2d 31 0a 73 65 74 20 4f 28 70 72 65 66 69 78 29  -1.set O(prefix)
06b0: 20 20 20 20 20 22 22 0a 73 65 74 20 4f 28 74 72       "".set O(tr
06c0: 61 6e 73 29 20 20 20 20 20 20 30 0a 73 65 74 20  ans)      0.set 
06d0: 4f 28 68 61 73 68 73 69 7a 65 29 20 20 20 2d 31  O(hashsize)   -1
06e0: 0a 73 65 74 20 4f 28 64 65 74 61 69 6c 29 20 20  .set O(detail)  
06f0: 20 20 20 66 75 6c 6c 0a 0a 69 66 20 7b 5b 6c 6c     full..if {[ll
0700: 65 6e 67 74 68 20 24 61 72 67 76 5d 3c 32 7d 20  ength $argv]<2} 
0710: 75 73 61 67 65 0a 73 65 74 20 6e 4f 70 74 20 5b  usage.set nOpt [
0720: 65 78 70 72 20 7b 5b 6c 6c 65 6e 67 74 68 20 24  expr {[llength $
0730: 61 72 67 76 5d 2d 32 7d 5d 0a 66 6f 72 20 7b 73  argv]-2}].for {s
0740: 65 74 20 69 20 30 7d 20 7b 24 69 20 3c 20 24 6e  et i 0} {$i < $n
0750: 4f 70 74 7d 20 7b 69 6e 63 72 20 69 7d 20 7b 0a  Opt} {incr i} {.
0760: 20 20 73 65 74 20 61 72 67 20 5b 6c 69 6e 64 65    set arg [linde
0770: 78 20 24 61 72 67 76 20 24 69 5d 0a 20 20 73 77  x $argv $i].  sw
0780: 69 74 63 68 20 2d 2d 20 5b 6c 69 6e 64 65 78 20  itch -- [lindex 
0790: 24 61 72 67 76 20 24 69 5d 20 7b 0a 20 20 20 20  $argv $i] {.    
07a0: 2d 66 74 73 34 20 7b 0a 20 20 20 20 20 20 73 65  -fts4 {.      se
07b0: 74 20 4f 28 76 74 61 62 29 20 66 74 73 34 0a 20  t O(vtab) fts4. 
07c0: 20 20 20 7d 0a 0a 20 20 20 20 2d 66 74 73 35 20     }..    -fts5 
07d0: 7b 0a 20 20 20 20 20 20 73 65 74 20 4f 28 76 74  {.      set O(vt
07e0: 61 62 29 20 66 74 73 35 0a 20 20 20 20 7d 0a 0a  ab) fts5.    }..
07f0: 20 20 20 20 2d 70 6f 72 74 65 72 20 7b 0a 20 20      -porter {.  
0800: 20 20 20 20 73 65 74 20 4f 28 74 6f 6b 29 20 22      set O(tok) "
0810: 2c 20 74 6f 6b 65 6e 69 7a 65 3d 70 6f 72 74 65  , tokenize=porte
0820: 72 22 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2d 64  r".    }..    -d
0830: 65 6c 65 74 65 20 7b 0a 20 20 20 20 20 20 73 65  elete {.      se
0840: 74 20 4f 28 64 65 6c 65 74 65 29 20 31 0a 20 20  t O(delete) 1.  
0850: 20 20 7d 0a 0a 20 20 20 20 2d 6c 69 6d 69 74 20    }..    -limit 
0860: 7b 0a 20 20 20 20 20 20 69 66 20 7b 20 5b 69 6e  {.      if { [in
0870: 63 72 20 69 5d 3e 3d 24 6e 4f 70 74 20 7d 20 75  cr i]>=$nOpt } u
0880: 73 61 67 65 0a 20 20 20 20 20 20 73 65 74 20 4f  sage.      set O
0890: 28 6c 69 6d 69 74 29 20 5b 6c 69 6e 64 65 78 20  (limit) [lindex 
08a0: 24 61 72 67 76 20 24 69 5d 0a 20 20 20 20 7d 0a  $argv $i].    }.
08b0: 0a 20 20 20 20 2d 74 72 61 6e 73 20 7b 0a 20 20  .    -trans {.  
08c0: 20 20 20 20 69 66 20 7b 20 5b 69 6e 63 72 20 69      if { [incr i
08d0: 5d 3e 3d 24 6e 4f 70 74 20 7d 20 75 73 61 67 65  ]>=$nOpt } usage
08e0: 0a 20 20 20 20 20 20 73 65 74 20 4f 28 74 72 61  .      set O(tra
08f0: 6e 73 29 20 5b 6c 69 6e 64 65 78 20 24 61 72 67  ns) [lindex $arg
0900: 76 20 24 69 5d 0a 20 20 20 20 7d 0a 20 20 20 20  v $i].    }.    
0910: 0a 20 20 20 20 2d 61 75 74 6f 6d 65 72 67 65 20  .    -automerge 
0920: 7b 0a 20 20 20 20 20 20 69 66 20 7b 20 5b 69 6e  {.      if { [in
0930: 63 72 20 69 5d 3e 3d 24 6e 4f 70 74 20 7d 20 75  cr i]>=$nOpt } u
0940: 73 61 67 65 0a 20 20 20 20 20 20 73 65 74 20 4f  sage.      set O
0950: 28 61 75 74 6f 6d 65 72 67 65 29 20 5b 6c 69 6e  (automerge) [lin
0960: 64 65 78 20 24 61 72 67 76 20 24 69 5d 0a 20 20  dex $argv $i].  
0970: 20 20 7d 0a 0a 20 20 20 20 2d 63 72 69 73 69 73    }..    -crisis
0980: 6d 65 72 67 65 20 7b 0a 20 20 20 20 20 20 69 66  merge {.      if
0990: 20 7b 20 5b 69 6e 63 72 20 69 5d 3e 3d 24 6e 4f   { [incr i]>=$nO
09a0: 70 74 20 7d 20 75 73 61 67 65 0a 20 20 20 20 20  pt } usage.     
09b0: 20 73 65 74 20 4f 28 63 72 69 73 69 73 6d 65 72   set O(crisismer
09c0: 67 65 29 20 5b 6c 69 6e 64 65 78 20 24 61 72 67  ge) [lindex $arg
09d0: 76 20 24 69 5d 0a 20 20 20 20 7d 0a 0a 20 20 20  v $i].    }..   
09e0: 20 2d 70 72 65 66 69 78 20 7b 0a 20 20 20 20 20   -prefix {.     
09f0: 20 69 66 20 7b 20 5b 69 6e 63 72 20 69 5d 3e 3d   if { [incr i]>=
0a00: 24 6e 4f 70 74 20 7d 20 75 73 61 67 65 0a 20 20  $nOpt } usage.  
0a10: 20 20 20 20 73 65 74 20 4f 28 70 72 65 66 69 78      set O(prefix
0a20: 29 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 76 20  ) [lindex $argv 
0a30: 24 69 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2d  $i].    }..    -
0a40: 68 61 73 68 73 69 7a 65 20 7b 0a 20 20 20 20 20  hashsize {.     
0a50: 20 69 66 20 7b 20 5b 69 6e 63 72 20 69 5d 3e 3d   if { [incr i]>=
0a60: 24 6e 4f 70 74 20 7d 20 75 73 61 67 65 0a 20 20  $nOpt } usage.  
0a70: 20 20 20 20 73 65 74 20 4f 28 68 61 73 68 73 69      set O(hashsi
0a80: 7a 65 29 20 5b 6c 69 6e 64 65 78 20 24 61 72 67  ze) [lindex $arg
0a90: 76 20 24 69 5d 0a 20 20 20 20 7d 0a 0a 20 20 20  v $i].    }..   
0aa0: 20 2d 64 65 74 61 69 6c 20 7b 0a 20 20 20 20 20   -detail {.     
0ab0: 20 69 66 20 7b 20 5b 69 6e 63 72 20 69 5d 3e 3d   if { [incr i]>=
0ac0: 24 6e 4f 70 74 20 7d 20 75 73 61 67 65 0a 20 20  $nOpt } usage.  
0ad0: 20 20 20 20 73 65 74 20 4f 28 64 65 74 61 69 6c      set O(detail
0ae0: 29 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 76 20  ) [lindex $argv 
0af0: 24 69 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 64  $i].    }..    d
0b00: 65 66 61 75 6c 74 20 7b 0a 20 20 20 20 20 20 75  efault {.      u
0b10: 73 61 67 65 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d  sage.    }.  }.}
0b20: 0a 0a 73 65 74 20 64 62 66 69 6c 65 20 5b 6c 69  ..set dbfile [li
0b30: 6e 64 65 78 20 24 61 72 67 76 20 65 6e 64 2d 31  ndex $argv end-1
0b40: 5d 0a 69 66 20 7b 24 4f 28 64 65 6c 65 74 65 29  ].if {$O(delete)
0b50: 7d 20 7b 20 66 69 6c 65 20 64 65 6c 65 74 65 20  } { file delete 
0b60: 2d 66 6f 72 63 65 20 24 64 62 66 69 6c 65 20 7d  -force $dbfile }
0b70: 0a 73 71 6c 69 74 65 33 20 64 62 20 24 64 62 66  .sqlite3 db $dbf
0b80: 69 6c 65 0a 63 61 74 63 68 20 7b 20 6c 6f 61 64  ile.catch { load
0b90: 5f 73 74 61 74 69 63 5f 65 78 74 65 6e 73 69 6f  _static_extensio
0ba0: 6e 20 64 62 20 66 74 73 35 20 7d 0a 64 62 20 66  n db fts5 }.db f
0bb0: 75 6e 63 20 6c 6f 61 64 66 69 6c 65 20 6c 6f 61  unc loadfile loa
0bc0: 64 66 69 6c 65 0a 64 62 20 65 76 61 6c 20 22 50  dfile.db eval "P
0bd0: 52 41 47 4d 41 20 70 61 67 65 5f 73 69 7a 65 3d  RAGMA page_size=
0be0: 34 30 39 36 22 0a 0a 64 62 20 65 76 61 6c 20 42  4096"..db eval B
0bf0: 45 47 49 4e 0a 20 20 73 65 74 20 70 72 65 66 20  EGIN.  set pref 
0c00: 22 22 0a 20 20 69 66 20 7b 24 4f 28 70 72 65 66  "".  if {$O(pref
0c10: 69 78 29 21 3d 22 22 7d 20 7b 20 73 65 74 20 70  ix)!=""} { set p
0c20: 72 65 66 20 22 2c 20 70 72 65 66 69 78 3d 27 24  ref ", prefix='$
0c30: 4f 28 70 72 65 66 69 78 29 27 22 20 7d 0a 20 20  O(prefix)'" }.  
0c40: 69 66 20 7b 24 4f 28 76 74 61 62 29 3d 3d 22 66  if {$O(vtab)=="f
0c50: 74 73 35 22 7d 20 7b 0a 20 20 20 20 61 70 70 65  ts5"} {.    appe
0c60: 6e 64 20 70 72 65 66 20 22 2c 20 64 65 74 61 69  nd pref ", detai
0c70: 6c 3d 24 4f 28 64 65 74 61 69 6c 29 22 0a 20 20  l=$O(detail)".  
0c80: 7d 0a 20 20 63 61 74 63 68 20 7b 0a 20 20 20 20  }.  catch {.    
0c90: 64 62 20 65 76 61 6c 20 22 43 52 45 41 54 45 20  db eval "CREATE 
0ca0: 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 74 31  VIRTUAL TABLE t1
0cb0: 20 55 53 49 4e 47 20 24 4f 28 76 74 61 62 29 20   USING $O(vtab) 
0cc0: 28 70 61 74 68 2c 20 63 6f 6e 74 65 6e 74 24 4f  (path, content$O
0cd0: 28 74 6f 6b 29 24 70 72 65 66 29 22 0a 20 20 20  (tok)$pref)".   
0ce0: 20 64 62 20 65 76 61 6c 20 22 49 4e 53 45 52 54   db eval "INSERT
0cf0: 20 49 4e 54 4f 20 74 31 28 74 31 2c 20 72 61 6e   INTO t1(t1, ran
0d00: 6b 29 20 56 41 4c 55 45 53 28 27 70 67 73 7a 27  k) VALUES('pgsz'
0d10: 2c 20 34 30 35 30 29 3b 22 0a 20 20 7d 0a 0a 20  , 4050);".  }.. 
0d20: 20 69 66 20 7b 24 4f 28 68 61 73 68 73 69 7a 65   if {$O(hashsize
0d30: 29 3e 3d 30 7d 20 7b 0a 20 20 20 20 63 61 74 63  )>=0} {.    catc
0d40: 68 20 7b 0a 20 20 20 20 20 20 64 62 20 65 76 61  h {.      db eva
0d50: 6c 20 22 49 4e 53 45 52 54 20 49 4e 54 4f 20 74  l "INSERT INTO t
0d60: 31 28 74 31 2c 20 72 61 6e 6b 29 20 56 41 4c 55  1(t1, rank) VALU
0d70: 45 53 28 27 68 61 73 68 73 69 7a 65 27 2c 20 24  ES('hashsize', $
0d80: 4f 28 68 61 73 68 73 69 7a 65 29 29 3b 22 0a 20  O(hashsize));". 
0d90: 20 20 20 7d 0a 20 20 7d 0a 0a 0a 20 20 69 66 20     }.  }...  if 
0da0: 7b 24 4f 28 61 75 74 6f 6d 65 72 67 65 29 3e 3d  {$O(automerge)>=
0db0: 30 7d 20 7b 0a 20 20 20 20 69 66 20 7b 24 4f 28  0} {.    if {$O(
0dc0: 76 74 61 62 29 20 3d 3d 20 22 66 74 73 35 22 7d  vtab) == "fts5"}
0dd0: 20 7b 0a 20 20 20 20 20 20 64 62 20 65 76 61 6c   {.      db eval
0de0: 20 7b 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74   { INSERT INTO t
0df0: 31 28 74 31 2c 20 72 61 6e 6b 29 20 56 41 4c 55  1(t1, rank) VALU
0e00: 45 53 28 27 61 75 74 6f 6d 65 72 67 65 27 2c 20  ES('automerge', 
0e10: 24 4f 28 61 75 74 6f 6d 65 72 67 65 29 29 20 7d  $O(automerge)) }
0e20: 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20  .    } else {.  
0e30: 20 20 20 20 64 62 20 65 76 61 6c 20 7b 20 49 4e      db eval { IN
0e40: 53 45 52 54 20 49 4e 54 4f 20 74 31 28 74 31 29  SERT INTO t1(t1)
0e50: 20 56 41 4c 55 45 53 28 27 61 75 74 6f 6d 65 72   VALUES('automer
0e60: 67 65 3d 27 20 7c 7c 20 24 4f 28 61 75 74 6f 6d  ge=' || $O(autom
0e70: 65 72 67 65 29 29 20 7d 0a 20 20 20 20 7d 0a 20  erge)) }.    }. 
0e80: 20 7d 0a 20 20 69 66 20 7b 24 4f 28 63 72 69 73   }.  if {$O(cris
0e90: 69 73 6d 65 72 67 65 29 3e 3d 30 7d 20 7b 0a 20  ismerge)>=0} {. 
0ea0: 20 20 20 69 66 20 7b 24 4f 28 76 74 61 62 29 20     if {$O(vtab) 
0eb0: 3d 3d 20 22 66 74 73 35 22 7d 20 7b 0a 20 20 20  == "fts5"} {.   
0ec0: 20 20 20 64 62 20 65 76 61 6c 20 7b 49 4e 53 45     db eval {INSE
0ed0: 52 54 20 49 4e 54 4f 20 74 31 28 74 31 2c 20 72  RT INTO t1(t1, r
0ee0: 61 6e 6b 29 20 56 41 4c 55 45 53 28 27 63 72 69  ank) VALUES('cri
0ef0: 73 69 73 6d 65 72 67 65 27 2c 20 24 4f 28 63 72  sismerge', $O(cr
0f00: 69 73 69 73 6d 65 72 67 65 29 29 7d 0a 20 20 20  isismerge))}.   
0f10: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 7d 0a   } else {.    }.
0f20: 20 20 7d 0a 20 20 6c 6f 61 64 5f 68 69 65 72 61    }.  load_hiera
0f30: 63 68 79 20 5b 6c 69 6e 64 65 78 20 24 61 72 67  chy [lindex $arg
0f40: 76 20 65 6e 64 5d 0a 64 62 20 65 76 61 6c 20 43  v end].db eval C
0f50: 4f 4d 4d 49 54 0a 70 75 74 73 20 22 22 0a 0a 0a  OMMIT.puts ""...
0f60: 0a                                               .