Artifact
95b03429ee6b138645703c6ca192c3ac96eaf093:
- File
ext/fts5/tool/loadfts5.tcl
— part of check-in
[81e830e2]
at
2016-01-20 16:36:10
on branch trunk
— Add a -detail option to the loadfts5.tcl script. For creating tables with the detail= option set.
(user:
dan
size: 3937)
[more...]
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 .