Hex Artifact Content
Not logged in

Artifact b6e0684c32126bf26a53c8c15e720eed363ba325:

File tools/tclfossil/lib/vc/fossil/schema-1.0.tm part of check-in [8c4b530084] - tclfossil: added schema command by mjanssen on 2008-02-19 21:58:14.

0000: 23 23 20 2d 2a 2d 20 74 63 6c 20 2d 2a 2d 0d 0a  ## -*- tcl -*-..
0010: 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23  # # ## ### #####
0020: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23   ######## ######
0030: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23  ####### ########
0040: 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 23  #############..#
0050: 23 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20  # Copyright (c) 
0060: 32 30 30 38 20 4d 61 72 6b 20 4a 61 6e 73 73 65  2008 Mark Jansse
0070: 6e 2e 0d 0a 23 0d 0a 23 20 54 68 69 73 20 73 6f  n...#..# This so
0080: 66 74 77 61 72 65 20 69 73 20 6c 69 63 65 6e 73  ftware is licens
0090: 65 64 20 61 73 20 64 65 73 63 72 69 62 65 64 20  ed as described 
00a0: 69 6e 20 74 68 65 20 66 69 6c 65 20 4c 49 43 45  in the file LICE
00b0: 4e 53 45 2c 20 77 68 69 63 68 0d 0a 23 20 79 6f  NSE, which..# yo
00c0: 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65  u should have re
00d0: 63 65 69 76 65 64 20 61 73 20 70 61 72 74 20 6f  ceived as part o
00e0: 66 20 74 68 69 73 20 64 69 73 74 72 69 62 75 74  f this distribut
00f0: 69 6f 6e 2e 0d 0a 23 0d 0a 23 20 54 68 69 73 20  ion...#..# This 
0100: 73 6f 66 74 77 61 72 65 20 63 6f 6e 73 69 73 74  software consist
0110: 73 20 6f 66 20 76 6f 6c 75 6e 74 61 72 79 20 63  s of voluntary c
0120: 6f 6e 74 72 69 62 75 74 69 6f 6e 73 20 6d 61 64  ontributions mad
0130: 65 20 62 79 20 6d 61 6e 79 0d 0a 23 20 69 6e 64  e by many..# ind
0140: 69 76 69 64 75 61 6c 73 2e 20 20 46 6f 72 20 65  ividuals.  For e
0150: 78 61 63 74 20 63 6f 6e 74 72 69 62 75 74 69 6f  xact contributio
0160: 6e 20 68 69 73 74 6f 72 79 2c 20 73 65 65 20 74  n history, see t
0170: 68 65 20 72 65 76 69 73 69 6f 6e 0d 0a 23 20 68  he revision..# h
0180: 69 73 74 6f 72 79 20 61 6e 64 20 6c 6f 67 73 2c  istory and logs,
0190: 20 61 76 61 69 6c 61 62 6c 65 20 61 74 20 68 74   available at ht
01a0: 74 70 3a 2f 2f 66 6f 73 73 69 6c 2d 73 63 6d 2e  tp://fossil-scm.
01b0: 68 77 61 63 69 2e 63 6f 6d 2f 66 6f 73 73 69 6c  hwaci.com/fossil
01c0: 0d 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 23  ..# # ## ### ###
01d0: 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23  ## ######## ####
01e0: 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23  ######### ######
01f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
0200: 0a 0d 0a 23 23 20 52 65 70 6f 73 69 74 6f 72 79  ...## Repository
0210: 20 73 63 68 65 6d 61 27 73 0d 0a 0d 0a 23 20 23   schema's....# #
0220: 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23   ## ### ##### ##
0230: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23  ###### #########
0240: 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23  #### ###########
0250: 23 23 23 23 23 23 23 23 23 23 0d 0a 23 23 20 52  ##########..## R
0260: 65 71 75 69 72 65 6d 65 6e 74 73 0d 0a 0d 0a 70  equirements....p
0270: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 54  ackage require T
0280: 63 6c 20 38 2e 35 20 20 20 20 20 20 20 20 20 20  cl 8.5          
0290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
02a0: 20 20 20 3b 20 23 20 52 65 71 75 69 72 65 64 20     ; # Required 
02b0: 72 75 6e 74 69 6d 65 2e 0d 0a 70 61 63 6b 61 67  runtime...packag
02c0: 65 20 72 65 71 75 69 72 65 20 73 6e 69 74 20 20  e require snit  
02d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
02e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20                ; 
02f0: 23 20 4f 4f 20 73 79 73 74 65 6d 2e 0d 0a 0d 0a  # OO system.....
0300: 70 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65 20  package provide 
0310: 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 73 63 68 65  vc::fossil::sche
0320: 6d 61 20 31 2e 30 0d 0a 0d 0a 23 20 23 20 23 23  ma 1.0....# # ##
0330: 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23   ### ##### #####
0340: 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23  ### ############
0350: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23  # ##############
0360: 23 23 23 23 23 23 23 0d 0a 23 23 0d 0a 0d 0a 0d  #######..##.....
0370: 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20 65 76 61  ...namespace eva
0380: 6c 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 20 7b  l ::vc::fossil {
0390: 0d 0a 0d 0a 20 20 20 20 73 6e 69 74 3a 3a 74 79  ....    snit::ty
03a0: 70 65 20 73 63 68 65 6d 61 20 7b 0d 0a 20 20 20  pe schema {..   
03b0: 20 20 20 20 20 74 79 70 65 6d 65 74 68 6f 64 20       typemethod 
03c0: 72 65 70 6f 31 20 7b 7d 20 7b 0d 0a 09 20 20 20  repo1 {} {...   
03d0: 20 72 65 74 75 72 6e 20 7b 0d 0a 09 09 2d 2d 20   return {....-- 
03e0: 54 68 65 20 42 4c 4f 42 20 61 6e 64 20 44 45 4c  The BLOB and DEL
03f0: 54 41 20 74 61 62 6c 65 73 20 63 6f 6e 74 61 69  TA tables contai
0400: 6e 20 61 6c 6c 20 72 65 63 6f 72 64 73 20 68 65  n all records he
0410: 6c 64 20 69 6e 20 74 68 65 20 72 65 70 6f 73 69  ld in the reposi
0420: 74 6f 72 79 2e 0d 0a 09 09 2d 2d 0d 0a 09 09 2d  tory.....--....-
0430: 2d 20 54 68 65 20 42 4c 4f 42 2e 43 4f 4e 54 45  - The BLOB.CONTE
0440: 4e 54 20 63 6f 6c 75 6d 6e 20 69 73 20 61 6c 77  NT column is alw
0450: 61 79 73 20 63 6f 6d 70 72 65 73 73 65 64 20 75  ays compressed u
0460: 73 69 6e 67 20 6c 69 62 7a 2e 20 20 54 68 69 73  sing libz.  This
0470: 0d 0a 09 09 2d 2d 20 63 6f 6c 75 6d 6e 20 6d 69  ....-- column mi
0480: 67 68 74 20 68 6f 6c 64 20 74 68 65 20 66 75 6c  ght hold the ful
0490: 6c 20 74 65 78 74 20 6f 66 20 74 68 65 20 72 65  l text of the re
04a0: 63 6f 72 64 20 6f 72 20 69 74 20 6d 69 67 68 74  cord or it might
04b0: 20 68 6f 6c 64 0d 0a 09 09 2d 2d 20 61 20 64 65   hold....-- a de
04c0: 6c 74 61 20 74 68 61 74 20 69 73 20 61 62 6c 65  lta that is able
04d0: 20 74 6f 20 72 65 63 6f 6e 73 74 72 75 63 74 20   to reconstruct 
04e0: 74 68 65 20 72 65 63 6f 72 64 20 66 72 6f 6d 20  the record from 
04f0: 73 6f 6d 65 20 6f 74 68 65 72 0d 0a 09 09 2d 2d  some other....--
0500: 20 72 65 63 6f 72 64 2e 20 20 49 66 20 42 4c 4f   record.  If BLO
0510: 42 2e 43 4f 4e 54 45 4e 54 20 68 6f 6c 64 73 20  B.CONTENT holds 
0520: 61 20 64 65 6c 74 61 2c 20 74 68 65 6e 20 61 20  a delta, then a 
0530: 44 45 4c 54 41 20 74 61 62 6c 65 20 65 6e 74 72  DELTA table entr
0540: 79 0d 0a 09 09 2d 2d 20 77 69 6c 6c 20 65 78 69  y....-- will exi
0550: 73 74 20 66 6f 72 20 74 68 65 20 72 65 63 6f 72  st for the recor
0560: 64 20 61 6e 64 20 74 68 61 74 20 65 6e 74 72 79  d and that entry
0570: 20 77 69 6c 6c 20 70 6f 69 6e 74 20 74 6f 20 61   will point to a
0580: 6e 6f 74 68 65 72 0d 0a 09 09 2d 2d 20 65 6e 74  nother....-- ent
0590: 72 79 20 74 68 61 74 20 68 6f 6c 64 73 20 74 68  ry that holds th
05a0: 65 20 73 6f 75 72 63 65 20 6f 66 20 74 68 65 20  e source of the 
05b0: 64 65 6c 74 61 2e 20 20 44 65 6c 74 61 73 20 63  delta.  Deltas c
05c0: 61 6e 20 62 65 20 63 68 61 69 6e 65 64 2e 0d 0a  an be chained...
05d0: 09 09 2d 2d 0d 0a 09 09 43 52 45 41 54 45 20 54  ..--....CREATE T
05e0: 41 42 4c 45 20 62 6c 6f 62 28 0d 0a 09 09 09 09  ABLE blob(......
05f0: 20 20 72 69 64 20 49 4e 54 45 47 45 52 20 50 52    rid INTEGER PR
0600: 49 4d 41 52 59 20 4b 45 59 2c 20 20 20 20 20 20  IMARY KEY,      
0610: 20 20 2d 2d 20 52 65 63 6f 72 64 20 49 44 0d 0a    -- Record ID..
0620: 09 09 09 09 20 20 72 63 76 69 64 20 49 4e 54 45  ....  rcvid INTE
0630: 47 45 52 2c 20 20 20 20 20 20 20 20 20 20 20 20  GER,            
0640: 20 20 20 20 20 20 2d 2d 20 4f 72 69 67 69 6e 20        -- Origin 
0650: 6f 66 20 74 68 69 73 20 72 65 63 6f 72 64 0d 0a  of this record..
0660: 09 09 09 09 20 20 73 69 7a 65 20 49 4e 54 45 47  ....  size INTEG
0670: 45 52 2c 20 20 20 20 20 20 20 20 20 20 20 20 20  ER,             
0680: 20 20 20 20 20 20 2d 2d 20 53 69 7a 65 20 6f 66        -- Size of
0690: 20 63 6f 6e 74 65 6e 74 2e 20 2d 31 20 66 6f 72   content. -1 for
06a0: 20 61 20 70 68 61 6e 74 6f 6d 2e 0d 0a 09 09 09   a phantom......
06b0: 09 20 20 75 75 69 64 20 54 45 58 54 20 55 4e 49  .  uuid TEXT UNI
06c0: 51 55 45 2c 20 20 20 20 20 20 20 20 20 20 20 20  QUE,            
06d0: 20 20 20 2d 2d 20 53 48 41 31 20 68 61 73 68 20     -- SHA1 hash 
06e0: 6f 66 20 74 68 65 20 63 6f 6e 74 65 6e 74 0d 0a  of the content..
06f0: 09 09 09 09 20 20 63 6f 6e 74 65 6e 74 20 42 4c  ....  content BL
0700: 4f 42 20 20 20 20 20 20 20 20 20 20 20 20 20 20  OB              
0710: 20 20 20 20 20 20 2d 2d 20 43 6f 6d 70 72 65 73        -- Compres
0720: 73 65 64 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74  sed content of t
0730: 68 69 73 20 72 65 63 6f 72 64 0d 0a 09 09 09 09  his record......
0740: 20 20 29 3b 0d 0a 09 09 43 52 45 41 54 45 20 54    );....CREATE T
0750: 41 42 4c 45 20 64 65 6c 74 61 28 0d 0a 09 09 09  ABLE delta(.....
0760: 09 20 20 20 72 69 64 20 49 4e 54 45 47 45 52 20  .   rid INTEGER 
0770: 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 20 20 20  PRIMARY KEY,    
0780: 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 20               -- 
0790: 52 65 63 6f 72 64 20 49 44 0d 0a 09 09 09 09 20  Record ID...... 
07a0: 20 20 73 72 63 69 64 20 49 4e 54 45 47 45 52 20    srcid INTEGER 
07b0: 4e 4f 54 20 4e 55 4c 4c 20 52 45 46 45 52 45 4e  NOT NULL REFEREN
07c0: 43 45 53 20 62 6c 6f 62 20 20 20 2d 2d 20 52 65  CES blob   -- Re
07d0: 63 6f 72 64 20 68 6f 6c 64 69 6e 67 20 73 6f 75  cord holding sou
07e0: 72 63 65 20 64 6f 63 75 6d 65 6e 74 0d 0a 09 09  rce document....
07f0: 09 09 20 20 20 29 3b 0d 0a 09 09 43 52 45 41 54  ..   );....CREAT
0800: 45 20 49 4e 44 45 58 20 64 65 6c 74 61 5f 69 31  E INDEX delta_i1
0810: 20 4f 4e 20 64 65 6c 74 61 28 73 72 63 69 64 29   ON delta(srcid)
0820: 3b 0d 0a 0d 0a 09 09 2d 2d 20 57 68 65 6e 65 76  ;......-- Whenev
0830: 65 72 20 6e 65 77 20 62 6c 6f 62 73 20 61 72 65  er new blobs are
0840: 20 72 65 63 65 69 76 65 64 20 69 6e 74 6f 20 74   received into t
0850: 68 65 20 72 65 70 6f 73 69 74 6f 72 79 2c 20 61  he repository, a
0860: 6e 20 65 6e 74 72 79 0d 0a 09 09 2d 2d 20 69 6e  n entry....-- in
0870: 20 74 68 69 73 20 74 61 62 6c 65 20 72 65 63 6f   this table reco
0880: 72 64 73 20 74 68 65 20 73 6f 75 72 63 65 20 6f  rds the source o
0890: 66 20 74 68 65 20 62 6c 6f 62 2e 0d 0a 09 09 2d  f the blob.....-
08a0: 2d 0d 0a 09 09 43 52 45 41 54 45 20 54 41 42 4c  -....CREATE TABL
08b0: 45 20 72 63 76 66 72 6f 6d 28 0d 0a 09 09 09 09  E rcvfrom(......
08c0: 20 20 20 20 20 72 63 76 69 64 20 49 4e 54 45 47       rcvid INTEG
08d0: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20  ER PRIMARY KEY, 
08e0: 20 20 20 20 20 2d 2d 20 52 65 63 65 69 76 65 64       -- Received
08f0: 2d 46 72 6f 6d 20 49 44 0d 0a 09 09 09 09 20 20  -From ID......  
0900: 20 20 20 75 69 64 20 49 4e 54 45 47 45 52 20 52     uid INTEGER R
0910: 45 46 45 52 45 4e 43 45 53 20 75 73 65 72 2c 20  EFERENCES user, 
0920: 20 20 20 2d 2d 20 55 73 65 72 20 6c 6f 67 69 6e     -- User login
0930: 0d 0a 09 09 09 09 20 20 20 20 20 6d 74 69 6d 65  ......     mtime
0940: 20 44 41 54 45 54 49 4d 45 2c 20 20 20 20 20 20   DATETIME,      
0950: 20 20 20 20 20 20 20 20 20 20 20 2d 2d 20 54 69             -- Ti
0960: 6d 65 20 6f 72 20 72 65 63 65 69 70 74 0d 0a 09  me or receipt...
0970: 09 09 09 20 20 20 20 20 6e 6f 6e 63 65 20 54 45  ...     nonce TE
0980: 58 54 20 55 4e 49 51 55 45 2c 20 20 20 20 20 20  XT UNIQUE,      
0990: 20 20 20 20 20 20 20 20 2d 2d 20 4e 6f 6e 63 65          -- Nonce
09a0: 20 75 73 65 64 20 66 6f 72 20 6c 6f 67 69 6e 0d   used for login.
09b0: 0a 09 09 09 09 20 20 20 20 20 69 70 61 64 64 72  .....     ipaddr
09c0: 20 54 45 58 54 20 20 20 20 20 20 20 20 20 20 20   TEXT           
09d0: 20 20 20 20 20 20 20 20 20 20 2d 2d 20 52 65 6d            -- Rem
09e0: 6f 74 65 20 49 50 20 61 64 64 72 65 73 73 2e 20  ote IP address. 
09f0: 20 4e 55 4c 4c 20 66 6f 72 20 64 69 72 65 63 74   NULL for direct
0a00: 2e 0d 0a 09 09 09 09 20 20 20 20 20 29 3b 0d 0a  .......     );..
0a10: 0d 0a 09 09 2d 2d 20 49 6e 66 6f 72 6d 61 74 69  ....-- Informati
0a20: 6f 6e 20 61 62 6f 75 74 20 75 73 65 72 73 0d 0a  on about users..
0a30: 09 09 2d 2d 0d 0a 09 09 43 52 45 41 54 45 20 54  ..--....CREATE T
0a40: 41 42 4c 45 20 75 73 65 72 28 0d 0a 09 09 09 09  ABLE user(......
0a50: 20 20 75 69 64 20 49 4e 54 45 47 45 52 20 50 52    uid INTEGER PR
0a60: 49 4d 41 52 59 20 4b 45 59 2c 20 20 20 20 20 20  IMARY KEY,      
0a70: 20 20 2d 2d 20 55 73 65 72 20 49 44 0d 0a 09 09    -- User ID....
0a80: 09 09 20 20 6c 6f 67 69 6e 20 54 45 58 54 2c 20  ..  login TEXT, 
0a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0aa0: 20 20 20 20 2d 2d 20 6c 6f 67 69 6e 20 6e 61 6d      -- login nam
0ab0: 65 20 6f 66 20 74 68 65 20 75 73 65 72 0d 0a 09  e of the user...
0ac0: 09 09 09 20 20 70 77 20 54 45 58 54 2c 20 20 20  ...  pw TEXT,   
0ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ae0: 20 20 20 20 20 2d 2d 20 70 61 73 73 77 6f 72 64       -- password
0af0: 0d 0a 09 09 09 09 20 20 63 61 70 20 54 45 58 54  ......  cap TEXT
0b00: 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,               
0b10: 20 20 20 20 20 20 20 20 2d 2d 20 43 61 70 61 62          -- Capab
0b20: 69 6c 69 74 69 65 73 20 6f 66 20 74 68 69 73 20  ilities of this 
0b30: 75 73 65 72 0d 0a 09 09 09 09 20 20 63 6f 6f 6b  user......  cook
0b40: 69 65 20 54 45 58 54 2c 20 20 20 20 20 20 20 20  ie TEXT,        
0b50: 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 20 57              -- W
0b60: 57 57 20 6c 6f 67 69 6e 20 63 6f 6f 6b 69 65 0d  WW login cookie.
0b70: 0a 09 09 09 09 20 20 69 70 61 64 64 72 20 54 45  .....  ipaddr TE
0b80: 58 54 2c 20 20 20 20 20 20 20 20 20 20 20 20 20  XT,             
0b90: 20 20 20 20 20 20 20 2d 2d 20 49 50 20 61 64 64         -- IP add
0ba0: 72 65 73 73 20 66 6f 72 20 77 68 69 63 68 20 63  ress for which c
0bb0: 6f 6f 6b 69 65 20 69 73 20 76 61 6c 69 64 0d 0a  ookie is valid..
0bc0: 09 09 09 09 20 20 63 65 78 70 69 72 65 20 44 41  ....  cexpire DA
0bd0: 54 45 54 49 4d 45 2c 20 20 20 20 20 20 20 20 20  TETIME,         
0be0: 20 20 20 20 20 20 2d 2d 20 54 69 6d 65 20 77 68        -- Time wh
0bf0: 65 6e 20 63 6f 6f 6b 69 65 20 65 78 70 69 72 65  en cookie expire
0c00: 73 0d 0a 09 09 09 09 20 20 69 6e 66 6f 20 54 45  s......  info TE
0c10: 58 54 2c 20 20 20 20 20 20 20 20 20 20 20 20 20  XT,             
0c20: 20 20 20 20 20 20 20 20 20 2d 2d 20 63 6f 6e 74           -- cont
0c30: 61 63 74 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0d  act information.
0c40: 0a 09 09 09 09 20 20 70 68 6f 74 6f 20 42 4c 4f  .....  photo BLO
0c50: 42 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  B               
0c60: 20 20 20 20 20 20 20 2d 2d 20 4a 50 45 47 20 69         -- JPEG i
0c70: 6d 61 67 65 20 6f 66 20 74 68 69 73 20 75 73 65  mage of this use
0c80: 72 0d 0a 09 09 09 09 20 20 29 3b 0d 0a 0d 0a 09  r......  );.....
0c90: 09 2d 2d 20 54 68 65 20 56 41 52 20 74 61 62 6c  .-- The VAR tabl
0ca0: 65 20 68 6f 6c 64 73 20 6d 69 73 63 65 6c 6c 61  e holds miscella
0cb0: 6e 6f 75 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  nous information
0cc0: 20 61 62 6f 75 74 20 74 68 65 20 72 65 70 6f 73   about the repos
0cd0: 69 74 6f 72 79 2e 0d 0a 09 09 2d 2d 20 69 6e 20  itory.....-- in 
0ce0: 74 68 65 20 66 6f 72 6d 20 6f 66 20 6e 61 6d 65  the form of name
0cf0: 2d 76 61 6c 75 65 20 70 61 69 72 73 2e 0d 0a 09  -value pairs....
0d00: 09 2d 2d 0d 0a 09 09 43 52 45 41 54 45 20 54 41  .--....CREATE TA
0d10: 42 4c 45 20 63 6f 6e 66 69 67 28 0d 0a 09 09 09  BLE config(.....
0d20: 09 20 20 20 20 6e 61 6d 65 20 54 45 58 54 20 50  .    name TEXT P
0d30: 52 49 4d 41 52 59 20 4b 45 59 20 4e 4f 54 20 4e  RIMARY KEY NOT N
0d40: 55 4c 4c 2c 20 20 2d 2d 20 50 72 69 6d 61 72 79  ULL,  -- Primary
0d50: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 6e 74   name of the ent
0d60: 72 79 0d 0a 09 09 09 09 20 20 20 20 76 61 6c 75  ry......    valu
0d70: 65 20 43 4c 4f 42 2c 20 20 20 20 20 20 20 20 20  e CLOB,         
0d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 20               -- 
0d90: 43 6f 6e 74 65 6e 74 20 6f 66 20 74 68 65 20 6e  Content of the n
0da0: 61 6d 65 64 20 70 61 72 61 6d 65 74 65 72 0d 0a  amed parameter..
0db0: 09 09 09 09 20 20 20 20 43 48 45 43 4b 28 20 74  ....    CHECK( t
0dc0: 79 70 65 6f 66 28 6e 61 6d 65 29 3d 27 74 65 78  ypeof(name)='tex
0dd0: 74 27 20 41 4e 44 20 6c 65 6e 67 74 68 28 6e 61  t' AND length(na
0de0: 6d 65 29 3e 3d 31 20 29 0d 0a 09 09 09 09 20 20  me)>=1 )......  
0df0: 20 20 29 3b 0d 0a 0d 0a 09 09 2d 2d 20 41 72 74    );......-- Art
0e00: 69 66 61 63 74 73 20 74 68 61 74 20 73 68 6f 75  ifacts that shou
0e10: 6c 64 20 6e 6f 74 20 62 65 20 70 72 6f 63 65 73  ld not be proces
0e20: 73 65 64 20 61 72 65 20 69 64 65 6e 74 69 66 69  sed are identifi
0e30: 65 64 20 69 6e 20 74 68 65 0d 0a 09 09 2d 2d 20  ed in the....-- 
0e40: 22 73 68 75 6e 22 20 74 61 62 6c 65 2e 20 20 41  "shun" table.  A
0e50: 72 74 69 66 61 63 74 73 20 74 68 61 74 20 61 72  rtifacts that ar
0e60: 65 20 63 6f 6e 74 72 6f 6c 2d 66 69 6c 65 20 66  e control-file f
0e70: 6f 72 67 65 72 69 65 73 20 6f 72 0d 0a 09 09 2d  orgeries or....-
0e80: 2d 20 73 70 61 6d 20 63 61 6e 20 62 65 20 73 68  - spam can be sh
0e90: 75 6e 6e 65 64 20 69 6e 20 6f 72 64 65 72 20 74  unned in order t
0ea0: 6f 20 70 72 65 76 65 6e 74 20 74 68 65 6d 20 66  o prevent them f
0eb0: 72 6f 6d 20 63 6f 6e 74 61 6d 69 6e 61 74 69 6e  rom contaminatin
0ec0: 67 0d 0a 09 09 2d 2d 20 74 68 65 20 72 65 70 6f  g....-- the repo
0ed0: 73 69 74 6f 72 79 2e 0d 0a 09 09 2d 2d 0d 0a 09  sitory.....--...
0ee0: 09 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 68  .CREATE TABLE sh
0ef0: 75 6e 28 75 75 69 64 20 55 4e 49 51 55 45 29 3b  un(uuid UNIQUE);
0f00: 0d 0a 0d 0a 09 09 2d 2d 20 41 6e 20 65 6e 74 72  ......-- An entr
0f10: 79 20 69 6e 20 74 68 69 73 20 74 61 62 6c 65 20  y in this table 
0f20: 64 65 73 63 72 69 62 65 73 20 61 20 64 61 74 61  describes a data
0f30: 62 61 73 65 20 71 75 65 72 79 20 74 68 61 74 20  base query that 
0f40: 67 65 6e 65 72 61 74 65 73 20 61 0d 0a 09 09 2d  generates a....-
0f50: 2d 20 74 61 62 6c 65 20 6f 66 20 74 69 63 6b 65  - table of ticke
0f60: 74 73 2e 0d 0a 09 09 2d 2d 0d 0a 09 09 43 52 45  ts.....--....CRE
0f70: 41 54 45 20 54 41 42 4c 45 20 72 65 70 6f 72 74  ATE TABLE report
0f80: 66 6d 74 28 0d 0a 09 09 09 09 20 20 20 20 20 20  fmt(......      
0f90: 20 72 6e 20 69 6e 74 65 67 65 72 20 70 72 69 6d   rn integer prim
0fa0: 61 72 79 20 6b 65 79 2c 20 20 2d 2d 20 52 65 70  ary key,  -- Rep
0fb0: 6f 72 74 20 6e 75 6d 62 65 72 0d 0a 09 09 09 09  ort number......
0fc0: 20 20 20 20 20 20 20 6f 77 6e 65 72 20 74 65 78         owner tex
0fd0: 74 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  t,              
0fe0: 2d 2d 20 4f 77 6e 65 72 20 6f 66 20 74 68 69 73  -- Owner of this
0ff0: 20 72 65 70 6f 72 74 20 66 6f 72 6d 61 74 20 28   report format (
1000: 6e 6f 74 20 75 73 65 64 29 0d 0a 09 09 09 09 20  not used)...... 
1010: 20 20 20 20 20 20 74 69 74 6c 65 20 74 65 78 74        title text
1020: 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d  ,              -
1030: 2d 20 54 69 74 6c 65 20 6f 66 20 74 68 69 73 20  - Title of this 
1040: 72 65 70 6f 72 74 0d 0a 09 09 09 09 20 20 20 20  report......    
1050: 20 20 20 63 6f 6c 73 20 74 65 78 74 2c 20 20 20     cols text,   
1060: 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 20 41              -- A
1070: 20 63 6f 6c 6f 72 2d 6b 65 79 20 73 70 65 63 69   color-key speci
1080: 66 69 63 61 74 69 6f 6e 0d 0a 09 09 09 09 20 20  fication......  
1090: 20 20 20 20 20 73 71 6c 63 6f 64 65 20 74 65 78       sqlcode tex
10a0: 74 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d  t             --
10b0: 20 41 6e 20 53 51 4c 20 53 45 4c 45 43 54 20 73   An SQL SELECT s
10c0: 74 61 74 65 6d 65 6e 74 20 66 6f 72 20 74 68 69  tatement for thi
10d0: 73 20 72 65 70 6f 72 74 0d 0a 09 09 09 09 20 20  s report......  
10e0: 20 20 20 20 20 29 3b 0d 0a 09 20 20 20 20 7d 0d       );...    }.
10f0: 0a 09 7d 0d 0a 09 74 79 70 65 6d 65 74 68 6f 64  ..}...typemethod
1100: 20 72 65 70 6f 32 20 7b 7d 20 7b 0d 0a 09 20 20   repo2 {} {...  
1110: 20 20 72 65 74 75 72 6e 20 7b 0d 0a 09 09 2d 2d    return {....--
1120: 20 46 69 6c 65 6e 61 6d 65 73 0d 0a 09 09 2d 2d   Filenames....--
1130: 0d 0a 09 09 43 52 45 41 54 45 20 54 41 42 4c 45  ....CREATE TABLE
1140: 20 66 69 6c 65 6e 61 6d 65 28 0d 0a 09 09 09 09   filename(......
1150: 20 20 20 20 20 20 66 6e 69 64 20 49 4e 54 45 47        fnid INTEG
1160: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20  ER PRIMARY KEY, 
1170: 20 20 20 2d 2d 20 46 69 6c 65 6e 61 6d 65 20 49     -- Filename I
1180: 44 0d 0a 09 09 09 09 20 20 20 20 20 20 6e 61 6d  D......      nam
1190: 65 20 54 45 58 54 20 55 4e 49 51 55 45 20 20 20  e TEXT UNIQUE   
11a0: 20 20 20 20 20 20 20 20 20 20 2d 2d 20 4e 61 6d            -- Nam
11b0: 65 20 6f 66 20 66 69 6c 65 20 70 61 67 65 0d 0a  e of file page..
11c0: 09 09 09 09 20 20 20 20 20 20 29 3b 0d 0a 0d 0a  ....      );....
11d0: 09 09 2d 2d 20 4c 69 6e 6b 61 67 65 73 20 62 65  ..-- Linkages be
11e0: 74 77 65 65 6e 20 6d 61 6e 69 66 65 73 74 73 2c  tween manifests,
11f0: 20 66 69 6c 65 73 20 63 72 65 61 74 65 64 20 62   files created b
1200: 79 20 74 68 61 74 20 6d 61 6e 69 66 65 73 74 2c  y that manifest,
1210: 20 61 6e 64 0d 0a 09 09 2d 2d 20 74 68 65 20 6e   and....-- the n
1220: 61 6d 65 73 20 6f 66 20 74 68 6f 73 65 20 66 69  ames of those fi
1230: 6c 65 73 2e 0d 0a 09 09 2d 2d 0d 0a 09 09 2d 2d  les.....--....--
1240: 20 70 69 64 3d 3d 30 20 69 66 20 74 68 65 20 66   pid==0 if the f
1250: 69 6c 65 20 69 73 20 61 64 64 65 64 20 62 79 20  ile is added by 
1260: 63 68 65 63 6b 2d 69 6e 20 6d 69 64 2e 0d 0a 09  check-in mid....
1270: 09 2d 2d 20 66 69 64 3d 3d 30 20 69 66 20 74 68  .-- fid==0 if th
1280: 65 20 66 69 6c 65 20 69 73 20 72 65 6d 6f 76 65  e file is remove
1290: 64 20 62 79 20 63 68 65 63 6b 2d 69 6e 20 6d 69  d by check-in mi
12a0: 64 2e 0d 0a 09 09 2d 2d 0d 0a 09 09 43 52 45 41  d.....--....CREA
12b0: 54 45 20 54 41 42 4c 45 20 6d 6c 69 6e 6b 28 0d  TE TABLE mlink(.
12c0: 0a 09 09 09 09 20 20 20 6d 69 64 20 49 4e 54 45  .....   mid INTE
12d0: 47 45 52 20 52 45 46 45 52 45 4e 43 45 53 20 62  GER REFERENCES b
12e0: 6c 6f 62 2c 20 20 20 20 20 20 20 20 2d 2d 20 4d  lob,        -- M
12f0: 61 6e 69 66 65 73 74 20 49 44 20 77 68 65 72 65  anifest ID where
1300: 20 63 68 61 6e 67 65 20 6f 63 63 75 72 73 0d 0a   change occurs..
1310: 09 09 09 09 20 20 20 70 69 64 20 49 4e 54 45 47  ....   pid INTEG
1320: 45 52 20 52 45 46 45 52 45 4e 43 45 53 20 62 6c  ER REFERENCES bl
1330: 6f 62 2c 20 20 20 20 20 20 20 20 2d 2d 20 46 69  ob,        -- Fi
1340: 6c 65 20 49 44 20 69 6e 20 70 61 72 65 6e 74 20  le ID in parent 
1350: 6d 61 6e 69 66 65 73 74 0d 0a 09 09 09 09 20 20  manifest......  
1360: 20 66 69 64 20 49 4e 54 45 47 45 52 20 52 45 46   fid INTEGER REF
1370: 45 52 45 4e 43 45 53 20 62 6c 6f 62 2c 20 20 20  ERENCES blob,   
1380: 20 20 20 20 20 2d 2d 20 43 68 61 6e 67 65 64 20       -- Changed 
1390: 66 69 6c 65 20 49 44 20 69 6e 20 74 68 69 73 20  file ID in this 
13a0: 6d 61 6e 69 66 65 73 74 0d 0a 09 09 09 09 20 20  manifest......  
13b0: 20 66 6e 69 64 20 49 4e 54 45 47 45 52 20 52 45   fnid INTEGER RE
13c0: 46 45 52 45 4e 43 45 53 20 66 69 6c 65 6e 61 6d  FERENCES filenam
13d0: 65 20 20 20 20 2d 2d 20 4e 61 6d 65 20 6f 66 20  e    -- Name of 
13e0: 74 68 65 20 66 69 6c 65 0d 0a 09 09 09 09 20 20  the file......  
13f0: 20 29 3b 0d 0a 09 09 43 52 45 41 54 45 20 49 4e   );....CREATE IN
1400: 44 45 58 20 6d 6c 69 6e 6b 5f 69 31 20 4f 4e 20  DEX mlink_i1 ON 
1410: 6d 6c 69 6e 6b 28 6d 69 64 29 3b 0d 0a 09 09 43  mlink(mid);....C
1420: 52 45 41 54 45 20 49 4e 44 45 58 20 6d 6c 69 6e  REATE INDEX mlin
1430: 6b 5f 69 32 20 4f 4e 20 6d 6c 69 6e 6b 28 66 6e  k_i2 ON mlink(fn
1440: 69 64 29 3b 0d 0a 09 09 43 52 45 41 54 45 20 49  id);....CREATE I
1450: 4e 44 45 58 20 6d 6c 69 6e 6b 5f 69 33 20 4f 4e  NDEX mlink_i3 ON
1460: 20 6d 6c 69 6e 6b 28 66 69 64 29 3b 0d 0a 09 09   mlink(fid);....
1470: 43 52 45 41 54 45 20 49 4e 44 45 58 20 6d 6c 69  CREATE INDEX mli
1480: 6e 6b 5f 69 34 20 4f 4e 20 6d 6c 69 6e 6b 28 70  nk_i4 ON mlink(p
1490: 69 64 29 3b 0d 0a 0d 0a 09 09 2d 2d 20 50 61 72  id);......-- Par
14a0: 65 6e 74 2f 63 68 69 6c 64 20 6c 69 6e 6b 61 67  ent/child linkag
14b0: 65 73 0d 0a 09 09 2d 2d 0d 0a 09 09 43 52 45 41  es....--....CREA
14c0: 54 45 20 54 41 42 4c 45 20 70 6c 69 6e 6b 28 0d  TE TABLE plink(.
14d0: 0a 09 09 09 09 20 20 20 70 69 64 20 49 4e 54 45  .....   pid INTE
14e0: 47 45 52 20 52 45 46 45 52 45 4e 43 45 53 20 62  GER REFERENCES b
14f0: 6c 6f 62 2c 20 20 20 20 2d 2d 20 50 61 72 65 6e  lob,    -- Paren
1500: 74 20 6d 61 6e 69 66 65 73 74 0d 0a 09 09 09 09  t manifest......
1510: 20 20 20 63 69 64 20 49 4e 54 45 47 45 52 20 52     cid INTEGER R
1520: 45 46 45 52 45 4e 43 45 53 20 62 6c 6f 62 2c 20  EFERENCES blob, 
1530: 20 20 20 2d 2d 20 43 68 69 6c 64 20 6d 61 6e 69     -- Child mani
1540: 66 65 73 74 0d 0a 09 09 09 09 20 20 20 69 73 70  fest......   isp
1550: 72 69 6d 20 42 4f 4f 4c 45 41 4e 2c 20 20 20 20  rim BOOLEAN,    
1560: 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 20               -- 
1570: 70 69 64 20 69 73 20 74 68 65 20 70 72 69 6d 61  pid is the prima
1580: 72 79 20 70 61 72 65 6e 74 20 6f 66 20 63 69 64  ry parent of cid
1590: 0d 0a 09 09 09 09 20 20 20 6d 74 69 6d 65 20 44  ......   mtime D
15a0: 41 54 45 54 49 4d 45 2c 20 20 20 20 20 20 20 20  ATETIME,        
15b0: 20 20 20 20 20 20 20 20 20 2d 2d 20 74 68 65 20           -- the 
15c0: 64 61 74 65 2f 74 69 6d 65 20 73 74 61 6d 70 20  date/time stamp 
15d0: 6f 6e 20 63 69 64 0d 0a 09 09 09 09 20 20 20 55  on cid......   U
15e0: 4e 49 51 55 45 28 70 69 64 2c 20 63 69 64 29 0d  NIQUE(pid, cid).
15f0: 0a 09 09 09 09 20 20 20 29 3b 0d 0a 09 09 43 52  .....   );....CR
1600: 45 41 54 45 20 49 4e 44 45 58 20 70 6c 69 6e 6b  EATE INDEX plink
1610: 5f 69 32 20 4f 4e 20 70 6c 69 6e 6b 28 63 69 64  _i2 ON plink(cid
1620: 29 3b 0d 0a 0d 0a 09 09 2d 2d 20 45 76 65 6e 74  );......-- Event
1630: 73 20 75 73 65 64 20 74 6f 20 67 65 6e 65 72 61  s used to genera
1640: 74 65 20 61 20 74 69 6d 65 6c 69 6e 65 0d 0a 09  te a timeline...
1650: 09 2d 2d 0d 0a 09 09 43 52 45 41 54 45 20 54 41  .--....CREATE TA
1660: 42 4c 45 20 65 76 65 6e 74 28 0d 0a 09 09 09 09  BLE event(......
1670: 20 20 20 74 79 70 65 20 54 45 58 54 2c 20 20 20     type TEXT,   
1680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1690: 20 20 20 2d 2d 20 54 79 70 65 20 6f 66 20 65 76     -- Type of ev
16a0: 65 6e 74 0d 0a 09 09 09 09 20 20 20 6d 74 69 6d  ent......   mtim
16b0: 65 20 44 41 54 45 54 49 4d 45 2c 20 20 20 20 20  e DATETIME,     
16c0: 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 20 44              -- D
16d0: 61 74 65 20 61 6e 64 20 74 69 6d 65 20 77 68 65  ate and time whe
16e0: 6e 20 74 68 65 20 65 76 65 6e 74 20 6f 63 63 75  n the event occu
16f0: 72 73 0d 0a 09 09 09 09 20 20 20 6f 62 6a 69 64  rs......   objid
1700: 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59   INTEGER PRIMARY
1710: 20 4b 45 59 2c 20 20 20 20 20 20 2d 2d 20 41 73   KEY,      -- As
1720: 73 6f 63 69 61 74 65 64 20 72 65 63 6f 72 64 20  sociated record 
1730: 49 44 0d 0a 09 09 09 09 20 20 20 75 69 64 20 49  ID......   uid I
1740: 4e 54 45 47 45 52 20 52 45 46 45 52 45 4e 43 45  NTEGER REFERENCE
1750: 53 20 75 73 65 72 2c 20 20 20 20 2d 2d 20 55 73  S user,    -- Us
1760: 65 72 20 77 68 6f 20 63 61 75 73 65 64 20 74 68  er who caused th
1770: 65 20 65 76 65 6e 74 0d 0a 09 09 09 09 20 20 20  e event......   
1780: 62 67 63 6f 6c 6f 72 20 54 45 58 54 2c 20 20 20  bgcolor TEXT,   
1790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17a0: 2d 2d 20 43 6f 6c 6f 72 20 73 65 74 20 62 79 20  -- Color set by 
17b0: 27 62 67 63 6f 6c 6f 72 27 20 70 72 6f 70 65 72  'bgcolor' proper
17c0: 74 79 0d 0a 09 09 09 09 20 20 20 62 72 62 67 63  ty......   brbgc
17d0: 6f 6c 6f 72 20 54 45 58 54 2c 20 20 20 20 20 20  olor TEXT,      
17e0: 20 20 20 20 20 20 20 20 20 20 20 2d 2d 20 43 6f             -- Co
17f0: 6c 6f 72 20 73 65 74 20 62 79 20 27 62 72 2d 62  lor set by 'br-b
1800: 67 63 6f 6c 6f 72 27 20 70 72 6f 70 65 72 74 79  gcolor' property
1810: 0d 0a 09 09 09 09 20 20 20 65 75 73 65 72 20 54  ......   euser T
1820: 45 58 54 2c 20 20 20 20 20 20 20 20 20 20 20 20  EXT,            
1830: 20 20 20 20 20 20 20 20 20 2d 2d 20 55 73 65 72           -- User
1840: 20 73 65 74 20 62 79 20 27 75 73 65 72 27 20 70   set by 'user' p
1850: 72 6f 70 65 72 74 79 0d 0a 09 09 09 09 20 20 20  roperty......   
1860: 75 73 65 72 20 54 45 58 54 2c 20 20 20 20 20 20  user TEXT,      
1870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1880: 2d 2d 20 4e 61 6d 65 20 6f 66 20 74 68 65 20 75  -- Name of the u
1890: 73 65 72 0d 0a 09 09 09 09 20 20 20 65 63 6f 6d  ser......   ecom
18a0: 6d 65 6e 74 20 54 45 58 54 2c 20 20 20 20 20 20  ment TEXT,      
18b0: 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 20 43              -- C
18c0: 6f 6d 6d 65 6e 74 20 73 65 74 20 62 79 20 27 63  omment set by 'c
18d0: 6f 6d 6d 65 6e 74 27 20 70 72 6f 70 65 72 74 79  omment' property
18e0: 0d 0a 09 09 09 09 20 20 20 63 6f 6d 6d 65 6e 74  ......   comment
18f0: 20 54 45 58 54 20 20 20 20 20 20 20 20 20 20 20   TEXT           
1900: 20 20 20 20 20 20 20 20 20 2d 2d 20 43 6f 6d 6d           -- Comm
1910: 65 6e 74 20 64 65 73 63 72 69 62 69 6e 67 20 74  ent describing t
1920: 68 65 20 65 76 65 6e 74 0d 0a 09 09 09 09 20 20  he event......  
1930: 20 29 3b 0d 0a 09 09 43 52 45 41 54 45 20 49 4e   );....CREATE IN
1940: 44 45 58 20 65 76 65 6e 74 5f 69 31 20 4f 4e 20  DEX event_i1 ON 
1950: 65 76 65 6e 74 28 6d 74 69 6d 65 29 3b 0d 0a 0d  event(mtime);...
1960: 0a 09 09 2d 2d 20 41 20 72 65 63 6f 72 64 20 6f  ...-- A record o
1970: 66 20 70 68 61 6e 74 6f 6d 73 2e 20 20 41 20 70  f phantoms.  A p
1980: 68 61 6e 74 6f 6d 20 69 73 20 61 20 72 65 63 6f  hantom is a reco
1990: 72 64 20 66 6f 72 20 77 68 69 63 68 20 77 65 20  rd for which we 
19a0: 6b 6e 6f 77 20 74 68 65 0d 0a 09 09 2d 2d 20 55  know the....-- U
19b0: 55 49 44 20 62 75 74 20 77 65 20 64 6f 20 6e 6f  UID but we do no
19c0: 74 20 28 79 65 74 29 20 6b 6e 6f 77 20 74 68 65  t (yet) know the
19d0: 20 66 69 6c 65 20 63 6f 6e 74 65 6e 74 2e 0d 0a   file content...
19e0: 09 09 2d 2d 0d 0a 09 09 43 52 45 41 54 45 20 54  ..--....CREATE T
19f0: 41 42 4c 45 20 70 68 61 6e 74 6f 6d 28 0d 0a 09  ABLE phantom(...
1a00: 09 09 09 20 20 20 20 20 72 69 64 20 49 4e 54 45  ...     rid INTE
1a10: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20  GER PRIMARY KEY 
1a20: 20 20 20 20 20 20 20 20 2d 2d 20 52 65 63 6f 72          -- Recor
1a30: 64 20 49 44 20 6f 66 20 74 68 65 20 70 68 61 6e  d ID of the phan
1a40: 74 6f 6d 0d 0a 09 09 09 09 20 20 20 20 20 29 3b  tom......     );
1a50: 0d 0a 0d 0a 09 09 2d 2d 20 55 6e 63 6c 75 73 74  ......-- Unclust
1a60: 65 72 65 64 20 72 65 63 6f 72 64 73 2e 20 20 41  ered records.  A
1a70: 6e 20 75 6e 63 6c 75 73 74 65 72 65 64 20 72 65  n unclustered re
1a80: 63 6f 72 64 20 69 73 20 61 20 72 65 63 6f 72 64  cord is a record
1a90: 20 28 69 6e 63 6c 75 64 69 6e 67 0d 0a 09 09 09   (including.....
1aa0: 09 09 09 09 09 09 20 20 20 20 2d 2d 20 61 20 63  ......    -- a c
1ab0: 6c 75 73 74 65 72 20 72 65 63 6f 72 64 73 20 74  luster records t
1ac0: 68 65 6d 73 65 6c 76 65 73 29 20 74 68 61 74 20  hemselves) that 
1ad0: 69 73 20 6e 6f 74 20 6d 65 6e 74 69 6f 6e 65 64  is not mentioned
1ae0: 20 62 79 20 73 6f 6d 65 20 6f 74 68 65 72 0d 0a   by some other..
1af0: 09 09 2d 2d 20 63 6c 75 73 74 65 72 2e 0d 0a 09  ..-- cluster....
1b00: 09 2d 2d 0d 0a 09 09 2d 2d 20 50 68 61 6e 74 6f  .--....-- Phanto
1b10: 6d 73 20 61 72 65 20 75 73 75 61 6c 6c 79 20 69  ms are usually i
1b20: 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 75  ncluded in the u
1b30: 6e 63 6c 75 73 74 65 72 65 64 20 74 61 62 6c 65  nclustered table
1b40: 2e 20 20 41 20 6e 65 77 20 63 6c 75 73 74 65 72  .  A new cluster
1b50: 0d 0a 09 09 2d 2d 20 77 69 6c 6c 20 6e 65 76 65  ....-- will neve
1b60: 72 20 62 65 20 63 72 65 61 74 65 64 20 74 68 61  r be created tha
1b70: 74 20 63 6f 6e 74 61 69 6e 73 20 61 20 70 68 61  t contains a pha
1b80: 6e 74 6f 6d 2e 20 20 42 75 74 20 61 6e 6f 74 68  ntom.  But anoth
1b90: 65 72 20 72 65 70 6f 73 69 74 6f 72 79 0d 0a 09  er repository...
1ba0: 09 2d 2d 20 6d 69 67 68 74 20 73 65 6e 64 20 75  .-- might send u
1bb0: 73 20 61 20 63 6c 75 73 74 65 72 20 74 68 61 74  s a cluster that
1bc0: 20 63 6f 6e 74 61 69 6e 73 20 65 6e 74 72 69 65   contains entrie
1bd0: 73 20 74 68 61 74 20 61 72 65 20 70 68 61 6e 74  s that are phant
1be0: 6f 6d 73 20 74 6f 0d 0a 09 09 2d 2d 20 75 73 2e  oms to....-- us.
1bf0: 0d 0a 09 09 2d 2d 0d 0a 09 09 43 52 45 41 54 45  ....--....CREATE
1c00: 20 54 41 42 4c 45 20 75 6e 63 6c 75 73 74 65 72   TABLE uncluster
1c10: 65 64 28 0d 0a 09 09 09 09 09 20 72 69 64 20 49  ed(....... rid I
1c20: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
1c30: 45 59 20 20 20 20 20 20 20 20 20 2d 2d 20 52 65  EY         -- Re
1c40: 63 6f 72 64 20 49 44 20 6f 66 20 74 68 65 20 75  cord ID of the u
1c50: 6e 63 6c 75 73 74 65 72 65 64 20 66 69 6c 65 0d  nclustered file.
1c60: 0a 09 09 09 09 09 20 29 3b 0d 0a 0d 0a 09 09 2d  ...... );......-
1c70: 2d 20 52 65 63 6f 72 64 73 20 77 68 69 63 68 20  - Records which 
1c80: 68 61 76 65 20 6e 65 76 65 72 20 62 65 65 6e 20  have never been 
1c90: 70 75 73 68 65 64 20 74 6f 20 61 6e 6f 74 68 65  pushed to anothe
1ca0: 72 20 73 65 72 76 65 72 2e 20 20 54 68 69 73 20  r server.  This 
1cb0: 69 73 0d 0a 09 09 2d 2d 20 75 73 65 64 20 74 6f  is....-- used to
1cc0: 20 72 65 64 75 63 65 20 70 75 73 68 20 6f 70 65   reduce push ope
1cd0: 72 61 74 69 6f 6e 73 20 74 6f 20 61 20 73 69 6e  rations to a sin
1ce0: 67 6c 65 20 48 54 54 50 20 72 65 71 75 65 73 74  gle HTTP request
1cf0: 20 69 6e 20 74 68 65 0d 0a 09 09 2d 2d 20 63 6f   in the....-- co
1d00: 6d 6d 6f 6e 20 63 61 73 65 20 77 68 65 6e 20 6f  mmon case when o
1d10: 6e 65 20 72 65 70 6f 73 69 74 6f 72 79 20 6f 6e  ne repository on
1d20: 6c 79 20 74 61 6c 6b 73 20 74 6f 20 61 20 73 69  ly talks to a si
1d30: 6e 67 6c 65 20 73 65 72 76 65 72 2e 0d 0a 09 09  ngle server.....
1d40: 2d 2d 0d 0a 09 09 43 52 45 41 54 45 20 54 41 42  --....CREATE TAB
1d50: 4c 45 20 75 6e 73 65 6e 74 28 0d 0a 09 09 09 09  LE unsent(......
1d60: 20 20 20 20 72 69 64 20 49 4e 54 45 47 45 52 20      rid INTEGER 
1d70: 50 52 49 4d 41 52 59 20 4b 45 59 20 20 20 20 20  PRIMARY KEY     
1d80: 20 20 20 20 2d 2d 20 52 65 63 6f 72 64 20 49 44      -- Record ID
1d90: 20 6f 66 20 74 68 65 20 70 68 61 6e 74 6f 6d 0d   of the phantom.
1da0: 0a 09 09 09 09 20 20 20 20 29 3b 0d 0a 0d 0a 09  .....    );.....
1db0: 09 2d 2d 20 45 61 63 68 20 62 61 73 65 6c 69 6e  .-- Each baselin
1dc0: 65 20 6f 72 20 6d 61 6e 69 66 65 73 74 20 63 61  e or manifest ca
1dd0: 6e 20 68 61 76 65 20 6f 6e 65 20 6f 72 20 6d 6f  n have one or mo
1de0: 72 65 20 74 61 67 73 2e 20 20 41 20 74 61 67 0d  re tags.  A tag.
1df0: 0a 09 09 2d 2d 20 69 73 20 64 65 66 69 6e 65 64  ...-- is defined
1e00: 20 62 79 20 61 20 72 6f 77 20 69 6e 20 74 68 65   by a row in the
1e10: 20 6e 65 78 74 20 74 61 62 6c 65 2e 0d 0a 09 09   next table.....
1e20: 2d 2d 20 0d 0a 09 09 2d 2d 20 57 69 6b 69 20 70  -- ....-- Wiki p
1e30: 61 67 65 73 20 61 72 65 20 74 61 67 67 65 64 20  ages are tagged 
1e40: 77 69 74 68 20 22 77 69 6b 69 2d 4e 41 4d 45 22  with "wiki-NAME"
1e50: 20 77 68 65 72 65 20 4e 41 4d 45 20 69 73 20 74   where NAME is t
1e60: 68 65 20 6e 61 6d 65 20 6f 66 0d 0a 09 09 2d 2d  he name of....--
1e70: 20 74 68 65 20 77 69 6b 69 20 70 61 67 65 2e 20   the wiki page. 
1e80: 20 54 69 63 6b 65 74 73 20 63 68 61 6e 67 65 73   Tickets changes
1e90: 20 61 72 65 20 74 61 67 67 65 64 20 77 69 74 68   are tagged with
1ea0: 20 22 74 69 63 6b 65 74 2d 55 55 49 44 22 20 77   "ticket-UUID" w
1eb0: 68 65 72 65 20 0d 0a 09 09 2d 2d 20 55 55 49 44  here ....-- UUID
1ec0: 20 69 73 20 74 68 65 20 69 6e 64 65 6e 74 69 66   is the indentif
1ed0: 69 65 72 20 6f 66 20 74 68 65 20 74 69 63 6b 65  ier of the ticke
1ee0: 74 2e 0d 0a 09 09 2d 2d 0d 0a 09 09 43 52 45 41  t.....--....CREA
1ef0: 54 45 20 54 41 42 4c 45 20 74 61 67 28 0d 0a 09  TE TABLE tag(...
1f00: 09 09 09 20 74 61 67 69 64 20 49 4e 54 45 47 45  ... tagid INTEGE
1f10: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 20  R PRIMARY KEY,  
1f20: 20 20 20 20 20 2d 2d 20 4e 75 6d 65 72 69 63 20       -- Numeric 
1f30: 74 61 67 20 49 44 0d 0a 09 09 09 09 20 74 61 67  tag ID...... tag
1f40: 6e 61 6d 65 20 54 45 58 54 20 55 4e 49 51 55 45  name TEXT UNIQUE
1f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d                --
1f60: 20 54 61 67 20 6e 61 6d 65 2e 0d 0a 09 09 09 09   Tag name.......
1f70: 20 29 3b 0d 0a 09 09 49 4e 53 45 52 54 20 49 4e   );....INSERT IN
1f80: 54 4f 20 74 61 67 20 56 41 4c 55 45 53 28 31 2c  TO tag VALUES(1,
1f90: 20 27 62 67 63 6f 6c 6f 72 27 29 3b 20 20 20 20   'bgcolor');    
1fa0: 20 20 20 20 20 2d 2d 20 54 41 47 5f 42 47 43 4f       -- TAG_BGCO
1fb0: 4c 4f 52 0d 0a 09 09 49 4e 53 45 52 54 20 49 4e  LOR....INSERT IN
1fc0: 54 4f 20 74 61 67 20 56 41 4c 55 45 53 28 32 2c  TO tag VALUES(2,
1fd0: 20 27 63 6f 6d 6d 65 6e 74 27 29 3b 20 20 20 20   'comment');    
1fe0: 20 20 20 20 20 2d 2d 20 54 41 47 5f 43 4f 4d 4d       -- TAG_COMM
1ff0: 45 4e 54 0d 0a 09 09 49 4e 53 45 52 54 20 49 4e  ENT....INSERT IN
2000: 54 4f 20 74 61 67 20 56 41 4c 55 45 53 28 33 2c  TO tag VALUES(3,
2010: 20 27 75 73 65 72 27 29 3b 20 20 20 20 20 20 20   'user');       
2020: 20 20 20 20 20 2d 2d 20 54 41 47 5f 55 53 45 52       -- TAG_USER
2030: 0d 0a 09 09 49 4e 53 45 52 54 20 49 4e 54 4f 20  ....INSERT INTO 
2040: 74 61 67 20 56 41 4c 55 45 53 28 34 2c 20 27 68  tag VALUES(4, 'h
2050: 69 64 64 65 6e 27 29 3b 20 20 20 20 20 20 20 20  idden');        
2060: 20 20 2d 2d 20 54 41 47 5f 48 49 44 44 45 4e 0d    -- TAG_HIDDEN.
2070: 0a 0d 0a 09 09 2d 2d 20 41 73 73 69 67 6e 6d 65  .....-- Assignme
2080: 6e 74 73 20 6f 66 20 74 61 67 73 20 74 6f 20 62  nts of tags to b
2090: 61 73 65 6c 69 6e 65 73 2e 20 20 4e 6f 74 65 20  aselines.  Note 
20a0: 74 68 61 74 20 77 65 20 61 6c 6c 6f 77 20 74 61  that we allow ta
20b0: 67 73 20 74 6f 0d 0a 09 09 2d 2d 20 68 61 76 65  gs to....-- have
20c0: 20 76 61 6c 75 65 73 20 61 73 73 69 67 6e 65 64   values assigned
20d0: 20 74 6f 20 74 68 65 6d 2e 20 20 53 6f 20 77 65   to them.  So we
20e0: 20 61 72 65 20 6e 6f 74 20 72 65 61 6c 6c 79 20   are not really 
20f0: 64 65 61 6c 69 6e 67 20 77 69 74 68 0d 0a 09 09  dealing with....
2100: 2d 2d 20 74 61 67 73 20 68 65 72 65 2e 20 20 54  -- tags here.  T
2110: 68 65 73 65 20 61 72 65 20 72 65 61 6c 6c 79 20  hese are really 
2120: 70 72 6f 70 65 72 74 69 65 73 2e 20 20 42 75 74  properties.  But
2130: 20 77 65 20 61 72 65 20 67 6f 69 6e 67 20 74 6f   we are going to
2140: 0d 0a 09 09 2d 2d 20 6b 65 65 70 20 63 61 6c 6c  ....-- keep call
2150: 69 6e 67 20 74 68 65 6d 20 74 61 67 73 20 62 65  ing them tags be
2160: 63 61 75 73 65 20 69 6e 20 6d 61 6e 79 20 63 61  cause in many ca
2170: 73 65 73 20 74 68 65 20 76 61 6c 75 65 20 69 73  ses the value is
2180: 20 69 67 6e 6f 72 65 64 2e 0d 0a 09 09 2d 2d 0d   ignored.....--.
2190: 0a 09 09 43 52 45 41 54 45 20 54 41 42 4c 45 20  ...CREATE TABLE 
21a0: 74 61 67 78 72 65 66 28 0d 0a 09 09 09 09 20 20  tagxref(......  
21b0: 20 20 20 74 61 67 69 64 20 49 4e 54 45 47 45 52     tagid INTEGER
21c0: 20 52 45 46 45 52 45 4e 43 45 53 20 74 61 67 2c   REFERENCES tag,
21d0: 20 20 20 2d 2d 20 54 68 65 20 74 61 67 20 74 68     -- The tag th
21e0: 61 74 20 61 64 64 65 64 20 6f 72 20 72 65 6d 6f  at added or remo
21f0: 76 65 64 0d 0a 09 09 09 09 20 20 20 20 20 74 61  ved......     ta
2200: 67 74 79 70 65 20 49 4e 54 45 47 45 52 2c 20 20  gtype INTEGER,  
2210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d                --
2220: 20 30 3a 63 61 6e 63 65 6c 20 20 31 3a 73 69 6e   0:cancel  1:sin
2230: 67 6c 65 20 20 32 3a 62 72 61 6e 63 68 0d 0a 09  gle  2:branch...
2240: 09 09 09 20 20 20 20 20 73 72 63 69 64 20 49 4e  ...     srcid IN
2250: 54 45 47 45 52 20 52 45 46 45 52 45 4e 43 45 53  TEGER REFERENCES
2260: 20 62 6c 6f 62 2c 20 20 2d 2d 20 4f 72 69 67 69   blob,  -- Origi
2270: 6e 20 6f 66 20 74 68 65 20 74 61 67 2e 20 30 20  n of the tag. 0 
2280: 66 6f 72 20 70 72 6f 70 61 67 61 74 65 64 20 74  for propagated t
2290: 61 67 73 0d 0a 09 09 09 09 20 20 20 20 20 76 61  ags......     va
22a0: 6c 75 65 20 54 45 58 54 2c 20 20 20 20 20 20 20  lue TEXT,       
22b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d                --
22c0: 20 56 61 6c 75 65 20 6f 66 20 74 68 65 20 74 61   Value of the ta
22d0: 67 2e 20 20 4d 69 67 68 74 20 62 65 20 4e 55 4c  g.  Might be NUL
22e0: 4c 2e 0d 0a 09 09 09 09 20 20 20 20 20 6d 74 69  L.......     mti
22f0: 6d 65 20 54 49 4d 45 53 54 41 4d 50 2c 20 20 20  me TIMESTAMP,   
2300: 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 20               -- 
2310: 54 69 6d 65 20 6f 66 20 61 64 64 69 74 69 6f 6e  Time of addition
2320: 20 6f 72 20 72 65 6d 6f 76 61 6c 0d 0a 09 09 09   or removal.....
2330: 09 20 20 20 20 20 72 69 64 20 49 4e 54 45 47 45  .     rid INTEGE
2340: 52 20 52 45 46 45 52 45 4e 43 45 20 62 6c 6f 62  R REFERENCE blob
2350: 2c 20 20 20 20 20 2d 2d 20 42 61 73 65 6c 69 6e  ,     -- Baselin
2360: 65 20 74 68 61 74 20 74 61 67 20 61 64 64 65 64  e that tag added
2370: 2f 72 65 6d 6f 76 65 64 20 66 72 6f 6d 0d 0a 09  /removed from...
2380: 09 09 09 20 20 20 20 20 55 4e 49 51 55 45 28 72  ...     UNIQUE(r
2390: 69 64 2c 20 74 61 67 69 64 29 0d 0a 09 09 09 09  id, tagid)......
23a0: 20 20 20 20 20 29 3b 0d 0a 09 09 43 52 45 41 54       );....CREAT
23b0: 45 20 49 4e 44 45 58 20 74 61 67 78 72 65 66 5f  E INDEX tagxref_
23c0: 69 31 20 4f 4e 20 74 61 67 78 72 65 66 28 74 61  i1 ON tagxref(ta
23d0: 67 69 64 2c 20 6d 74 69 6d 65 29 3b 0d 0a 09 20  gid, mtime);... 
23e0: 20 20 20 7d 0d 0a 09 7d 20 20 0d 0a 20 20 20 20     }...}  ..    
23f0: 7d 0d 0a 7d                                      }..}