MySQL++

Hex Artifact Content
Login

Hex Artifact Content

Artifact 3c144863899a931a8f700a0f2bf9a58ec2d38719b47d1ff5b933cc323c5bf258:


0000: 23 20 48 61 63 6b 69 6e 67 20 6f 6e 20 4d 79 53  # Hacking on MyS
0010: 51 4c 2b 2b 0a 0a 49 66 20 79 6f 75 20 61 72 65  QL++..If you are
0020: 20 67 6f 69 6e 67 20 74 6f 20 6d 61 6b 65 20 61   going to make a
0030: 6e 79 20 63 68 61 6e 67 65 73 20 74 6f 20 4d 79  ny changes to My
0040: 53 51 4c 2b 2b 2c 20 74 68 69 73 20 66 69 6c 65  SQL++, this file
0050: 20 68 61 73 20 73 6f 6d 65 0a 68 69 6e 74 73 20   has some.hints 
0060: 61 6e 64 20 63 6f 6d 6d 65 6e 74 61 72 79 20 79  and commentary y
0070: 6f 75 20 6d 61 79 20 66 69 6e 64 20 68 65 6c 70  ou may find help
0080: 66 75 6c 2e 0a 0a 0a 23 23 20 43 6f 64 65 20 52  ful....## Code R
0090: 65 70 6f 73 69 74 6f 72 79 20 41 63 63 65 73 73  epository Access
00a0: 0a 0a 4d 79 53 51 4c 2b 2b 20 75 73 65 73 20 74  ..MySQL++ uses t
00b0: 68 65 20 5b 46 6f 73 73 69 6c 5d 5b 66 73 6c 5d  he [Fossil][fsl]
00c0: 20 5b 64 69 73 74 72 69 62 75 74 65 64 20 76 65   [distributed ve
00d0: 72 73 69 6f 6e 20 63 6f 6e 74 72 6f 6c 0a 73 79  rsion control.sy
00e0: 73 74 65 6d 5d 5b 64 76 63 73 5d 2e 20 53 65 65  stem][dvcs]. See
00f0: 20 69 74 73 20 5b 71 75 69 63 6b 20 73 74 61 72   its [quick star
0100: 74 20 67 75 69 64 65 5d 5b 66 73 6c 71 5d 20 69  t guide][fslq] i
0110: 66 20 79 6f 75 20 61 72 65 20 75 6e 66 61 6d 69  f you are unfami
0120: 6c 61 72 0a 77 69 74 68 20 46 6f 73 73 69 6c 2e  lar.with Fossil.
0130: 0a 0a 59 6f 75 20 6d 75 73 74 20 62 65 20 72 75  ..You must be ru
0140: 6e 6e 69 6e 67 20 46 6f 73 73 69 6c 20 76 65 72  nning Fossil ver
0150: 73 69 6f 6e 20 32 2e 31 20 6f 72 20 68 69 67 68  sion 2.1 or high
0160: 65 72 20 74 6f 20 61 63 63 65 73 73 20 74 68 65  er to access the
0170: 20 4d 79 53 51 4c 2b 2b 0a 72 65 70 6f 73 69 74   MySQL++.reposit
0180: 6f 72 79 2e 20 49 66 20 79 6f 75 72 20 6f 70 65  ory. If your ope
0190: 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 69 6e  rating system in
01a0: 63 6c 75 64 65 73 20 61 6e 20 6f 6c 64 65 72 20  cludes an older 
01b0: 46 6f 73 73 69 6c 20 70 61 63 6b 61 67 65 2c 0a  Fossil package,.
01c0: 79 6f 75 20 77 69 6c 6c 20 65 69 74 68 65 72 20  you will either 
01d0: 68 61 76 65 20 74 6f 20 69 6e 73 74 61 6c 6c 20  have to install 
01e0: 5b 61 6e 20 6f 66 66 69 63 69 61 6c 20 62 69 6e  [an official bin
01f0: 61 72 79 5d 5b 66 73 6c 62 5d 20 6f 72 20 5b 62  ary][fslb] or [b
0200: 75 69 6c 64 0a 69 74 20 66 72 6f 6d 20 73 6f 75  uild.it from sou
0210: 72 63 65 5d 5b 66 73 6c 73 5d 2e 0a 0a 54 6f 20  rce][fsls]...To 
0220: 63 6c 6f 6e 65 20 74 68 65 20 4d 79 53 51 4c 2b  clone the MySQL+
0230: 2b 20 72 65 70 6f 73 69 74 6f 72 79 20 61 6e 6f  + repository ano
0240: 6e 79 6d 6f 75 73 6c 79 2c 20 73 61 79 3a 0a 0a  nymously, say:..
0250: 20 20 20 20 24 20 66 6f 73 73 69 6c 20 63 6c 6f      $ fossil clo
0260: 6e 65 20 68 74 74 70 73 3a 2f 2f 74 61 6e 67 65  ne https://tange
0270: 6e 74 73 6f 66 74 2e 63 6f 6d 2f 6d 79 73 71 6c  ntsoft.com/mysql
0280: 70 70 20 6d 79 73 71 6c 70 70 2e 66 6f 73 73 69  pp mysqlpp.fossi
0290: 6c 0a 0a 49 66 20 79 6f 75 20 68 61 76 65 20 61  l..If you have a
02a0: 20 64 65 76 65 6c 6f 70 65 72 20 61 63 63 6f 75   developer accou
02b0: 6e 74 20 6f 6e 20 74 68 65 20 4d 79 53 51 4c 2b  nt on the MySQL+
02c0: 2b 20 46 6f 73 73 69 6c 20 69 6e 73 74 61 6e 63  + Fossil instanc
02d0: 65 2c 20 6a 75 73 74 20 61 64 64 0a 79 6f 75 72  e, just add.your
02e0: 20 75 73 65 72 6e 61 6d 65 20 74 6f 20 74 68 65   username to the
02f0: 20 55 52 4c 20 6c 69 6b 65 20 73 6f 3a 0a 0a 20   URL like so:.. 
0300: 20 20 20 24 20 66 6f 73 73 69 6c 20 63 6c 6f 6e     $ fossil clon
0310: 65 20 68 74 74 70 73 3a 2f 2f 75 73 65 72 6e 61  e https://userna
0320: 6d 65 40 74 61 6e 65 6e 74 73 6f 66 74 2e 63 6f  me@tanentsoft.co
0330: 6d 2f 6d 79 73 71 6c 70 70 20 6d 79 73 71 6c 70  m/mysqlpp mysqlp
0340: 70 2e 66 6f 73 73 69 6c 0a 0a 54 68 61 74 20 77  p.fossil..That w
0350: 69 6c 6c 20 67 65 74 20 79 6f 75 20 61 20 66 69  ill get you a fi
0360: 6c 65 20 63 61 6c 6c 65 64 20 60 6d 79 73 71 6c  le called `mysql
0370: 70 70 2e 66 6f 73 73 69 6c 60 20 63 6f 6e 74 61  pp.fossil` conta
0380: 69 6e 69 6e 67 20 74 68 65 20 5b 61 62 72 69 64  ining the [abrid
0390: 67 65 64 0a 76 65 72 73 69 6f 6e 20 68 69 73 74  ged.version hist
03a0: 6f 72 79 5d 5b 61 76 68 5d 20 6f 66 20 4d 79 53  ory][avh] of MyS
03b0: 51 4c 2b 2b 20 62 61 63 6b 20 74 6f 20 74 68 65  QL++ back to the
03c0: 20 70 72 6f 6a 65 63 74 27 73 20 66 6f 75 6e 64   project's found
03d0: 69 6e 67 2e 0a 0a 54 68 65 20 72 65 70 6f 73 69  ing...The reposi
03e0: 74 6f 72 79 20 63 6c 6f 6e 65 20 66 69 6c 65 20  tory clone file 
03f0: 63 61 6e 20 62 65 20 6e 61 6d 65 64 20 61 6e 79  can be named any
0400: 74 68 69 6e 67 20 79 6f 75 20 6c 69 6b 65 2e 20  thing you like. 
0410: 45 76 65 6e 20 74 68 65 0a 60 2e 66 6f 73 73 69  Even the.`.fossi
0420: 6c 60 20 65 78 74 65 6e 73 69 6f 6e 20 69 73 20  l` extension is 
0430: 6a 75 73 74 20 61 20 63 6f 6e 76 65 6e 74 69 6f  just a conventio
0440: 6e 2c 20 6e 6f 74 20 61 20 72 65 71 75 69 72 65  n, not a require
0450: 6d 65 6e 74 2e 0a 0a 54 6f 20 22 6f 70 65 6e 22  ment...To "open"
0460: 20 74 68 65 20 72 65 70 6f 20 63 6c 6f 6e 65 20   the repo clone 
0470: 73 6f 20 79 6f 75 20 63 61 6e 20 68 61 63 6b 20  so you can hack 
0480: 6f 6e 20 69 74 2c 20 73 61 79 3a 0a 0a 20 20 20  on it, say:..   
0490: 20 24 20 6d 6b 64 69 72 20 6d 79 73 71 6c 70 70   $ mkdir mysqlpp
04a0: 0a 20 20 20 20 24 20 63 64 20 6d 79 73 71 6c 70  .    $ cd mysqlp
04b0: 70 0a 20 20 20 20 24 20 66 6f 73 73 69 6c 20 6f  p.    $ fossil o
04c0: 70 65 6e 20 2e 2e 2f 6d 79 73 71 6c 70 70 2e 66  pen ../mysqlpp.f
04d0: 6f 73 73 69 6c 0a 0a 57 65 20 63 72 65 61 74 65  ossil..We create
04e0: 64 20 61 20 6e 65 77 20 73 75 62 64 69 72 65 63  d a new subdirec
04f0: 74 6f 72 79 20 62 65 63 61 75 73 65 20 74 68 65  tory because the
0500: 20 60 6f 70 65 6e 60 20 63 6f 6d 6d 61 6e 64 20   `open` command 
0510: 63 68 65 63 6b 73 20 6f 75 74 20 74 68 65 0a 74  checks out the.t
0520: 69 70 20 6f 66 20 74 68 65 20 72 65 70 6f 73 69  ip of the reposi
0530: 74 6f 72 79 27 73 20 74 72 75 6e 6b 20 69 6e 74  tory's trunk int
0540: 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 64 69  o the current di
0550: 72 65 63 74 6f 72 79 20 62 79 20 64 65 66 61 75  rectory by defau
0560: 6c 74 2e 0a 0a 41 73 20 77 69 74 68 20 60 6d 79  lt...As with `my
0570: 73 71 6c 70 70 2e 66 6f 73 73 69 6c 60 2c 20 79  sqlpp.fossil`, y
0580: 6f 75 20 63 61 6e 20 63 61 6c 6c 20 74 68 65 20  ou can call the 
0590: 77 6f 72 6b 69 6e 67 20 64 69 72 65 63 74 6f 72  working director
05a0: 79 20 61 6e 79 74 68 69 6e 67 0a 79 6f 75 20 6c  y anything.you l
05b0: 69 6b 65 2e 20 49 20 61 63 74 75 61 6c 6c 79 20  ike. I actually 
05c0: 70 72 65 66 65 72 20 61 20 77 6f 72 6b 69 6e 67  prefer a working
05d0: 20 74 72 65 65 20 74 68 61 74 20 6c 6f 6f 6b 73   tree that looks
05e0: 20 6c 69 6b 65 20 74 68 69 73 3a 0a 0a 20 20 20   like this:..   
05f0: 20 7e 2f 6d 75 73 65 75 6d 2f 20 20 20 20 20 20   ~/museum/      
0600: 20 20 20 20 20 20 20 20 20 20 20 20 23 20 57 68              # Wh
0610: 65 72 65 20 66 6f 73 73 69 6c 73 20 61 72 65 20  ere fossils are 
0620: 6b 65 70 74 0a 20 20 20 20 20 20 20 20 6d 79 73  kept.        mys
0630: 71 6c 70 70 2e 66 6f 73 73 69 6c 0a 20 20 20 20  qlpp.fossil.    
0640: 7e 2f 73 72 63 2f 20 20 20 20 20 20 20 20 20 20  ~/src/          
0650: 20 20 20 20 20 20 20 20 20 20 20 23 20 57 6f 72             # Wor
0660: 6b 69 6e 67 20 74 72 65 65 20 66 6f 72 20 73 6f  king tree for so
0670: 66 74 77 61 72 65 20 70 72 6f 6a 65 63 74 73 0a  ftware projects.
0680: 20 20 20 20 20 20 20 20 6d 79 73 71 6c 70 70 2f          mysqlpp/
0690: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 6b 75  .            sku
06a0: 6c 6c 2f 20 20 20 20 20 20 20 20 20 20 20 20 20  ll/             
06b0: 23 20 46 6f 73 73 69 6c 20 68 65 61 64 2c 20 67  # Fossil head, g
06c0: 65 74 20 69 74 3f 20 20 20 49 20 63 72 61 63 6b  et it?   I crack
06d0: 20 6d 65 20 75 70 2e 0a 20 20 20 20 20 20 20 20   me up..        
06e0: 20 20 20 20 74 72 75 6e 6b 20 2d 3e 20 73 6b 75      trunk -> sku
06f0: 6c 6c 2f 20 20 20 20 23 20 41 6c 69 61 73 20 74  ll/    # Alias t
0700: 6f 20 6d 61 74 63 68 20 46 6f 73 73 69 6c 20 62  o match Fossil b
0710: 72 61 6e 63 68 20 6e 61 6d 69 6e 67 0a 20 20 20  ranch naming.   
0720: 20 20 20 20 20 20 20 20 20 73 6f 6d 65 2d 62 72           some-br
0730: 61 6e 63 68 2f 20 20 20 20 20 20 20 23 20 53 65  anch/       # Se
0740: 70 61 72 61 74 65 6c 79 2d 6f 70 65 6e 65 64 20  parately-opened 
0750: 77 6f 72 6b 69 6e 67 20 62 72 61 6e 63 68 0a 20  working branch. 
0760: 20 20 20 20 20 20 20 20 20 20 20 33 2e 32 2e 33             3.2.3
0770: 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20  /             # 
0780: 54 61 67 67 65 64 20 72 65 6c 65 61 73 65 20 63  Tagged release c
0790: 68 65 63 6b 6f 75 74 0a 0a 46 6f 73 73 69 6c 20  heckout..Fossil 
07a0: 77 69 6c 6c 20 6c 65 74 20 79 6f 75 20 6d 61 6b  will let you mak
07b0: 65 20 61 6e 79 20 6d 6f 64 69 66 69 63 61 74 69  e any modificati
07c0: 6f 6e 73 20 79 6f 75 20 6c 69 6b 65 20 74 6f 20  ons you like to 
07d0: 79 6f 75 72 20 6c 6f 63 61 6c 0a 72 65 70 6f 73  your local.repos
07e0: 69 74 6f 72 79 20 63 6f 70 79 2e 20 46 6f 72 20  itory copy. For 
07f0: 74 68 6f 73 65 20 77 69 74 68 20 70 72 69 76 69  those with privi
0800: 6c 65 67 65 73 20 6f 6e 20 74 68 65 20 75 70 73  leges on the ups
0810: 74 72 65 61 6d 20 63 6f 70 79 2c 0a 63 68 65 63  tream copy,.chec
0820: 6b 69 6e 73 20 67 65 74 20 61 75 74 6f 6d 61 74  kins get automat
0830: 69 63 61 6c 6c 79 20 73 79 6e 63 65 64 20 77 69  ically synced wi
0840: 74 68 20 69 74 20 62 79 20 64 65 66 61 75 6c 74  th it by default
0850: 2e 20 28 49 66 20 79 6f 75 20 70 72 65 66 65 72  . (If you prefer
0860: 0a 47 69 74 20 6f 72 20 4d 65 72 63 75 72 69 61  .Git or Mercuria
0870: 6c 20 73 74 79 6c 65 20 74 77 6f 2d 70 68 61 73  l style two-phas
0880: 65 20 63 6f 6d 6d 69 74 73 2c 20 79 6f 75 20 63  e commits, you c
0890: 61 6e 20 73 61 79 20 60 66 6f 73 73 69 6c 20 73  an say `fossil s
08a0: 65 74 74 69 6e 67 73 0a 61 75 74 6f 73 79 6e 63  ettings.autosync
08b0: 20 6f 66 66 60 2e 29 20 49 66 20 79 6f 75 20 64   off`.) If you d
08c0: 6f 6e 27 74 20 68 61 76 65 20 73 75 63 68 20 70  on't have such p
08d0: 65 72 6d 69 73 73 69 6f 6e 73 2c 20 79 6f 75 20  ermissions, you 
08e0: 6a 75 73 74 20 6d 6f 64 69 66 79 0a 79 6f 75 72  just modify.your
08f0: 20 6c 6f 63 61 6c 20 63 6f 70 79 2c 20 74 68 65   local copy, the
0900: 6e 20 68 61 76 65 20 74 6f 20 6d 65 72 67 65 20  n have to merge 
0910: 69 6e 20 75 70 73 74 72 65 61 6d 20 63 68 61 6e  in upstream chan
0920: 67 65 73 20 77 68 65 6e 20 75 70 64 61 74 69 6e  ges when updatin
0930: 67 0a 79 6f 75 72 20 6c 6f 63 61 6c 20 63 6c 6f  g.your local clo
0940: 6e 65 2e 0a 0a 44 65 76 65 6c 6f 70 65 72 73 20  ne...Developers 
0950: 61 72 65 20 65 78 70 65 63 74 65 64 20 74 6f 20  are expected to 
0960: 6d 61 6b 65 20 61 6c 6c 20 63 68 61 6e 67 65 73  make all changes
0970: 20 74 68 61 74 20 61 66 66 65 63 74 20 74 68 65   that affect the
0980: 20 6c 69 62 61 72 79 27 73 0a 41 50 49 2c 20 41   libary's.API, A
0990: 42 49 2c 20 6f 72 20 62 65 68 61 76 69 6f 72 20  BI, or behavior 
09a0: 6f 6e 20 61 20 62 72 61 6e 63 68 2c 20 72 61 74  on a branch, rat
09b0: 68 65 72 20 74 68 61 6e 20 63 68 65 63 6b 20 73  her than check s
09c0: 75 63 68 20 63 68 61 6e 67 65 73 0a 64 69 72 65  uch changes.dire
09d0: 63 74 6c 79 20 69 6e 74 6f 20 74 68 65 20 74 72  ctly into the tr
09e0: 75 6e 6b 2e 20 4f 6e 63 65 20 77 65 20 68 61 76  unk. Once we hav
09f0: 65 20 64 69 73 63 75 73 73 65 64 20 74 68 65 20  e discussed the 
0a00: 63 68 61 6e 67 65 20 6f 6e 20 74 68 65 0a 5b 6d  change on the.[m
0a10: 61 69 6c 69 6e 67 20 6c 69 73 74 5d 5b 6d 6c 5d  ailing list][ml]
0a20: 20 61 6e 64 20 72 65 73 6f 6c 76 65 64 20 61 6e   and resolved an
0a30: 79 20 69 73 73 73 75 65 73 20 77 69 74 68 20 74  y isssues with t
0a40: 68 65 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 0a  he experimental.
0a50: 62 72 61 6e 63 68 2c 20 69 74 20 77 69 6c 6c 20  branch, it will 
0a60: 62 65 20 6d 65 72 67 65 64 20 69 6e 74 6f 20 74  be merged into t
0a70: 68 65 20 74 72 75 6e 6b 2e 0a 0a 43 72 65 61 74  he trunk...Creat
0a80: 69 6e 67 20 61 20 62 72 61 6e 63 68 20 69 6e 20  ing a branch in 
0a90: 46 6f 73 73 69 6c 20 69 73 20 73 63 61 72 79 2d  Fossil is scary-
0aa0: 73 69 6d 70 6c 65 2c 20 74 6f 20 74 68 65 20 70  simple, to the p
0ab0: 6f 69 6e 74 20 74 68 61 74 20 74 68 6f 73 65 0a  oint that those.
0ac0: 63 6f 6d 69 6e 67 20 66 72 6f 6d 20 6f 74 68 65  coming from othe
0ad0: 72 20 76 65 72 73 69 6f 6e 20 63 6f 6e 74 72 6f  r version contro
0ae0: 6c 20 73 79 73 74 65 6d 73 20 6d 61 79 20 61 73  l systems may as
0af0: 6b 2c 20 22 49 73 20 74 68 61 74 20 72 65 61 6c  k, "Is that real
0b00: 6c 79 20 61 6c 6c 0a 74 68 65 72 65 20 69 73 20  ly all.there is 
0b10: 74 6f 20 69 74 3f 22 20 59 65 73 2c 20 72 65 61  to it?" Yes, rea
0b20: 6c 6c 79 2c 20 74 68 69 73 20 69 73 20 69 74 3a  lly, this is it:
0b30: 0a 0a 20 20 20 20 24 20 66 6f 73 73 69 6c 20 63  ..    $ fossil c
0b40: 68 65 63 6b 69 6e 20 2d 2d 62 72 61 6e 63 68 20  heckin --branch 
0b50: 6e 65 77 2d 62 72 61 6e 63 68 2d 6e 61 6d 65 0a  new-branch-name.
0b60: 0a 54 68 61 74 20 69 73 20 74 6f 20 73 61 79 2c  .That is to say,
0b70: 20 79 6f 75 20 6d 61 6b 65 20 79 6f 75 72 20 63   you make your c
0b80: 68 61 6e 67 65 73 20 61 73 20 79 6f 75 20 6e 6f  hanges as you no
0b90: 72 6d 61 6c 6c 79 20 77 6f 75 6c 64 3b 20 74 68  rmally would; th
0ba0: 65 6e 20 77 68 65 6e 0a 79 6f 75 20 67 6f 20 74  en when.you go t
0bb0: 6f 20 63 68 65 63 6b 20 74 68 65 6d 20 69 6e 2c  o check them in,
0bc0: 20 79 6f 75 20 67 69 76 65 20 74 68 65 20 60 2d   you give the `-
0bd0: 2d 62 72 61 6e 63 68 60 20 6f 70 74 69 6f 6e 20  -branch` option 
0be0: 74 6f 20 74 68 65 0a 60 63 69 2f 63 68 65 63 6b  to the.`ci/check
0bf0: 69 6e 60 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 70  in` command to p
0c00: 75 74 20 74 68 65 20 63 68 61 6e 67 65 73 20 6f  ut the changes o
0c10: 6e 20 61 20 6e 65 77 20 62 72 61 6e 63 68 2c 20  n a new branch, 
0c20: 72 61 74 68 65 72 20 74 68 61 6e 20 61 64 64 0a  rather than add.
0c30: 74 68 65 6d 20 74 6f 20 74 68 65 20 73 61 6d 65  them to the same
0c40: 20 62 72 61 6e 63 68 20 74 68 65 20 63 68 61 6e   branch the chan
0c50: 67 65 73 20 77 65 72 65 20 6d 61 64 65 20 61 67  ges were made ag
0c60: 61 69 6e 73 74 2e 0a 0a 41 74 20 73 6f 6d 65 20  ainst...At some 
0c70: 70 6f 69 6e 74 2c 20 74 68 65 20 74 72 75 6e 6b  point, the trunk
0c80: 20 76 65 72 73 69 6f 6e 20 62 65 63 6f 6d 65 73   version becomes
0c90: 20 74 68 65 20 6e 65 78 74 20 6d 61 6a 6f 72 20   the next major 
0ca0: 76 65 72 73 69 6f 6e 2e 20 53 74 61 62 6c 65 0a  version. Stable.
0cb0: 76 65 72 73 69 6f 6e 73 20 62 65 63 6f 6d 65 20  versions become 
0cc0: 65 69 74 68 65 72 20 74 61 67 73 20 6f 72 20 62  either tags or b
0cd0: 72 61 6e 63 68 65 73 2e 20 28 54 68 65 20 6f 6e  ranches. (The on
0ce0: 6c 79 20 64 69 66 66 65 72 65 6e 63 65 20 62 65  ly difference be
0cf0: 74 77 65 65 6e 0a 74 61 67 73 20 61 6e 64 20 62  tween.tags and b
0d00: 72 61 6e 63 68 65 73 20 69 6e 20 46 6f 73 73 69  ranches in Fossi
0d10: 6c 20 69 73 20 74 68 61 74 20 62 72 61 6e 63 68  l is that branch
0d20: 65 73 20 6d 61 79 20 68 61 76 65 20 73 75 62 73  es may have subs
0d30: 65 71 75 65 6e 74 20 63 68 61 6e 67 65 73 0a 6d  equent changes.m
0d40: 61 64 65 20 74 6f 20 74 68 65 6d 2e 29 0a 0a 5b  ade to them.)..[
0d50: 61 76 68 5d 3a 20 20 68 74 74 70 73 3a 2f 2f 74  avh]:  https://t
0d60: 61 6e 67 65 6e 74 73 6f 66 74 2e 63 6f 6d 2f 6d  angentsoft.com/m
0d70: 79 73 71 6c 70 70 2f 77 69 6b 69 3f 6e 61 6d 65  ysqlpp/wiki?name
0d80: 3d 41 62 72 69 64 67 65 64 2b 56 65 72 73 69 6f  =Abridged+Versio
0d90: 6e 2b 48 69 73 74 6f 72 79 0a 5b 64 76 63 73 5d  n+History.[dvcs]
0da0: 3a 20 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69  : http://en.wiki
0db0: 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 44  pedia.org/wiki/D
0dc0: 69 73 74 72 69 62 75 74 65 64 5f 72 65 76 69 73  istributed_revis
0dd0: 69 6f 6e 5f 63 6f 6e 74 72 6f 6c 0a 5b 66 73 6c  ion_control.[fsl
0de0: 5d 3a 20 20 68 74 74 70 3a 2f 2f 66 6f 73 73 69  ]:  http://fossi
0df0: 6c 2d 73 63 6d 2e 6f 72 67 2f 0a 5b 66 73 6c 62  l-scm.org/.[fslb
0e00: 5d 3a 20 68 74 74 70 3a 2f 2f 66 6f 73 73 69 6c  ]: http://fossil
0e10: 2d 73 63 6d 2e 6f 72 67 2f 69 6e 64 65 78 2e 68  -scm.org/index.h
0e20: 74 6d 6c 2f 75 76 2f 64 6f 77 6e 6c 6f 61 64 2e  tml/uv/download.
0e30: 68 74 6d 6c 0a 5b 66 73 6c 71 5d 3a 20 68 74 74  html.[fslq]: htt
0e40: 70 3a 2f 2f 66 6f 73 73 69 6c 2d 73 63 6d 2e 6f  p://fossil-scm.o
0e50: 72 67 2f 69 6e 64 65 78 2e 68 74 6d 6c 2f 64 6f  rg/index.html/do
0e60: 63 2f 74 72 75 6e 6b 2f 77 77 77 2f 71 75 69 63  c/trunk/www/quic
0e70: 6b 73 74 61 72 74 2e 77 69 6b 69 0a 5b 66 73 6c  kstart.wiki.[fsl
0e80: 73 5d 3a 20 68 74 74 70 3a 2f 2f 66 6f 73 73 69  s]: http://fossi
0e90: 6c 2d 73 63 6d 2e 6f 72 67 2f 69 6e 64 65 78 2e  l-scm.org/index.
0ea0: 68 74 6d 6c 2f 64 6f 63 2f 74 72 75 6e 6b 2f 77  html/doc/trunk/w
0eb0: 77 77 2f 62 75 69 6c 64 2e 77 69 6b 69 0a 5b 6d  ww/build.wiki.[m
0ec0: 6c 5d 3a 20 20 20 68 74 74 70 73 3a 2f 2f 6c 69  l]:   https://li
0ed0: 73 74 73 2e 6d 79 73 71 6c 2e 63 6f 6d 2f 70 6c  sts.mysql.com/pl
0ee0: 75 73 70 6c 75 73 2f 0a 0a 0a 23 23 20 42 6f 6f  usplus/...## Boo
0ef0: 74 73 74 72 61 70 70 69 6e 67 20 74 68 65 20 4c  tstrapping the L
0f00: 69 62 72 61 72 79 0a 0a 57 68 65 6e 20 79 6f 75  ibrary..When you
0f10: 20 63 68 65 63 6b 20 6f 75 74 20 4d 79 53 51 4c   check out MySQL
0f20: 2b 2b 20 66 72 6f 6d 20 46 6f 73 73 69 6c 2c 20  ++ from Fossil, 
0f30: 74 68 65 72 65 20 61 72 65 20 61 20 6c 6f 74 20  there are a lot 
0f40: 6f 66 20 74 68 69 6e 67 73 0a 22 6d 69 73 73 69  of things."missi
0f50: 6e 67 22 20 61 73 20 63 6f 6d 70 61 72 65 64 20  ng" as compared 
0f60: 74 6f 20 61 20 64 69 73 74 72 69 62 75 74 65 64  to a distributed
0f70: 20 74 61 72 62 61 6c 6c 2c 20 62 65 63 61 75 73   tarball, becaus
0f80: 65 20 74 68 65 20 46 6f 73 73 69 6c 0a 72 65 70  e the Fossil.rep
0f90: 6f 73 69 74 6f 72 79 20 63 6f 6e 74 61 69 6e 73  ository contains
0fa0: 20 6f 6e 6c 79 20 73 6f 75 72 63 65 20 66 69 6c   only source fil
0fb0: 65 73 2c 20 6e 6f 20 67 65 6e 65 72 61 74 65 64  es, no generated
0fc0: 20 66 69 6c 65 73 2e 20 20 54 68 65 0a 70 72 6f   files.  The.pro
0fd0: 63 65 73 73 20 74 68 61 74 20 74 75 72 6e 73 20  cess that turns 
0fe0: 61 20 66 72 65 73 68 20 4d 79 53 51 4c 2b 2b 20  a fresh MySQL++ 
0ff0: 72 65 70 6f 73 69 74 6f 72 79 20 63 68 65 63 6b  repository check
1000: 6f 75 74 20 69 6e 74 6f 0a 73 6f 6d 65 74 68 69  out into.somethi
1010: 6e 67 20 79 6f 75 20 63 61 6e 20 62 75 69 6c 64  ng you can build
1020: 20 61 6e 64 20 68 61 63 6b 20 6f 6e 20 69 73 20   and hack on is 
1030: 63 61 6c 6c 65 64 20 62 6f 6f 74 73 74 72 61 70  called bootstrap
1040: 70 69 6e 67 2e 0a 0a 42 6f 6f 73 74 72 61 70 70  ping...Boostrapp
1050: 69 6e 67 20 69 73 20 62 65 73 74 20 64 6f 6e 65  ing is best done
1060: 20 6f 6e 20 61 20 6d 6f 64 65 72 6e 20 55 6e 69   on a modern Uni
1070: 78 20 74 79 70 65 20 70 6c 61 74 66 6f 72 6d 3a  x type platform:
1080: 20 4c 69 6e 75 78 2c 20 4f 53 0a 58 2c 20 42 53   Linux, OS.X, BS
1090: 44 2c 20 53 6f 6c 61 72 69 73 2e 2e 2e 61 6e 79  D, Solaris...any
10a0: 20 76 65 72 73 69 6f 6e 20 72 65 6c 65 61 73 65   version release
10b0: 64 20 73 69 6e 63 65 20 32 30 30 35 20 6f 72 20  d since 2005 or 
10c0: 73 6f 2e 20 49 74 27 73 0a 70 6f 73 73 69 62 6c  so. It's.possibl
10d0: 65 20 74 6f 20 64 6f 20 69 74 20 6f 6e 20 57 69  e to do it on Wi
10e0: 6e 64 6f 77 73 2c 20 62 75 74 20 6d 75 63 68 20  ndows, but much 
10f0: 68 61 72 64 65 72 3b 20 77 65 20 63 6f 76 65 72  harder; we cover
1100: 20 74 68 65 20 6f 70 74 69 6f 6e 73 0a 62 65 6c   the options.bel
1110: 6f 77 20 69 6e 20 61 20 73 65 70 61 72 61 74 65  ow in a separate
1120: 20 73 65 63 74 69 6f 6e 2e 0a 0a 54 77 6f 20 6f   section...Two o
1130: 66 20 74 68 65 20 74 6f 6f 6c 73 20 79 6f 75 20  f the tools you 
1140: 6e 65 65 64 20 74 6f 20 64 6f 20 74 68 69 73 20  need to do this 
1150: 61 72 65 20 63 6f 6d 6d 6f 6e 6c 79 20 61 76 61  are commonly ava
1160: 69 6c 61 62 6c 65 20 6f 6e 20 55 6e 69 78 79 0a  ilable on Unixy.
1170: 73 79 73 74 65 6d 73 2c 20 61 74 20 6c 65 61 73  systems, at leas
1180: 74 20 61 73 20 61 6e 20 6f 70 74 69 6f 6e 3a 20  t as an option: 
1190: 50 65 72 6c 20 35 2c 20 61 6e 64 20 47 4e 55 20  Perl 5, and GNU 
11a0: 41 75 74 6f 63 6f 6e 66 20 31 2e 35 39 20 6f 72  Autoconf 1.59 or
11b0: 20 68 69 67 68 65 72 2e 0a 49 66 20 74 68 65 79   higher..If they
11c0: 27 72 65 20 6e 6f 74 20 69 6e 73 74 61 6c 6c 65  're not installe
11d0: 64 2c 20 79 6f 75 20 63 61 6e 20 70 72 6f 62 61  d, you can proba
11e0: 62 6c 79 20 72 75 6e 20 79 6f 75 72 20 73 79 73  bly run your sys
11f0: 74 65 6d 27 73 20 70 61 63 6b 61 67 65 0a 6d 61  tem's package.ma
1200: 6e 61 67 65 72 20 74 6f 20 69 6e 73 74 61 6c 6c  nager to install
1210: 20 73 75 69 74 61 62 6c 65 20 76 65 72 73 69 6f   suitable versio
1220: 6e 73 2e 0a 0a 54 68 65 72 65 27 73 20 61 20 74  ns...There's a t
1230: 68 69 72 64 20 74 6f 6f 6c 20 79 6f 75 27 6c 6c  hird tool you'll
1240: 20 6e 65 65 64 20 74 6f 20 62 6f 6f 74 73 74 72   need to bootstr
1250: 61 70 20 4d 79 53 51 4c 2b 2b 20 63 61 6c 6c 65  ap MySQL++ calle
1260: 64 0a 5b 42 61 6b 65 66 69 6c 65 5d 5b 62 66 5d  d.[Bakefile][bf]
1270: 2e 20 54 68 65 20 73 79 6e 74 61 78 20 75 73 65  . The syntax use
1280: 64 20 69 6e 20 60 6d 79 73 71 6c 2b 2b 2e 62 6b  d in `mysql++.bk
1290: 6c 60 20 72 65 71 75 69 72 65 73 20 61 74 20 6c  l` requires at l
12a0: 65 61 73 74 0a 42 61 6b 65 66 69 6c 65 20 30 2e  east.Bakefile 0.
12b0: 32 2e 35 20 6f 72 20 68 69 67 68 65 72 2c 20 77  2.5 or higher, w
12c0: 68 69 63 68 20 69 6e 20 74 75 72 6e 20 72 65 71  hich in turn req
12d0: 75 69 72 65 73 20 50 79 74 68 6f 6e 20 32 2e 33  uires Python 2.3
12e0: 20 6f 72 20 68 69 67 68 65 72 20 74 6f 0a 72 75   or higher to.ru
12f0: 6e 2e 20 59 6f 75 20 6d 61 79 20 72 65 71 75 69  n. You may requi
1300: 72 65 20 61 20 6e 65 77 65 72 20 76 65 72 73 69  re a newer versi
1310: 6f 6e 20 6f 66 20 42 61 6b 65 66 69 6c 65 20 74  on of Bakefile t
1320: 6f 20 73 75 70 70 6f 72 74 20 6e 65 77 65 72 20  o support newer 
1330: 4f 53 65 73 0a 61 6e 64 20 50 79 74 68 6f 6e 20  OSes.and Python 
1340: 76 65 72 73 69 6f 6e 73 3b 20 77 65 27 76 65 20  versions; we've 
1350: 74 65 73 74 65 64 20 77 69 74 68 20 76 65 72 73  tested with vers
1360: 69 6f 6e 73 20 75 70 20 74 6f 20 30 2e 32 2e 31  ions up to 0.2.1
1370: 31 0a 73 75 63 63 65 73 73 66 75 6c 6c 79 2e 20  1.successfully. 
1380: 20 44 6f 20 6e 6f 74 20 75 73 65 20 61 6e 79 20   Do not use any 
1390: 6f 66 20 74 68 65 20 42 61 6b 65 66 69 6c 65 20  of the Bakefile 
13a0: 31 2e 78 20 76 65 72 73 69 6f 6e 73 3a 20 69 74  1.x versions: it
13b0: 27 73 20 61 20 6d 61 6a 6f 72 0a 63 68 61 6e 67  's a major.chang
13c0: 65 20 69 6e 20 64 69 72 65 63 74 69 6f 6e 20 77  e in direction w
13d0: 68 69 63 68 20 77 65 20 68 61 76 65 6e 27 74 20  hich we haven't 
13e0: 74 72 69 65 64 20 74 6f 20 66 6f 6c 6c 6f 77 2e  tried to follow.
13f0: 0a 0a 4f 6e 63 65 20 79 6f 75 20 68 61 76 65 20  ..Once you have 
1400: 61 6c 6c 20 74 68 65 20 74 6f 6f 6c 73 20 69 6e  all the tools in
1410: 20 70 6c 61 63 65 2c 20 79 6f 75 20 63 61 6e 20   place, you can 
1420: 62 6f 6f 74 73 74 72 61 70 20 4d 79 53 51 4c 2b  bootstrap MySQL+
1430: 2b 20 77 69 74 68 20 61 0a 42 6f 75 72 6e 65 20  + with a.Bourne 
1440: 73 68 65 6c 6c 20 73 63 72 69 70 74 20 63 61 6c  shell script cal
1450: 6c 65 64 20 60 62 6f 6f 74 73 74 72 61 70 60 2c  led `bootstrap`,
1460: 20 77 68 69 63 68 20 79 6f 75 20 67 65 74 20 61   which you get a
1470: 73 20 70 61 72 74 20 6f 66 20 74 68 65 0a 46 6f  s part of the.Fo
1480: 73 73 69 6c 20 63 68 65 63 6b 6f 75 74 2e 20 49  ssil checkout. I
1490: 74 27 73 20 66 61 69 72 6c 79 20 70 6f 77 65 72  t's fairly power
14a0: 66 75 6c 2c 20 77 69 74 68 20 6d 61 6e 79 20 6f  ful, with many o
14b0: 70 74 69 6f 6e 73 2e 20 20 46 6f 72 20 6d 6f 73  ptions.  For mos
14c0: 74 0a 63 61 73 65 73 2c 20 69 74 20 73 75 66 66  t.cases, it suff
14d0: 69 63 65 73 20 74 6f 20 6a 75 73 74 20 72 75 6e  ices to just run
14e0: 20 69 74 20 77 69 74 68 6f 75 74 20 61 6e 79 20   it without any 
14f0: 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 20 20 20 20  arguments:..    
1500: 24 20 2e 2f 62 6f 6f 74 73 74 72 61 70 0a 0a 46  $ ./bootstrap..F
1510: 6f 72 20 6d 6f 72 65 20 75 6e 75 73 75 61 6c 20  or more unusual 
1520: 73 69 74 75 61 74 69 6f 6e 73 2c 20 68 65 72 65  situations, here
1530: 27 73 20 74 68 65 20 63 6f 6d 70 6c 65 74 65 20  's the complete 
1540: 75 73 61 67 65 3a 0a 0a 20 20 20 20 24 20 2e 2f  usage:..    $ ./
1550: 62 6f 6f 74 73 74 72 61 70 20 5b 6e 6f 7b 64 6f  bootstrap [no{do
1560: 63 2c 65 78 2c 6c 69 62 2c 6f 70 74 7d 5d 20 5b  c,ex,lib,opt}] [
1570: 70 65 64 61 6e 74 69 63 5d 20 5b 62 61 74 5d 20  pedantic] [bat] 
1580: 5b 63 6f 6e 66 69 67 75 72 65 20 66 6c 61 67 73  [configure flags
1590: 5d 0a 0a 41 72 67 75 6d 65 6e 74 73 3a 0a 0a 2a  ]..Arguments:..*
15a0: 20 20 20 60 6e 6f 64 6f 63 60 0a 0a 20 20 20 20     `nodoc`..    
15b0: 54 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  The documentatio
15c0: 6e 20 77 6f 6e 27 74 20 62 65 20 63 6f 6e 73 69  n won't be consi
15d0: 64 65 72 65 64 20 61 20 70 72 65 72 65 71 75 69  dered a prerequi
15e0: 73 69 74 65 20 66 6f 72 20 62 75 69 6c 64 69 6e  site for buildin
15f0: 67 0a 20 20 20 20 74 68 65 20 64 69 73 74 72 69  g.    the distri
1600: 62 75 74 69 6f 6e 20 74 61 72 62 61 6c 6c 2e 20  bution tarball. 
1610: 54 68 69 73 20 69 73 20 75 73 65 66 75 6c 20 6f  This is useful o
1620: 6e 20 73 79 73 74 65 6d 73 20 77 68 65 72 65 20  n systems where 
1630: 74 68 65 0a 20 20 20 20 64 6f 63 75 6d 65 6e 74  the.    document
1640: 61 74 69 6f 6e 20 64 6f 65 73 6e 27 74 20 62 75  ation doesn't bu
1650: 69 6c 64 20 63 6f 72 72 65 63 74 6c 79 2c 20 61  ild correctly, a
1660: 6e 64 20 79 6f 75 20 6f 6e 6c 79 20 6e 65 65 64  nd you only need
1670: 20 74 6f 20 6d 61 6b 65 20 61 0a 20 20 20 20 62   to make a.    b
1680: 69 6e 61 72 79 20 52 50 4d 2e 20 54 68 61 74 20  inary RPM. That 
1690: 70 72 6f 63 65 73 73 20 72 65 71 75 69 72 65 73  process requires
16a0: 20 61 20 74 61 72 62 61 6c 6c 2c 20 62 75 74 20   a tarball, but 
16b0: 64 6f 65 73 6e 27 74 20 6e 65 65 64 20 74 68 65  doesn't need the
16c0: 0a 20 20 20 20 64 6f 63 75 6d 65 6e 74 61 74 69  .    documentati
16d0: 6f 6e 2e 20 44 6f 6e 27 74 20 64 69 73 74 72 69  on. Don't distri
16e0: 62 75 74 65 20 74 68 65 20 74 61 72 62 61 6c 6c  bute the tarball
16f0: 20 6f 72 20 53 52 50 4d 20 74 68 61 74 20 72 65   or SRPM that re
1700: 73 75 6c 74 73 2c 20 61 73 0a 20 20 20 20 74 68  sults, as.    th
1710: 65 79 20 61 72 65 20 6e 6f 20 67 6f 6f 64 20 66  ey are no good f
1720: 6f 72 20 61 6e 79 20 6f 74 68 65 72 20 70 75 72  or any other pur
1730: 70 6f 73 65 2e 0a 0a 2a 20 20 20 60 6e 6f 65 78  pose...*   `noex
1740: 60 0a 0a 20 20 20 20 54 68 65 20 67 65 6e 65 72  `..    The gener
1750: 61 74 65 64 20 60 4d 61 6b 65 66 69 6c 65 73 60  ated `Makefiles`
1760: 20 61 6e 64 20 70 72 6f 6a 65 63 74 20 66 69 6c   and project fil
1770: 65 73 20 77 6f 6e 27 74 20 74 72 79 20 74 6f 20  es won't try to 
1780: 62 75 69 6c 64 20 61 6e 79 20 6f 66 0a 20 20 20  build any of.   
1790: 20 74 68 65 20 65 78 61 6d 70 6c 65 73 2e 0a 0a   the examples...
17a0: 2a 20 20 20 60 6e 6f 6c 69 62 60 0a 0a 20 20 20  *   `nolib`..   
17b0: 20 54 68 65 20 67 65 6e 65 72 61 74 65 64 20 60   The generated `
17c0: 4d 61 6b 65 66 69 6c 65 73 60 20 61 6e 64 20 70  Makefiles` and p
17d0: 72 6f 6a 65 63 74 20 66 69 6c 65 73 20 77 6f 6e  roject files won
17e0: 27 74 20 74 72 79 20 74 6f 20 62 75 69 6c 64 20  't try to build 
17f0: 74 68 65 0a 20 20 20 20 4d 79 53 51 4c 2b 2b 20  the.    MySQL++ 
1800: 6c 69 62 72 61 72 79 2e 0a 0a 2a 20 20 20 60 6e  library...*   `n
1810: 6f 6d 61 69 6e 74 60 0a 0a 20 20 20 20 54 75 72  omaint`..    Tur
1820: 6e 20 6f 66 66 20 22 6d 61 69 6e 74 61 69 6e 65  n off "maintaine
1830: 72 20 6d 6f 64 65 22 20 73 74 75 66 66 20 69 6e  r mode" stuff in
1840: 20 74 68 65 20 62 75 69 6c 64 2e 20 54 68 65 73   the build. Thes
1850: 65 20 61 72 65 20 66 65 61 74 75 72 65 73 0a 20  e are features. 
1860: 20 20 20 75 73 65 64 20 6f 6e 6c 79 20 62 79 20     used only by 
1870: 74 68 6f 73 65 20 62 75 69 6c 64 69 6e 67 20 4d  those building M
1880: 79 53 51 4c 2b 2b 20 66 72 6f 6d 20 46 6f 73 73  ySQL++ from Foss
1890: 69 6c 2e 20 54 68 65 20 60 64 69 73 74 60 20 62  il. The `dist` b
18a0: 75 69 6c 64 0a 20 20 20 20 74 61 72 67 65 74 20  uild.    target 
18b0: 75 73 65 73 20 74 68 69 73 20 77 68 65 6e 20 63  uses this when c
18c0: 72 65 61 74 69 6e 67 20 74 68 65 20 74 61 72 62  reating the tarb
18d0: 61 6c 6c 2e 0a 0a 2a 20 20 20 60 6e 6f 6f 70 74  all...*   `noopt
18e0: 60 0a 0a 20 20 20 20 43 6f 6d 70 69 6c 65 72 20  `..    Compiler 
18f0: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 77 69 6c  optimization wil
1900: 6c 20 62 65 20 74 75 72 6e 65 64 20 6f 66 66 2e  l be turned off.
1910: 20 28 54 68 69 73 20 63 75 72 72 65 6e 74 6c 79   (This currently
1920: 20 68 61 73 20 6e 6f 0a 20 20 20 20 65 66 66 65   has no.    effe
1930: 63 74 20 6f 6e 20 4d 69 6e 47 57 20 6f 72 20 56  ct on MinGW or V
1940: 69 73 75 61 6c 20 43 2b 2b 2e 29 0a 0a 2a 20 20  isual C++.)..*  
1950: 20 60 70 65 64 61 6e 74 69 63 60 0a 0a 20 20 20   `pedantic`..   
1960: 20 54 75 72 6e 73 20 6f 6e 20 61 6c 6c 20 6f 66   Turns on all of
1970: 20 47 43 43 27 73 20 77 61 72 6e 69 6e 67 73 20   GCC's warnings 
1980: 61 6e 64 20 70 6f 72 74 61 62 69 6c 69 74 79 20  and portability 
1990: 63 68 65 63 6b 73 2e 20 20 47 6f 6f 64 20 66 6f  checks.  Good fo
19a0: 72 0a 20 20 20 20 63 68 65 63 6b 69 6e 67 20 63  r.    checking c
19b0: 68 61 6e 67 65 73 20 62 65 66 6f 72 65 20 6d 61  hanges before ma
19c0: 6b 69 6e 67 20 61 20 70 75 62 6c 69 63 20 72 65  king a public re
19d0: 6c 65 61 73 65 2e 0a 0a 2a 20 20 20 60 62 61 74  lease...*   `bat
19e0: 60 0a 0a 20 20 20 20 52 75 6e 73 20 60 62 6f 6f  `..    Runs `boo
19f0: 74 73 74 72 61 70 2e 62 61 74 60 20 76 69 61 20  tstrap.bat` via 
1a00: 60 63 6d 64 2e 65 78 65 60 20 66 6f 72 20 79 6f  `cmd.exe` for yo
1a10: 75 2c 20 70 61 73 73 69 6e 67 20 61 6c 6f 6e 67  u, passing along
1a20: 20 65 71 75 69 76 61 6c 65 6e 74 0a 20 20 20 20   equivalent.    
1a30: 6f 70 74 69 6f 6e 73 20 74 6f 20 61 6e 79 20 6f  options to any o
1a40: 66 20 74 68 65 20 22 2a 6e 6f 2a 22 20 6f 70 74  f the "*no*" opt
1a50: 69 6f 6e 73 20 79 6f 75 20 67 69 76 65 20 62 65  ions you give be
1a60: 66 6f 72 65 20 69 74 2e 0a 0a 20 20 20 20 4f 6e  fore it...    On
1a70: 6c 79 20 74 68 65 20 22 2a 6e 6f 2a 22 20 6f 70  ly the "*no*" op
1a80: 74 69 6f 6e 73 20 61 62 6f 76 65 20 68 61 76 65  tions above have
1a90: 20 61 6e 20 65 66 66 65 63 74 20 6f 6e 20 74 68   an effect on th
1aa0: 65 20 67 65 6e 65 72 61 74 65 64 20 62 75 69 6c  e generated buil
1ab0: 64 0a 20 20 20 20 73 79 73 74 65 6d 20 66 69 6c  d.    system fil
1ac0: 65 73 20 77 68 65 6e 20 79 6f 75 20 67 69 76 65  es when you give
1ad0: 20 22 60 62 61 74 60 22 2e 20 20 49 6e 20 70 61   "`bat`".  In pa
1ae0: 72 74 69 63 75 6c 61 72 2c 20 74 68 65 20 66 69  rticular, the fi
1af0: 6c 65 73 0a 20 20 20 20 67 65 6e 65 72 61 74 65  les.    generate
1b00: 64 20 62 79 20 60 62 6f 6f 74 73 74 72 61 70 2e  d by `bootstrap.
1b10: 62 61 74 60 20 6d 61 6b 65 20 6e 6f 20 64 69 73  bat` make no dis
1b20: 74 69 6e 63 74 69 6f 6e 20 62 65 74 77 65 65 6e  tinction between
1b30: 20 22 70 65 64 61 6e 74 69 63 22 0a 20 20 20 20   "pedantic".    
1b40: 61 6e 64 20 6e 6f 72 6d 61 6c 20 62 75 69 6c 64  and normal build
1b50: 73 2e 0a 0a 20 20 20 20 50 61 73 73 69 6e 67 20  s...    Passing 
1b60: 60 62 61 74 60 20 73 74 6f 70 73 20 61 6c 6c 20  `bat` stops all 
1b70: 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 70 72 6f  command line pro
1b80: 63 65 73 73 69 6e 67 20 69 6e 20 74 68 65 20 60  cessing in the `
1b90: 62 6f 6f 74 73 74 72 61 70 60 0a 20 20 20 20 73  bootstrap`.    s
1ba0: 63 72 69 70 74 2c 20 73 6f 20 69 66 20 79 6f 75  cript, so if you
1bb0: 20 61 6c 73 6f 20 70 61 73 73 20 73 6f 6d 65 20   also pass some 
1bc0: 6f 66 20 74 68 65 20 6f 74 68 65 72 20 6f 70 74  of the other opt
1bd0: 69 6f 6e 73 2c 20 22 60 62 61 74 60 22 20 6d 75  ions, "`bat`" mu
1be0: 73 74 0a 20 20 20 20 62 65 20 6c 61 73 74 2e 0a  st.    be last..
1bf0: 20 20 20 20 0a 20 20 20 20 54 68 65 20 60 62 6f      .    The `bo
1c00: 6f 74 73 74 72 61 70 2e 62 61 74 60 20 73 63 72  otstrap.bat` scr
1c10: 69 70 74 20 69 73 20 75 73 65 66 75 6c 20 6f 6e  ipt is useful on
1c20: 6c 79 20 77 68 65 6e 20 79 6f 75 20 69 6e 74 65  ly when you inte
1c30: 6e 64 20 74 6f 20 62 75 69 6c 64 0a 20 20 20 20  nd to build.    
1c40: 4d 79 53 51 4c 2b 2b 20 77 69 74 68 20 4d 69 6e  MySQL++ with Min
1c50: 47 57 20 6f 72 20 56 69 73 75 61 6c 20 43 2b 2b  GW or Visual C++
1c60: 2c 20 61 6e 64 20 79 6f 75 20 61 72 65 20 75 73  , and you are us
1c70: 69 6e 67 20 43 79 67 77 69 6e 20 6f 6e 6c 79 20  ing Cygwin only 
1c80: 61 73 20 61 0a 20 20 20 20 63 6f 6d 6d 61 6e 64  as a.    command
1c90: 20 6c 69 6e 65 20 65 6e 76 69 72 6f 6e 6d 65 6e   line environmen
1ca0: 74 2e 20 20 49 66 20 79 6f 75 20 69 6e 74 65 6e  t.  If you inten
1cb0: 64 20 74 6f 20 62 75 69 6c 64 20 4d 79 53 51 4c  d to build MySQL
1cc0: 2b 2b 20 77 69 74 68 0a 20 20 20 20 43 79 67 77  ++ with.    Cygw
1cd0: 69 6e 27 73 20 47 43 43 20 74 6f 6f 6c 63 68 61  in's GCC toolcha
1ce0: 69 6e 2c 20 79 6f 75 20 6d 75 73 74 20 6e 6f 74  in, you must not
1cf0: 20 67 69 76 65 20 74 68 69 73 20 6f 70 74 69 6f   give this optio
1d00: 6e 2c 20 65 6c 73 65 20 79 6f 75 20 77 69 6c 6c  n, else you will
1d10: 0a 20 20 20 20 6e 6f 74 20 65 6e 64 20 75 70 20  .    not end up 
1d20: 77 69 74 68 20 74 68 65 20 6e 65 63 65 73 73 61  with the necessa
1d30: 72 79 20 62 75 69 6c 64 20 73 79 73 74 65 6d 20  ry build system 
1d40: 66 69 6c 65 73 2e 0a 0a 20 20 20 20 4f 6e 65 20  files...    One 
1d50: 61 64 76 61 6e 74 61 67 65 20 6f 66 20 74 68 69  advantage of thi
1d60: 73 20 66 65 61 74 75 72 65 20 69 73 20 74 68 61  s feature is tha
1d70: 74 20 74 68 65 20 63 6f 6d 6d 61 6e 64 73 20 6e  t the commands n
1d80: 65 63 65 73 73 61 72 79 20 74 6f 0a 20 20 20 20  ecessary to.    
1d90: 61 63 68 69 65 76 65 20 61 20 67 69 76 65 6e 20  achieve a given 
1da0: 65 66 66 65 63 74 20 77 69 74 68 20 60 62 6f 6f  effect with `boo
1db0: 74 73 74 72 61 70 2e 62 61 74 60 20 77 68 65 6e  tstrap.bat` when
1dc0: 20 72 75 6e 20 76 69 61 20 60 62 6f 6f 74 73 74   run via `bootst
1dd0: 72 61 70 60 0a 20 20 20 20 61 72 65 20 73 68 6f  rap`.    are sho
1de0: 72 74 65 72 20 74 68 61 6e 20 77 68 65 6e 20 79  rter than when y
1df0: 6f 75 20 72 75 6e 20 74 68 65 20 62 61 74 63 68  ou run the batch
1e00: 20 66 69 6c 65 20 64 69 72 65 63 74 6c 79 2e 0a   file directly..
1e10: 0a 20 20 20 20 41 6e 6f 74 68 65 72 20 61 64 76  .    Another adv
1e20: 61 6e 74 61 67 65 20 69 73 20 74 68 61 74 20 74  antage is that t
1e30: 68 69 73 20 6c 6f 77 2d 73 74 72 65 6e 67 74 68  his low-strength
1e40: 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20   version of the 
1e50: 62 6f 6f 74 73 74 72 61 70 0a 20 20 20 20 73 63  bootstrap.    sc
1e60: 72 69 70 74 20 72 75 6e 73 20 66 61 73 74 65 72  ript runs faster
1e70: 20 74 68 61 6e 20 74 68 65 20 66 75 6c 6c 2d 73   than the full-s
1e80: 74 72 65 6e 67 74 68 20 66 6f 72 6d 2c 20 62 65  trength form, be
1e90: 63 61 75 73 65 20 69 74 20 70 72 6f 64 75 63 65  cause it produce
1ea0: 73 0a 20 20 20 20 66 65 77 65 72 20 66 69 6c 65  s.    fewer file
1eb0: 73 2e 0a 0a 20 20 20 20 46 69 6e 61 6c 6c 79 2c  s...    Finally,
1ec0: 20 72 75 6e 6e 69 6e 67 20 60 62 6f 6f 74 73 74   running `bootst
1ed0: 72 61 70 2e 62 61 74 60 20 69 6e 64 69 72 65 63  rap.bat` indirec
1ee0: 74 6c 79 20 6c 69 6b 65 20 74 68 69 73 20 6c 65  tly like this le
1ef0: 74 73 20 79 6f 75 20 61 76 6f 69 64 0a 20 20 20  ts you avoid.   
1f00: 20 75 73 69 6e 67 20 60 63 6d 64 2e 65 78 65 60   using `cmd.exe`
1f10: 2c 20 61 20 63 6f 6d 6d 61 6e 64 20 73 68 65 6c  , a command shel
1f20: 6c 20 67 72 65 61 74 6c 79 20 69 6e 66 65 72 69  l greatly inferi
1f30: 6f 72 20 74 6f 20 61 6e 79 20 6f 66 20 74 68 6f  or to any of tho
1f40: 73 65 0a 20 20 20 20 61 76 61 69 6c 61 62 6c 65  se.    available
1f50: 20 66 6f 72 20 43 79 67 77 69 6e 2e 0a 0a 2a 20   for Cygwin...* 
1f60: 20 20 60 63 6f 6e 66 69 67 75 72 65 60 20 73 63    `configure` sc
1f70: 72 69 70 74 20 6f 70 74 69 6f 6e 73 0a 0a 20 20  ript options..  
1f80: 20 20 41 73 20 73 6f 6f 6e 20 61 73 20 74 68 65    As soon as the
1f90: 20 62 6f 6f 74 73 74 72 61 70 20 73 63 72 69 70   bootstrap scrip
1fa0: 74 20 73 65 65 73 20 61 6e 20 6f 70 74 69 6f 6e  t sees an option
1fb0: 20 74 68 61 74 20 69 74 20 64 6f 65 73 6e 27 74   that it doesn't
1fc0: 0a 20 20 20 20 75 6e 64 65 72 73 74 61 6e 64 2c  .    understand,
1fd0: 20 69 74 20 73 74 6f 70 73 20 70 72 6f 63 65 73   it stops proces
1fe0: 73 69 6e 67 20 74 68 65 20 63 6f 6d 6d 61 6e 64  sing the command
1ff0: 20 6c 69 6e 65 2e 20 20 41 6e 79 20 73 75 62 73   line.  Any subs
2000: 65 71 75 65 6e 74 0a 20 20 20 20 6f 70 74 69 6f  equent.    optio
2010: 6e 73 20 61 72 65 20 70 61 73 73 65 64 20 74 6f  ns are passed to
2020: 20 74 68 65 20 60 63 6f 6e 66 69 67 75 72 65 60   the `configure`
2030: 20 73 63 72 69 70 74 2e 20 53 65 65 0a 20 20 20   script. See.   
2040: 20 5b 52 45 41 44 4d 45 2d 55 6e 69 78 2e 74 78   [README-Unix.tx
2050: 74 5d 5b 72 6d 75 5d 20 66 6f 72 20 6d 6f 72 65  t][rmu] for more
2060: 20 6f 6e 20 60 63 6f 6e 66 69 67 75 72 65 60 20   on `configure` 
2070: 73 63 72 69 70 74 20 6f 70 74 69 6f 6e 73 2e 0a  script options..
2080: 0a 5b 62 66 5d 3a 20 20 68 74 74 70 3a 2f 2f 62  .[bf]:  http://b
2090: 61 6b 65 66 69 6c 65 2e 6f 72 67 2f 0a 5b 72 6d  akefile.org/.[rm
20a0: 75 5d 3a 20 68 74 74 70 73 3a 2f 2f 74 61 6e 67  u]: https://tang
20b0: 65 6e 74 73 6f 66 74 2e 63 6f 6d 2f 6d 79 73 71  entsoft.com/mysq
20c0: 6c 70 70 2f 66 69 6c 65 2f 52 45 41 44 4d 45 2d  lpp/file/README-
20d0: 55 6e 69 78 2e 74 78 74 0a 0a 0a 23 23 20 42 6f  Unix.txt...## Bo
20e0: 6f 74 73 74 72 61 70 70 69 6e 67 20 74 68 65 20  otstrapping the 
20f0: 4c 69 62 72 61 72 79 20 55 73 69 6e 67 20 4f 6e  Library Using On
2100: 6c 79 20 57 69 6e 64 6f 77 73 0a 0a 54 68 65 20  ly Windows..The 
2110: 74 68 69 6e 67 20 74 68 61 74 20 6d 61 6b 65 73  thing that makes
2120: 20 62 6f 6f 74 73 74 72 61 70 70 69 6e 67 20 6f   bootstrapping o
2130: 6e 20 57 69 6e 64 6f 77 73 20 64 69 66 66 69 63  n Windows diffic
2140: 75 6c 74 20 69 73 20 74 68 61 74 20 6f 6e 65 20  ult is that one 
2150: 6f 66 0a 74 68 65 20 72 65 71 75 69 72 65 64 20  of.the required 
2160: 73 74 65 70 73 20 75 73 65 73 20 61 20 55 6e 69  steps uses a Uni
2170: 78 2d 63 65 6e 74 72 69 63 20 74 6f 6f 6c 2c 20  x-centric tool, 
2180: 60 61 75 74 6f 63 6f 6e 66 60 2e 20 20 54 68 69  `autoconf`.  Thi
2190: 73 20 73 65 63 74 69 6f 6e 0a 69 73 20 61 62 6f  s section.is abo
21a0: 75 74 20 77 6f 72 6b 69 6e 67 20 6f 75 74 20 61  ut working out a
21b0: 20 77 61 79 20 74 6f 20 67 65 74 20 74 68 61 74   way to get that
21c0: 20 77 6f 72 6b 69 6e 67 20 6f 6e 20 57 69 6e 64   working on Wind
21d0: 6f 77 73 2c 20 6f 72 20 61 76 6f 69 64 69 6e 67  ows, or avoiding
21e0: 0a 74 68 65 20 6e 65 65 64 20 66 6f 72 20 69 74  .the need for it
21f0: 2c 20 73 6f 20 79 6f 75 20 63 61 6e 20 67 65 74  , so you can get
2200: 20 6f 6e 20 77 69 74 68 20 68 61 63 6b 69 6e 67   on with hacking
2210: 20 6f 6e 20 4d 79 53 51 4c 2b 2b 20 6f 6e 20 57   on MySQL++ on W
2220: 69 6e 64 6f 77 73 2e 0a 0a 54 68 65 20 74 68 69  indows...The thi
2230: 6e 67 20 60 61 75 74 6f 63 6f 6e 66 60 20 64 6f  ng `autoconf` do
2240: 65 73 20 74 68 61 74 27 73 20 72 65 6c 65 76 61  es that's releva
2250: 6e 74 20 74 6f 20 57 69 6e 64 6f 77 73 20 62 75  nt to Windows bu
2260: 69 6c 64 73 20 6f 66 20 4d 79 53 51 4c 2b 2b 0a  ilds of MySQL++.
2270: 69 73 20 74 68 61 74 20 69 74 20 73 75 62 73 74  is that it subst
2280: 69 74 75 74 65 73 20 74 68 65 20 63 75 72 72 65  itutes the curre
2290: 6e 74 20 4d 79 53 51 4c 2b 2b 20 76 65 72 73 69  nt MySQL++ versi
22a0: 6f 6e 20 6e 75 6d 62 65 72 20 69 6e 74 6f 20 73  on number into s
22b0: 65 76 65 72 61 6c 0a 73 6f 75 72 63 65 20 66 69  everal.source fi
22c0: 6c 65 73 2e 20 54 68 69 73 20 61 6c 6c 6f 77 73  les. This allows
22d0: 20 75 73 20 74 6f 20 63 68 61 6e 67 65 20 74 68   us to change th
22e0: 65 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72  e version number
22f0: 20 69 6e 20 6a 75 73 74 20 6f 6e 65 0a 70 6c 61   in just one.pla
2300: 63 65 20 e2 80 94 20 60 63 6f 6e 66 69 67 75 72  ce — `configur
2310: 65 2e 61 63 60 20 e2 80 94 20 61 6e 64 20 68 61  e.ac` — and ha
2320: 76 65 20 69 74 20 61 70 70 6c 69 65 64 20 74 6f  ve it applied to
2330: 20 61 6c 6c 20 74 68 65 73 65 20 6f 74 68 65 72   all these other
2340: 20 70 6c 61 63 65 73 2e 0a 55 6e 74 69 6c 20 79   places..Until y
2350: 6f 75 20 64 6f 20 74 68 69 73 20 73 74 65 70 2c  ou do this step,
2360: 20 61 6e 20 46 6f 73 73 69 6c 20 63 68 65 63 6b   an Fossil check
2370: 6f 75 74 20 6f 66 20 4d 79 53 51 4c 2b 2b 20 77  out of MySQL++ w
2380: 6f 6e 27 74 20 62 75 69 6c 64 2c 0a 62 65 63 61  on't build,.beca
2390: 75 73 65 20 74 68 65 73 65 20 66 69 6c 65 73 20  use these files 
23a0: 77 69 74 68 20 74 68 65 20 76 65 72 73 69 6f 6e  with the version
23b0: 20 6e 75 6d 62 65 72 73 20 69 6e 20 74 68 65 6d   numbers in them
23c0: 20 77 6f 6e 27 74 20 62 65 20 67 65 6e 65 72 61   won't be genera
23d0: 74 65 64 2e 0a 0a 0a 23 23 23 20 4f 70 74 69 6f  ted....### Optio
23e0: 6e 20 31 3a 20 43 6f 70 79 20 74 68 65 20 67 65  n 1: Copy the ge
23f0: 6e 65 72 61 74 65 64 20 66 69 6c 65 73 20 6f 76  nerated files ov
2400: 65 72 20 66 72 6f 6d 20 61 20 72 65 6c 65 61 73  er from a releas
2410: 65 64 20 76 65 72 73 69 6f 6e 0a 0a 4f 6e 6c 79  ed version..Only
2420: 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 20 67 65   one of these ge
2430: 6e 65 72 61 74 65 64 20 66 69 6c 65 73 20 69 73  nerated files is
2440: 20 61 62 73 6f 6c 75 74 65 6c 79 20 63 72 69 74   absolutely crit
2450: 69 63 61 6c 20 74 6f 20 61 6c 6c 6f 77 69 6e 67  ical to allowing
2460: 0a 4d 79 53 51 4c 2b 2b 20 74 6f 20 62 75 69 6c  .MySQL++ to buil
2470: 64 3a 20 60 6c 69 62 2f 6d 79 73 71 6c 2b 2b 2e  d: `lib/mysql++.
2480: 68 60 2e 20 53 6f 2c 20 74 68 65 20 73 69 6d 70  h`. So, the simp
2490: 6c 65 73 74 20 6f 70 74 69 6f 6e 20 79 6f 75 20  lest option you 
24a0: 68 61 76 65 20 74 6f 0a 62 6f 6f 74 73 74 72 61  have to.bootstra
24b0: 70 20 4d 79 53 51 4c 2b 2b 20 65 6e 74 69 72 65  p MySQL++ entire
24c0: 6c 79 20 6f 6e 20 57 69 6e 64 6f 77 73 20 69 73  ly on Windows is
24d0: 20 74 6f 20 63 6f 70 79 20 60 6c 69 62 2f 6d 79   to copy `lib/my
24e0: 73 71 6c 2b 2b 2e 68 60 20 6f 76 65 72 0a 66 72  sql++.h` over.fr
24f0: 6f 6d 20 61 20 72 65 6c 65 61 73 65 64 20 76 65  om a released ve
2500: 72 73 69 6f 6e 20 6f 66 20 4d 79 53 51 4c 2b 2b  rsion of MySQL++
2510: 2e 20 57 68 69 6c 65 20 79 6f 75 27 72 65 20 64  . While you're d
2520: 6f 69 6e 67 20 74 68 61 74 2c 20 79 6f 75 20 6d  oing that, you m
2530: 69 67 68 74 0a 63 6f 70 79 20 6f 76 65 72 20 74  ight.copy over t
2540: 68 65 20 6f 74 68 65 72 20 73 75 63 68 20 67 65  he other such ge
2550: 6e 65 72 61 74 65 64 20 66 69 6c 65 73 3a 0a 0a  nerated files:..
2560: 20 20 20 20 69 6e 73 74 61 6c 6c 2e 68 74 61 0a      install.hta.
2570: 20 20 20 20 6d 79 73 71 6c 2b 2b 2e 73 70 65 63      mysql++.spec
2580: 0a 20 20 20 20 64 6f 63 2f 75 73 65 72 6d 61 6e  .    doc/userman
2590: 2f 75 73 65 72 6d 61 6e 2e 64 62 78 0a 20 20 20  /userman.dbx.   
25a0: 20 6c 69 62 2f 44 6f 78 79 66 69 6c 65 0a 0a 48   lib/Doxyfile..H
25b0: 61 76 69 6e 67 20 64 6f 6e 65 20 74 68 61 74 2c  aving done that,
25c0: 20 79 6f 75 20 63 61 6e 20 63 6f 6d 70 6c 65 74   you can complet
25d0: 65 20 74 68 65 20 62 6f 6f 74 73 74 72 61 70 70  e the bootstrapp
25e0: 69 6e 67 20 70 72 6f 63 65 73 73 20 62 79 20 72  ing process by r
25f0: 75 6e 6e 69 6e 67 0a 60 62 6f 6f 74 73 74 72 61  unning.`bootstra
2600: 70 2e 62 61 74 60 2e 20 49 74 20 68 61 73 20 74  p.bat`. It has t
2610: 68 65 20 73 61 6d 65 20 70 75 72 70 6f 73 65 20  he same purpose 
2620: 61 73 20 74 68 65 20 42 6f 75 72 6e 65 20 73 68  as the Bourne sh
2630: 65 6c 6c 20 73 63 72 69 70 74 0a 64 65 73 63 72  ell script.descr
2640: 69 62 65 64 20 61 62 6f 76 65 2c 20 62 75 74 20  ibed above, but 
2650: 6d 75 63 68 20 73 69 6d 70 6c 65 72 2e 20 49 74  much simpler. It
2660: 20 68 61 73 20 6e 6f 6e 65 20 6f 66 20 74 68 65   has none of the
2670: 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 0a 6f 70   command line.op
2680: 74 69 6f 6e 73 20 64 65 73 63 72 69 62 65 64 20  tions described 
2690: 61 62 6f 76 65 2c 20 66 6f 72 20 6f 6e 65 20 74  above, for one t
26a0: 68 69 6e 67 2e 0a 0a 54 68 65 20 6d 61 69 6e 20  hing...The main 
26b0: 64 6f 77 6e 73 69 64 65 20 6f 66 20 64 6f 69 6e  downside of doin
26c0: 67 20 69 74 20 74 68 69 73 20 77 61 79 20 69 73  g it this way is
26d0: 20 74 68 61 74 20 79 6f 75 72 20 63 68 61 6e 67   that your chang
26e0: 65 64 20 76 65 72 73 69 6f 6e 20 77 69 6c 6c 0a  ed version will.
26f0: 68 61 76 65 20 74 68 65 20 73 61 6d 65 20 76 65  have the same ve
2700: 72 73 69 6f 6e 20 6e 75 6d 62 65 72 20 61 73 20  rsion number as 
2710: 74 68 65 20 72 65 6c 65 61 73 65 20 6f 66 20 4d  the release of M
2720: 79 53 51 4c 2b 2b 20 79 6f 75 20 63 6f 70 69 65  ySQL++ you copie
2730: 64 20 74 68 65 0a 66 69 6c 65 73 20 66 72 6f 6d  d the.files from
2740: 2c 20 75 6e 6c 65 73 73 20 79 6f 75 20 67 6f 20  , unless you go 
2750: 69 6e 74 6f 20 65 61 63 68 20 66 69 6c 65 20 61  into each file a
2760: 6e 64 20 63 68 61 6e 67 65 20 74 68 65 20 76 65  nd change the ve
2770: 72 73 69 6f 6e 20 6e 75 6d 62 65 72 73 2e 0a 0a  rsion numbers...
2780: 0a 23 23 23 20 4f 70 74 69 6f 6e 20 32 3a 20 43  .### Option 2: C
2790: 79 67 77 69 6e 0a 0a 49 66 20 79 6f 75 27 64 20  ygwin..If you'd 
27a0: 6c 69 6b 65 20 74 6f 20 68 61 63 6b 20 6f 6e 20  like to hack on 
27b0: 4d 79 53 51 4c 2b 2b 20 65 6e 74 69 72 65 6c 79  MySQL++ entirely
27c0: 20 6f 6e 20 57 69 6e 64 6f 77 73 20 61 6e 64 20   on Windows and 
27d0: 68 61 76 65 20 61 6c 6c 20 74 68 65 0a 62 75 69  have all the.bui
27e0: 6c 64 20 66 72 65 65 64 6f 6d 73 20 65 6e 6a 6f  ld freedoms enjo
27f0: 79 65 64 20 62 79 20 74 68 6f 73 65 20 77 6f 72  yed by those wor
2800: 6b 69 6e 67 20 6f 6e 20 55 6e 69 78 79 20 70 6c  king on Unixy pl
2810: 61 74 66 6f 72 6d 73 2c 20 74 68 65 20 73 69 6d  atforms, the sim
2820: 70 6c 65 73 74 0a 73 6f 6c 75 74 69 6f 6e 20 69  plest.solution i
2830: 73 20 70 72 6f 62 61 62 6c 79 20 74 6f 20 5b 69  s probably to [i
2840: 6e 73 74 61 6c 6c 20 43 79 67 77 69 6e 5d 5b 63  nstall Cygwin][c
2850: 79 67 36 34 5d 2e 20 28 36 34 2d 62 69 74 2e 20  yg64]. (64-bit. 
2860: 41 20 5b 33 32 2d 62 69 74 0a 69 6e 73 74 61 6c  A [32-bit.instal
2870: 6c 65 72 5d 5b 63 79 67 33 32 5d 20 69 73 20 61  ler][cyg32] is a
2880: 6c 73 6f 20 61 76 61 69 6c 61 62 6c 65 2e 29 0a  lso available.).
2890: 0a 57 68 65 6e 20 79 6f 75 20 72 75 6e 20 69 74  .When you run it
28a0: 2c 20 69 74 20 77 69 6c 6c 20 77 61 6c 6b 20 79  , it will walk y
28b0: 6f 75 20 74 68 72 6f 75 67 68 20 74 68 65 20 73  ou through the s
28c0: 74 65 70 73 20 74 6f 20 69 6e 73 74 61 6c 6c 20  teps to install 
28d0: 43 79 67 77 69 6e 2e 0a 41 75 74 6f 63 6f 6e 66  Cygwin..Autoconf
28e0: 20 61 6e 64 20 50 65 72 6c 20 35 20 61 72 65 6e   and Perl 5 aren
28f0: 27 74 20 69 6e 73 74 61 6c 6c 65 64 20 69 6e 20  't installed in 
2900: 43 79 67 77 69 6e 20 62 79 20 64 65 66 61 75 6c  Cygwin by defaul
2910: 74 2c 20 73 6f 20 77 68 65 6e 20 79 6f 75 0a 67  t, so when you.g
2920: 65 74 20 74 6f 20 74 68 65 20 70 61 63 6b 61 67  et to the packag
2930: 65 73 20 6c 69 73 74 2c 20 62 65 20 73 75 72 65  es list, be sure
2940: 20 74 6f 20 73 65 6c 65 63 74 20 74 68 65 6d 2e   to select them.
2950: 20 41 75 74 6f 63 6f 6e 66 20 69 73 20 69 6e 20   Autoconf is in 
2960: 74 68 65 0a 44 65 76 65 6c 20 63 61 74 65 67 6f  the.Devel catego
2970: 72 79 2c 20 61 6e 64 20 50 65 72 6c 20 35 20 69  ry, and Perl 5 i
2980: 6e 20 74 68 65 20 49 6e 74 65 72 70 72 65 74 65  n the Interprete
2990: 72 73 20 63 61 74 65 67 6f 72 79 2e 0a 0a 59 6f  rs category...Yo
29a0: 75 20 77 69 6c 6c 20 61 6c 73 6f 20 6e 65 65 64  u will also need
29b0: 20 74 6f 20 69 6e 73 74 61 6c 6c 20 74 68 65 20   to install the 
29c0: 6e 61 74 69 76 65 20 57 69 6e 64 6f 77 73 20 62  native Windows b
29d0: 69 6e 61 72 79 20 76 65 72 73 69 6f 6e 20 6f 66  inary version of
29e0: 0a 5b 42 61 6b 65 66 69 6c 65 5d 28 68 74 74 70  .[Bakefile](http
29f0: 3a 2f 2f 62 61 6b 65 66 69 6c 65 2e 6f 72 67 2f  ://bakefile.org/
2a00: 29 2e 20 20 44 6f 6e 27 74 20 67 65 74 20 74 68  ).  Don't get th
2a10: 65 20 73 6f 75 72 63 65 20 76 65 72 73 69 6f 6e  e source version
2a20: 20 61 6e 64 20 74 72 79 0a 74 6f 20 62 75 69 6c   and try.to buil
2a30: 64 20 42 61 6b 65 66 69 6c 65 20 75 6e 64 65 72  d Bakefile under
2a40: 20 43 79 67 77 69 6e 3b 20 69 74 20 77 6f 6e 27   Cygwin; it won'
2a50: 74 20 77 6f 72 6b 2e 20 54 68 65 20 57 69 6e 64  t work. The Wind
2a60: 6f 77 73 20 62 69 6e 61 72 79 0a 76 65 72 73 69  ows binary.versi
2a70: 6f 6e 20 6f 66 20 42 61 6b 65 66 69 6c 65 20 69  on of Bakefile i
2a80: 6e 63 6c 75 64 65 73 20 61 6e 20 65 6d 62 65 64  ncludes an embed
2a90: 64 65 64 20 76 65 72 73 69 6f 6e 20 6f 66 20 50  ded version of P
2aa0: 79 74 68 6f 6e 2c 20 73 6f 20 79 6f 75 20 77 6f  ython, so you wo
2ab0: 6e 27 74 0a 6e 65 65 64 20 74 6f 20 69 6e 73 74  n't.need to inst
2ac0: 61 6c 6c 20 43 79 67 77 69 6e 27 73 20 50 79 74  all Cygwin's Pyt
2ad0: 68 6f 6e 2e 0a 0a 48 61 76 69 6e 67 20 64 6f 6e  hon...Having don
2ae0: 65 20 61 6c 6c 20 74 68 69 73 2c 20 79 6f 75 20  e all this, you 
2af0: 63 61 6e 20 66 6f 6c 6c 6f 77 20 74 68 65 20 55  can follow the U
2b00: 6e 69 78 20 62 6f 6f 74 73 74 72 61 70 70 69 6e  nix bootstrappin
2b10: 67 0a 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 69  g.instructions i
2b20: 6e 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 73  n the previous s
2b30: 65 63 74 69 6f 6e 2e 0a 0a 5b 63 79 67 33 32 5d  ection...[cyg32]
2b40: 3a 20 68 74 74 70 3a 2f 2f 63 79 67 77 69 6e 2e  : http://cygwin.
2b50: 63 6f 6d 2f 73 65 74 75 70 2d 78 38 36 2e 65 78  com/setup-x86.ex
2b60: 65 0a 5b 63 79 67 36 34 5d 3a 20 68 74 74 70 3a  e.[cyg64]: http:
2b70: 2f 2f 63 79 67 77 69 6e 2e 63 6f 6d 2f 73 65 74  //cygwin.com/set
2b80: 75 70 2d 78 38 36 5f 36 34 2e 65 78 65 0a 0a 0a  up-x86_64.exe...
2b90: 23 23 23 20 4f 70 74 69 6f 6e 20 33 3a 20 5b 22  ### Option 3: ["
2ba0: 48 65 72 65 27 73 20 61 20 6e 69 63 6b 65 6c 2c  Here's a nickel,
2bb0: 20 6b 69 64 2c 20 67 65 74 20 79 6f 75 72 73 65   kid, get yourse
2bc0: 6c 66 20 61 20 62 65 74 74 65 72 20 63 6f 6d 70  lf a better comp
2bd0: 75 74 65 72 2e 22 5d 5b 64 63 5d 0a 0a 46 69 6e  uter."][dc]..Fin
2be0: 61 6c 6c 79 2c 20 79 6f 75 20 6d 69 67 68 74 20  ally, you might 
2bf0: 68 61 76 65 20 61 63 63 65 73 73 20 74 6f 20 61  have access to a
2c00: 20 55 6e 69 78 79 20 73 79 73 74 65 6d 2c 20 6f   Unixy system, o
2c10: 72 20 74 68 65 20 61 62 69 6c 69 74 79 20 74 6f  r the ability to
2c20: 20 73 65 74 0a 6f 6e 65 20 75 70 2e 20 59 6f 75   set.one up. You
2c30: 20 64 6f 6e 27 74 20 65 76 65 6e 20 6e 65 65 64   don't even need
2c40: 20 61 20 73 65 70 61 72 61 74 65 20 70 68 79 73   a separate phys
2c50: 69 63 61 6c 20 63 6f 6d 70 75 74 65 72 2c 20 6e  ical computer, n
2c60: 6f 77 20 74 68 61 74 0a 76 69 72 74 75 61 6c 20  ow that.virtual 
2c70: 6d 61 63 68 69 6e 65 20 74 65 63 68 6f 6c 6f 67  machine techolog
2c80: 79 20 69 73 20 66 72 65 65 2e 0a 0a 47 69 76 65  y is free...Give
2c90: 6e 20 73 75 63 68 20 61 20 6d 61 63 68 69 6e 65  n such a machine
2ca0: 2c 20 79 6f 75 27 64 20 64 6f 20 74 68 65 20 46  , you'd do the F
2cb0: 6f 73 73 69 6c 20 63 68 65 63 6b 6f 75 74 20 6f  ossil checkout o
2cc0: 66 20 4d 79 53 51 4c 2b 2b 20 6f 6e 20 74 68 61  f MySQL++ on tha
2cd0: 74 0a 6d 61 63 68 69 6e 65 2c 20 74 68 65 6e 20  t.machine, then 
2ce0: 62 6f 6f 74 73 74 72 61 70 20 69 74 20 74 68 65  bootstrap it the
2cf0: 72 65 20 75 73 69 6e 67 20 74 68 65 20 69 6e 73  re using the ins
2d00: 74 72 75 63 74 69 6f 6e 73 20 69 6e 20 74 68 65  tructions in the
2d10: 20 70 72 65 76 69 6f 75 73 0a 73 65 63 74 69 6f   previous.sectio
2d20: 6e 2c 20 61 6e 64 20 63 6f 70 79 20 74 68 65 20  n, and copy the 
2d30: 67 65 6e 65 72 61 74 65 64 20 66 69 6c 65 73 20  generated files 
2d40: 62 61 63 6b 20 74 6f 20 74 68 65 20 57 69 6e 64  back to the Wind
2d50: 6f 77 73 20 62 6f 78 2e 0a 0a 5b 64 63 5d 3a 20  ows box...[dc]: 
2d60: 68 74 74 70 3a 2f 2f 74 6f 6d 61 79 6b 6f 2e 63  http://tomayko.c
2d70: 6f 6d 2f 77 72 69 74 69 6e 67 73 2f 74 68 61 74  om/writings/that
2d80: 2d 64 69 6c 62 65 72 74 2d 63 61 72 74 6f 6f 6e  -dilbert-cartoon
2d90: 0a 0a 0a 23 23 20 4f 6e 20 4d 61 6e 69 70 75 6c  ...## On Manipul
2da0: 61 74 69 6e 67 20 74 68 65 20 42 75 69 6c 64 20  ating the Build 
2db0: 53 79 73 74 65 6d 20 53 6f 75 72 63 65 20 46 69  System Source Fi
2dc0: 6c 65 73 0a 0a 4f 6e 65 20 6f 66 20 74 68 65 20  les..One of the 
2dd0: 74 68 69 6e 67 73 20 74 68 65 20 62 6f 6f 74 73  things the boots
2de0: 74 72 61 70 70 69 6e 67 20 73 79 73 74 65 6d 20  trapping system 
2df0: 64 65 73 63 72 69 62 65 64 20 61 62 6f 76 65 0a  described above.
2e00: 64 6f 65 73 20 69 73 20 70 72 6f 64 75 63 65 73  does is produces
2e10: 20 76 61 72 69 6f 75 73 20 74 79 70 65 73 20 6f   various types o
2e20: 66 20 70 72 6f 6a 65 63 74 20 61 6e 64 20 6d 61  f project and ma
2e30: 6b 65 20 66 69 6c 65 73 20 66 72 6f 6d 20 61 0a  ke files from a.
2e40: 73 6d 61 6c 6c 20 6e 75 6d 62 65 72 20 6f 66 20  small number of 
2e50: 73 6f 75 72 63 65 20 66 69 6c 65 73 2e 20 54 68  source files. Th
2e60: 69 73 20 73 79 73 74 65 6d 20 6c 65 74 73 20 75  is system lets u
2e70: 73 20 73 75 70 70 6f 72 74 20 6d 61 6e 79 0a 70  s support many.p
2e80: 6c 61 74 66 6f 72 6d 73 20 77 69 74 68 6f 75 74  latforms without
2e90: 20 68 61 76 69 6e 67 20 74 6f 20 6d 61 69 6e 74   having to maint
2ea0: 61 69 6e 20 73 65 70 61 72 61 74 65 20 62 75 69  ain separate bui
2eb0: 6c 64 20 73 79 73 74 65 6d 20 66 69 6c 65 73 0a  ld system files.
2ec0: 66 6f 72 20 65 61 63 68 20 70 6c 61 74 66 6f 72  for each platfor
2ed0: 6d 2e 0a 0a 5b 42 61 6b 65 66 69 6c 65 5d 28 68  m...[Bakefile](h
2ee0: 74 74 70 3a 2f 2f 62 61 6b 65 66 69 6c 65 2e 6f  ttp://bakefile.o
2ef0: 72 67 2f 29 20 70 72 6f 64 75 63 65 73 20 6d 6f  rg/) produces mo
2f00: 73 74 20 6f 66 20 74 68 65 73 65 20 70 72 6f 6a  st of these proj
2f10: 65 63 74 20 61 6e 64 20 6d 61 6b 65 0a 66 69 6c  ect and make.fil
2f20: 65 73 20 66 72 6f 6d 20 61 20 73 69 6e 67 6c 65  es from a single
2f30: 20 73 6f 75 72 63 65 20 66 69 6c 65 20 63 61 6c   source file cal
2f40: 6c 65 64 20 5b 60 6d 79 73 71 6c 2b 2b 2e 62 6b  led [`mysql++.bk
2f50: 6c 60 5d 5b 62 6b 6c 5d 2e 0a 0a 45 78 63 65 70  l`][bkl]...Excep
2f60: 74 20 66 6f 72 20 73 6d 61 6c 6c 20 6c 6f 63 61  t for small loca
2f70: 6c 20 63 68 61 6e 67 65 73 2c 20 69 74 27 73 20  l changes, it's 
2f80: 62 65 73 74 20 74 6f 20 63 68 61 6e 67 65 20 60  best to change `
2f90: 6d 79 73 71 6c 2b 2b 2e 62 6b 6c 60 20 61 6e 64  mysql++.bkl` and
2fa0: 0a 22 72 65 2d 62 61 6b 65 22 20 74 68 65 20 70  ."re-bake" the p
2fb0: 72 6f 6a 65 63 74 20 61 6e 64 20 6d 61 6b 65 20  roject and make 
2fc0: 66 69 6c 65 73 20 72 61 74 68 65 72 20 74 68 61  files rather tha
2fd0: 6e 20 63 68 61 6e 67 65 20 74 68 6f 73 65 20 66  n change those f
2fe0: 69 6c 65 73 0a 64 69 72 65 63 74 6c 79 2e 20 59  iles.directly. Y
2ff0: 6f 75 20 63 61 6e 20 64 6f 20 74 68 69 73 20 77  ou can do this w
3000: 69 74 68 20 74 68 65 20 62 6f 6f 74 73 74 72 61  ith the bootstra
3010: 70 20 73 63 72 69 70 74 73 20 63 6f 76 65 72 65  p scripts covere
3020: 64 20 61 62 6f 76 65 2e 20 4f 6e 0a 57 69 6e 64  d above. On.Wind
3030: 6f 77 73 2c 20 69 66 20 61 6c 6c 20 79 6f 75 27  ows, if all you'
3040: 76 65 20 63 68 61 6e 67 65 64 20 69 73 20 60 6d  ve changed is `m
3050: 79 73 71 6c 2b 2b 2e 62 6b 6c 60 2c 20 79 6f 75  ysql++.bkl`, you
3060: 20 63 61 6e 20 75 73 65 0a 60 72 65 62 61 6b 65   can use.`rebake
3070: 2e 62 61 74 60 20 69 6e 73 74 65 61 64 2c 20 77  .bat` instead, w
3080: 68 69 63 68 20 64 6f 65 73 6e 27 74 20 74 72 79  hich doesn't try
3090: 20 74 6f 20 64 6f 20 61 73 20 6d 75 63 68 20 61   to do as much a
30a0: 73 0a 60 62 6f 6f 74 73 74 72 61 70 2e 62 61 74  s.`bootstrap.bat
30b0: 60 2e 0a 0a 42 61 6b 65 66 69 6c 65 20 70 72 6f  `...Bakefile pro
30c0: 64 75 63 65 73 20 66 69 6e 69 73 68 65 64 20 70  duces finished p
30d0: 72 6f 6a 65 63 74 20 66 69 6c 65 73 20 66 6f 72  roject files for
30e0: 20 56 69 73 75 61 6c 20 43 2b 2b 20 61 6e 64 20   Visual C++ and 
30f0: 58 63 6f 64 65 20 61 6e 64 0a 66 69 6e 69 73 68  Xcode and.finish
3100: 65 64 20 60 4d 61 6b 65 66 69 6c 65 73 60 20 66  ed `Makefiles` f
3110: 6f 72 20 4d 69 6e 47 57 2e 20 49 74 20 61 6c 73  or MinGW. It als
3120: 6f 20 70 72 6f 64 75 63 65 73 20 60 4d 61 6b 65  o produces `Make
3130: 66 69 6c 65 2e 69 6e 60 2c 20 77 68 69 63 68 20  file.in`, which 
3140: 69 73 0a 69 6e 70 75 74 20 74 6f 20 47 4e 55 20  is.input to GNU 
3150: 41 75 74 6f 63 6f 6e 66 20 61 6c 6f 6e 67 20 77  Autoconf along w
3160: 69 74 68 20 63 6f 6e 66 69 67 75 72 65 2e 61 63  ith configure.ac
3170: 20 61 6e 64 20 60 63 6f 6e 66 69 67 2f 2a 60 2e   and `config/*`.
3180: 20 59 6f 75 20 6d 61 79 0a 6e 65 65 64 20 74 6f   You may.need to
3190: 20 63 68 61 6e 67 65 20 74 68 65 73 65 20 6c 61   change these la
31a0: 74 74 65 72 20 66 69 6c 65 73 20 69 6e 20 61 64  tter files in ad
31b0: 64 69 74 69 6f 6e 20 74 6f 20 6f 72 20 69 6e 73  dition to or ins
31c0: 74 65 61 64 20 6f 66 0a 60 6d 79 73 71 6c 2b 2b  tead of.`mysql++
31d0: 2e 62 6b 6c 60 20 74 6f 20 67 65 74 20 74 68 65  .bkl` to get the
31e0: 20 65 66 66 65 63 74 20 79 6f 75 20 77 61 6e 74   effect you want
31f0: 2e 20 20 52 75 6e 6e 69 6e 67 20 62 6f 6f 74 73  .  Running boots
3200: 74 72 61 70 0a 69 6e 63 6f 72 70 6f 72 61 74 65  trap.incorporate
3210: 73 20 63 68 61 6e 67 65 73 20 74 6f 20 61 6c 6c  s changes to all
3220: 20 6f 66 20 74 68 65 73 65 20 66 69 6c 65 73 20   of these files 
3230: 69 6e 20 74 68 65 20 47 4e 55 20 41 75 74 6f 63  in the GNU Autoc
3240: 6f 6e 66 20 6f 75 74 70 75 74 2e 0a 0a 57 68 69  onf output...Whi
3250: 6c 65 20 42 61 6b 65 66 69 6c 65 27 73 20 64 6f  le Bakefile's do
3260: 63 75 6d 65 6e 74 61 74 69 6f 6e 20 69 73 6e 27  cumentation isn'
3270: 74 20 61 73 20 63 6f 6d 70 72 65 68 65 6e 73 69  t as comprehensi
3280: 76 65 20 61 73 20 69 74 0a 6f 75 67 68 74 20 74  ve as it.ought t
3290: 6f 20 62 65 2c 20 79 6f 75 20 63 61 6e 20 61 74  o be, you can at
32a0: 20 6c 65 61 73 74 20 63 6f 75 6e 74 20 6f 6e 20   least count on 
32b0: 69 74 20 74 6f 20 6c 69 73 74 20 61 6c 6c 20 6f  it to list all o
32c0: 66 20 74 68 65 0a 61 76 61 69 6c 61 62 6c 65 20  f the.available 
32d0: 66 65 61 74 75 72 65 73 2e 20 53 6f 2c 20 69 66  features. So, if
32e0: 20 79 6f 75 20 63 61 6e 27 74 20 73 65 65 20 61   you can't see a
32f0: 20 77 61 79 20 74 6f 20 6d 61 6b 65 20 42 61 6b   way to make Bak
3300: 65 66 69 6c 65 0a 64 6f 20 73 6f 6d 65 74 68 69  efile.do somethi
3310: 6e 67 2c 20 69 74 27 73 20 6c 69 6b 65 6c 79 20  ng, it's likely 
3320: 69 74 20 6a 75 73 74 20 63 61 6e 27 74 20 64 6f  it just can't do
3330: 20 69 74 2e 20 42 61 6b 65 66 69 6c 65 20 69 73   it. Bakefile is
3340: 20 61 0a 68 69 67 68 2d 6c 65 76 65 6c 20 61 62   a.high-level ab
3350: 73 74 72 61 63 74 69 6f 6e 20 6f 66 20 62 75 69  straction of bui
3360: 6c 64 20 73 79 73 74 65 6d 73 20 69 6e 20 67 65  ld systems in ge
3370: 6e 65 72 61 6c 2c 20 73 6f 20 69 74 27 6c 6c 20  neral, so it'll 
3380: 6e 65 76 65 72 0a 73 75 70 70 6f 72 74 20 61 6c  never.support al
3390: 6c 20 74 68 65 20 70 61 72 74 69 63 75 6c 61 72  l the particular
33a0: 73 20 6f 66 20 65 76 65 72 79 20 6f 64 64 20 62  s of every odd b
33b0: 75 69 6c 64 20 73 79 73 74 65 6d 20 6f 75 74 20  uild system out 
33c0: 74 68 65 72 65 2e 0a 0a 5b 62 6b 6c 5d 3a 20 68  there...[bkl]: h
33d0: 74 74 70 73 3a 2f 2f 74 61 6e 67 65 6e 74 73 6f  ttps://tangentso
33e0: 66 74 2e 63 6f 6d 2f 6d 79 73 71 6c 70 70 2f 66  ft.com/mysqlpp/f
33f0: 69 6c 65 2f 6d 79 73 71 6c 25 32 42 25 32 42 2e  ile/mysql%2B%2B.
3400: 62 6b 6c 0a 0a 0a 23 23 20 53 75 62 6d 69 74 74  bkl...## Submitt
3410: 69 6e 67 20 50 61 74 63 68 65 73 0a 0a 49 66 20  ing Patches..If 
3420: 79 6f 75 20 77 69 73 68 20 74 6f 20 73 75 62 6d  you wish to subm
3430: 69 74 20 61 20 70 61 74 63 68 20 74 6f 20 74 68  it a patch to th
3440: 65 20 6c 69 62 72 61 72 79 2c 20 70 6c 65 61 73  e library, pleas
3450: 65 20 73 65 6e 64 20 69 74 20 74 6f 20 74 68 65  e send it to the
3460: 0a 5b 4d 79 53 51 4c 2b 2b 20 6d 61 69 6c 69 6e  .[MySQL++ mailin
3470: 67 20 6c 69 73 74 5d 5b 6d 6c 5d 2e 20 20 57 65  g list][ml].  We
3480: 20 77 61 6e 74 20 70 61 74 63 68 65 73 20 69 6e   want patches in
3490: 20 75 6e 69 66 69 65 64 20 64 69 66 66 20 66 6f   unified diff fo
34a0: 72 6d 61 74 2e 0a 0a 57 65 20 77 69 6c 6c 20 61  rmat...We will a
34b0: 6c 73 6f 20 61 63 63 65 70 74 20 74 72 69 76 69  lso accept trivi
34c0: 61 6c 20 70 61 74 63 68 65 73 20 6e 6f 74 20 6e  al patches not n
34d0: 65 65 64 69 6e 67 20 64 69 73 63 75 73 73 69 6f  eeding discussio
34e0: 6e 20 61 73 20 74 65 78 74 0a 69 6e 20 61 20 46  n as text.in a F
34f0: 6f 73 73 69 6c 20 74 69 63 6b 65 74 2e 0a 0a 54  ossil ticket...T
3500: 68 65 20 65 61 73 69 65 73 74 20 77 61 79 20 74  he easiest way t
3510: 6f 20 67 65 74 20 61 20 75 6e 69 66 69 65 64 20  o get a unified 
3520: 64 69 66 66 20 69 73 20 74 6f 20 63 68 65 63 6b  diff is to check
3530: 20 6f 75 74 20 61 20 63 6f 70 79 20 6f 66 20 74   out a copy of t
3540: 68 65 0a 63 75 72 72 65 6e 74 20 4d 79 53 51 4c  he.current MySQL
3550: 2b 2b 20 74 72 65 65 20 61 73 20 64 65 73 63 72  ++ tree as descr
3560: 69 62 65 64 20 61 62 6f 76 65 2e 20 54 68 65 6e  ibed above. Then
3570: 20 6d 61 6b 65 20 79 6f 75 72 20 63 68 61 6e 67   make your chang
3580: 65 2c 20 60 63 64 60 0a 74 6f 20 74 68 65 20 4d  e, `cd`.to the M
3590: 79 53 51 4c 2b 2b 20 72 6f 6f 74 20 64 69 72 65  ySQL++ root dire
35a0: 63 74 6f 72 79 2c 20 61 6e 64 20 61 73 6b 20 46  ctory, and ask F
35b0: 6f 73 73 69 6c 20 74 6f 20 67 65 6e 65 72 61 74  ossil to generat
35c0: 65 20 74 68 65 20 70 61 74 63 68 0a 66 6f 72 20  e the patch.for 
35d0: 79 6f 75 3a 0a 0a 20 20 20 20 24 20 66 6f 73 73  you:..    $ foss
35e0: 69 6c 20 64 69 66 66 20 3e 20 6d 79 63 68 61 6e  il diff > mychan
35f0: 67 65 2e 70 61 74 63 68 0a 0a 49 66 20 79 6f 75  ge.patch..If you
3600: 72 20 70 61 74 63 68 20 61 64 64 73 20 6e 65 77  r patch adds new
3610: 20 66 69 6c 65 73 2c 20 6d 6f 76 65 73 20 66 69   files, moves fi
3620: 6c 65 73 2c 20 6f 72 20 6e 65 65 64 73 20 74 6f  les, or needs to
3630: 20 62 65 20 75 6e 64 65 72 73 74 6f 6f 64 20 69   be understood i
3640: 6e 0a 74 65 72 6d 73 20 6f 66 20 6d 75 6c 74 69  n.terms of multi
3650: 70 6c 65 20 63 68 65 63 6b 69 6e 73 2c 20 69 74  ple checkins, it
3660: 27 73 20 62 65 73 74 20 74 6f 20 64 6f 20 74 68  's best to do th
3670: 61 74 20 77 6f 72 6b 20 6f 6e 20 61 20 5b 70 72  at work on a [pr
3680: 69 76 61 74 65 0a 6c 6f 63 61 6c 20 62 72 61 6e  ivate.local bran
3690: 63 68 5d 5b 70 62 72 5d 2c 20 74 68 65 6e 20 73  ch][pbr], then s
36a0: 65 6e 64 20 61 20 5b 62 75 6e 64 6c 65 5d 5b 66  end a [bundle][f
36b0: 62 5d 20 69 6e 73 74 65 61 64 20 6f 66 20 61 20  b] instead of a 
36c0: 70 61 74 63 68 2e 0a 0a 49 66 20 79 6f 75 27 76  patch...If you'v
36d0: 65 20 73 65 6e 74 20 70 61 74 63 68 65 73 20 74  e sent patches t
36e0: 6f 20 4d 79 53 51 4c 2b 2b 20 62 65 66 6f 72 65  o MySQL++ before
36f0: 20 61 6e 64 20 64 6f 6e 27 74 20 68 61 76 65 20   and don't have 
3700: 61 20 46 6f 73 73 69 6c 0a 64 65 76 65 6c 6f 70  a Fossil.develop
3710: 65 72 20 6c 6f 67 69 6e 2c 20 61 6e 6f 74 68 65  er login, anothe
3720: 72 20 61 6c 74 65 72 6e 61 74 69 76 65 20 69 73  r alternative is
3730: 20 74 6f 20 61 73 6b 20 66 6f 72 20 61 20 6c 6f   to ask for a lo
3740: 67 69 6e 20 62 65 66 6f 72 65 20 79 6f 75 0a 62  gin before you.b
3750: 65 67 69 6e 20 77 6f 72 6b 20 73 6f 20 74 68 61  egin work so tha
3760: 74 20 79 6f 75 72 20 63 68 61 6e 67 65 73 20 61  t your changes a
3770: 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  re automatically
3780: 20 73 79 6e 63 27 64 20 74 6f 20 74 68 65 20 6d   sync'd to the m
3790: 61 69 6e 0a 46 6f 73 73 69 6c 20 72 65 70 6f 73  ain.Fossil repos
37a0: 69 74 6f 72 79 20 61 73 20 79 6f 75 20 77 6f 72  itory as you wor
37b0: 6b 2c 20 73 6f 20 79 6f 75 20 64 6f 6e 27 74 20  k, so you don't 
37c0: 68 61 76 65 20 74 6f 20 73 65 6e 64 20 62 75 6e  have to send bun
37d0: 64 6c 65 73 20 6f 72 0a 70 61 74 63 68 20 66 69  dles or.patch fi
37e0: 6c 65 73 2e 20 57 65 20 67 65 6e 65 72 61 6c 6c  les. We generall
37f0: 79 20 64 6f 6e 27 74 20 72 65 66 75 73 65 20 73  y don't refuse s
3800: 75 63 68 20 72 65 71 75 65 73 74 73 20 69 66 20  uch requests if 
3810: 79 6f 75 27 76 65 20 61 6c 72 65 61 64 79 0a 70  you've already.p
3820: 72 6f 76 65 6e 20 79 6f 75 72 20 61 62 69 6c 69  roven your abili
3830: 74 79 20 74 6f 20 77 6f 72 6b 20 77 65 6c 6c 20  ty to work well 
3840: 77 69 74 68 20 74 68 65 20 4d 79 53 51 4c 2b 2b  with the MySQL++
3850: 20 70 72 6f 6a 65 63 74 2e 0a 0a 49 66 20 79 6f   project...If yo
3860: 75 27 72 65 20 6d 61 6b 69 6e 67 20 61 20 70 61  u're making a pa
3870: 74 63 68 20 61 67 61 69 6e 73 74 20 61 20 4d 79  tch against a My
3880: 53 51 4c 2b 2b 20 64 69 73 74 72 69 62 75 74 69  SQL++ distributi
3890: 6f 6e 20 74 61 72 62 61 6c 6c 2c 20 74 68 65 6e  on tarball, then
38a0: 0a 79 6f 75 20 63 61 6e 20 67 65 6e 65 72 61 74  .you can generat
38b0: 65 20 61 20 70 61 74 63 68 20 74 68 69 73 20 77  e a patch this w
38c0: 61 79 3a 0a 0a 20 20 20 20 24 20 64 69 66 66 20  ay:..    $ diff 
38d0: 2d 72 75 4e 20 6d 79 73 71 6c 2b 2b 2d 6f 6c 64  -ruN mysql++-old
38e0: 64 69 72 20 6d 79 73 71 6c 2b 2b 2d 6e 65 77 64  dir mysql++-newd
38f0: 69 72 20 3e 20 6d 79 63 68 61 6e 67 65 2e 70 61  ir > mychange.pa
3900: 74 63 68 0a 0a 54 68 65 20 60 64 69 66 66 60 20  tch..The `diff` 
3910: 63 6f 6d 6d 61 6e 64 20 69 73 20 70 61 72 74 20  command is part 
3920: 6f 66 20 65 76 65 72 79 20 55 6e 69 78 20 61 6e  of every Unix an
3930: 64 20 4c 69 6e 75 78 20 73 79 73 74 65 6d 2c 20  d Linux system, 
3940: 61 6e 64 20 73 68 6f 75 6c 64 20 62 65 0a 69 6e  and should be.in
3950: 73 74 61 6c 6c 65 64 20 62 79 20 64 65 66 61 75  stalled by defau
3960: 6c 74 2e 20 49 66 20 79 6f 75 27 72 65 20 6f 6e  lt. If you're on
3970: 20 61 20 57 69 6e 64 6f 77 73 20 6d 61 63 68 69   a Windows machi
3980: 6e 65 2c 20 47 4e 55 20 64 69 66 66 20 69 73 20  ne, GNU diff is 
3990: 70 61 72 74 0a 6f 66 20 5b 43 79 67 77 69 6e 5d  part.of [Cygwin]
39a0: 28 68 74 74 70 3a 2f 2f 63 79 67 77 69 6e 2e 63  (http://cygwin.c
39b0: 6f 6d 2f 29 2e 20 46 6f 73 73 69 6c 20 69 73 20  om/). Fossil is 
39c0: 61 6c 73 6f 20 61 76 61 69 6c 61 62 6c 65 20 66  also available f
39d0: 6f 72 20 61 6c 6c 20 6f 66 0a 74 68 65 73 65 20  or all of.these 
39e0: 73 79 73 74 65 6d 73 2e 20 54 68 65 72 65 20 61  systems. There a
39f0: 72 65 20 6e 6f 20 65 78 63 75 73 65 73 20 66 6f  re no excuses fo
3a00: 72 20 6e 6f 74 20 62 65 69 6e 67 20 61 62 6c 65  r not being able
3a10: 20 74 6f 20 6d 61 6b 65 20 75 6e 69 66 69 65 64   to make unified
3a20: 0a 64 69 66 66 73 2e 20 3a 29 0a 0a 5b 66 62 5d  .diffs. :)..[fb]
3a30: 3a 20 20 68 74 74 70 3a 2f 2f 66 6f 73 73 69 6c  :  http://fossil
3a40: 2d 73 63 6d 2e 6f 72 67 2f 69 6e 64 65 78 2e 68  -scm.org/index.h
3a50: 74 6d 6c 2f 68 65 6c 70 3f 63 6d 64 3d 62 75 6e  tml/help?cmd=bun
3a60: 64 6c 65 0a 5b 70 62 72 5d 3a 20 68 74 74 70 73  dle.[pbr]: https
3a70: 3a 2f 2f 74 61 6e 67 65 6e 74 73 6f 66 74 2e 63  ://tangentsoft.c
3a80: 6f 6d 2f 6d 79 73 71 6c 70 70 2f 66 69 6c 65 2f  om/mysqlpp/file/
3a90: 48 41 43 4b 45 52 53 2e 6d 64 23 70 72 69 76 61  HACKERS.md#priva
3aa0: 74 65 0a 0a 0a 23 23 20 54 68 65 20 4d 79 53 51  te...## The MySQ
3ab0: 4c 2b 2b 20 43 6f 64 65 20 53 74 79 6c 65 0a 0a  L++ Code Style..
3ac0: 45 76 65 72 79 20 63 6f 64 65 20 62 61 73 65 20  Every code base 
3ad0: 73 68 6f 75 6c 64 20 68 61 76 65 20 61 20 63 6f  should have a co
3ae0: 6d 6d 6f 6e 20 63 6f 64 65 20 73 74 79 6c 65 2e  mmon code style.
3af0: 20 4c 6f 76 65 20 69 74 20 6f 72 0a 68 61 74 65   Love it or.hate
3b00: 20 69 74 2c 20 68 65 72 65 20 61 72 65 20 4d 79   it, here are My
3b10: 53 51 4c 2b 2b 27 73 20 63 75 72 72 65 6e 74 20  SQL++'s current 
3b20: 63 6f 64 65 20 73 74 79 6c 65 20 72 75 6c 65 73  code style rules
3b30: 3a 0a 0a 0a 23 23 23 20 53 6f 75 72 63 65 20 43  :...### Source C
3b40: 6f 64 65 0a 0a 46 69 6c 65 20 74 79 70 65 73 3a  ode..File types:
3b50: 20 60 61 63 60 2c 20 60 63 70 70 60 2c 20 60 68   `ac`, `cpp`, `h
3b60: 60 2c 20 60 69 6e 60 2c 20 60 6d 34 60 2c 20 60  `, `in`, `m4`, `
3b70: 70 6c 60 0a 0a 2d 20 20 20 54 61 62 73 20 66 6f  pl`..-   Tabs fo
3b80: 72 20 69 6e 64 65 6e 74 73 2c 20 73 69 7a 65 20  r indents, size 
3b90: 34 0a 0a 2d 20 20 20 55 6e 69 78 20 6c 69 6e 65  4..-   Unix line
3ba0: 20 65 6e 64 69 6e 67 73 2e 20 41 6e 79 20 64 65   endings. Any de
3bb0: 63 65 6e 74 20 70 72 6f 67 72 61 6d 6d 65 72 27  cent programmer'
3bc0: 73 20 65 64 69 74 6f 72 20 63 61 6e 20 63 6f 70  s editor can cop
3bd0: 65 20 77 69 74 68 0a 20 20 20 20 74 68 69 73 2c  e with.    this,
3be0: 20 65 76 65 6e 20 6f 6e 20 57 69 6e 64 6f 77 73   even on Windows
3bf0: 2e 0a 0a 2d 20 20 20 43 2f 43 2b 2b 20 72 75 6c  ...-   C/C++ rul
3c00: 65 73 3a 0a 0a 20 20 20 20 2d 20 20 20 42 61 73  es:..    -   Bas
3c10: 65 20 77 68 69 74 65 73 70 61 63 65 20 73 74 79  e whitespace sty
3c20: 6c 65 20 69 73 20 41 54 26 54 69 73 68 3a 20 4b  le is AT&Tish: K
3c30: 26 52 2f 53 74 72 6f 75 73 74 72 75 70 2c 20 70  &R/Stroustrup, p
3c40: 6c 75 73 20 61 20 6c 69 74 74 6c 65 0a 20 20 20  lus a little.   
3c50: 20 20 20 20 20 6c 6f 63 61 6c 20 73 70 69 63 65       local spice
3c60: 2e 20 49 66 20 79 6f 75 20 68 61 76 65 20 74 68  . If you have th
3c70: 65 20 69 6e 64 65 6e 74 28 31 29 20 70 72 6f 67  e indent(1) prog
3c80: 72 61 6d 2c 20 74 68 65 20 63 6f 6d 6d 61 6e 64  ram, the command
3c90: 20 69 73 3a 0a 0a 20 20 20 20 20 20 20 20 20 20   is:..          
3ca0: 20 20 69 6e 64 65 6e 74 20 2d 6b 72 20 2d 6e 63    indent -kr -nc
3cb0: 65 20 2d 63 6c 69 34 20 2d 73 73 20 2d 64 69 31  e -cli4 -ss -di1
3cc0: 20 2d 70 73 6c 20 2d 74 73 34 20 46 49 4c 45 53   -psl -ts4 FILES
3cd0: 2e 2e 2e 0a 0a 20 20 20 20 20 20 20 20 54 68 61  .....        Tha
3ce0: 74 20 69 73 2c 20 64 6f 6e 27 74 20 63 75 64 64  t is, don't cudd
3cf0: 6c 65 20 65 6c 73 65 2c 20 69 6e 64 65 6e 74 20  le else, indent 
3d00: 63 61 73 65 20 73 74 61 74 65 6d 65 6e 74 20 6c  case statement l
3d10: 61 62 65 6c 73 2c 20 73 70 61 63 65 0a 20 20 20  abels, space.   
3d20: 20 20 20 20 20 62 65 66 6f 72 65 20 73 65 6d 69       before semi
3d30: 63 6f 6c 6f 6e 20 77 69 74 68 20 65 6d 70 74 79  colon with empty
3d40: 20 6c 6f 6f 70 20 62 6f 64 79 2c 20 6e 6f 20 65   loop body, no e
3d50: 78 74 72 61 20 73 70 61 63 65 20 62 65 74 77 65  xtra space betwe
3d60: 65 6e 20 61 0a 20 20 20 20 20 20 20 20 76 61 72  en a.        var
3d70: 69 61 62 6c 65 20 74 79 70 65 20 61 6e 64 20 6e  iable type and n
3d80: 61 6d 65 2c 20 72 65 74 75 72 6e 20 76 61 6c 75  ame, return valu
3d90: 65 20 6f 66 20 66 75 6e 63 74 69 6f 6e 20 6f 6e  e of function on
3da0: 20 73 65 70 61 72 61 74 65 0a 20 20 20 20 20 20   separate.      
3db0: 20 20 6c 69 6e 65 20 66 72 6f 6d 20 72 65 73 74    line from rest
3dc0: 20 6f 66 20 64 65 66 69 6e 69 74 69 6f 6e 2e 0a   of definition..
3dd0: 0a 20 20 20 20 2d 20 20 20 43 6c 61 73 73 20 6e  .    -   Class n
3de0: 61 6d 65 73 20 61 72 65 20 69 6e 20 60 43 61 6d  ames are in `Cam
3df0: 65 6c 43 61 73 65 60 2c 20 75 70 70 65 72 63 61  elCase`, upperca
3e00: 73 65 64 20 66 69 72 73 74 20 6c 65 74 74 65 72  sed first letter
3e10: 0a 0a 20 20 20 20 2d 20 20 20 4d 65 74 68 6f 64  ..    -   Method
3e20: 20 6e 61 6d 65 73 20 61 72 65 20 69 6e 20 60 61   names are in `a
3e30: 6c 6c 5f 6c 6f 77 65 72 5f 63 61 73 65 5f 77 69  ll_lower_case_wi
3e40: 74 68 5f 75 6e 64 65 72 73 63 6f 72 65 73 28 29  th_underscores()
3e50: 60 3b 0a 20 20 20 20 20 20 20 20 64 69 74 74 6f  `;.        ditto
3e60: 20 6d 6f 73 74 20 6f 74 68 65 72 20 67 6c 6f 62   most other glob
3e70: 61 6c 20 73 79 6d 62 6f 6c 73 2e 0a 0a 20 20 20  al symbols...   
3e80: 20 2d 20 20 20 4d 61 63 72 6f 20 6e 61 6d 65 73   -   Macro names
3e90: 20 61 72 65 20 69 6e 20 60 41 4c 4c 5f 55 50 50   are in `ALL_UPP
3ea0: 45 52 43 41 53 45 5f 57 49 54 48 5f 55 4e 44 45  ERCASE_WITH_UNDE
3eb0: 52 53 43 4f 52 45 53 60 0a 0a 20 20 20 20 2d 20  RSCORES`..    - 
3ec0: 20 20 44 6f 78 79 67 65 6e 20 63 6f 6d 6d 65 6e    Doxygen commen
3ed0: 74 20 66 6f 72 20 61 6c 6c 20 70 75 62 6c 69 63  t for all public
3ee0: 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 2c 20 75   declarations, u
3ef0: 6e 6c 65 73 73 20 74 68 65 72 65 20 69 73 20 61  nless there is a
3f00: 0a 20 20 20 20 20 20 20 20 76 65 72 79 20 67 6f  .        very go
3f10: 6f 64 20 72 65 61 73 6f 6e 20 74 6f 20 6b 65 65  od reason to kee
3f20: 70 20 74 68 65 20 74 68 69 6e 67 20 75 6e 64 6f  p the thing undo
3f30: 63 75 6d 65 6e 74 65 64 2e 0a 0a 2d 20 20 20 50  cumented...-   P
3f40: 65 72 6c 20 61 6e 64 20 73 68 65 6c 6c 20 73 63  erl and shell sc
3f50: 72 69 70 74 20 72 75 6c 65 73 20 61 72 65 20 6d  ript rules are m
3f60: 6f 72 65 20 6f 72 20 6c 65 73 73 20 74 68 65 20  ore or less the 
3f70: 73 61 6d 65 20 61 73 20 66 6f 72 20 43 2f 43 2b  same as for C/C+
3f80: 2b 2c 0a 20 20 20 20 74 6f 20 74 68 65 20 65 78  +,.    to the ex
3f90: 74 65 6e 74 20 74 68 69 73 20 6d 61 6b 65 73 20  tent this makes 
3fa0: 73 65 6e 73 65 2e 0a 0a 0a 23 23 23 20 58 4d 4c  sense....### XML
3fb0: 2f 48 54 4d 4c 20 44 69 61 6c 65 63 74 73 0a 0a  /HTML Dialects..
3fc0: 46 69 6c 65 20 74 79 70 65 73 3a 20 60 62 6b 6c  File types: `bkl
3fd0: 60 2c 20 60 64 62 78 60 2c 20 60 68 74 61 60 0a  `, `dbx`, `hta`.
3fe0: 0a 2d 20 20 20 53 70 61 63 65 73 20 66 6f 72 20  .-   Spaces for 
3ff0: 69 6e 64 65 6e 74 73 2c 20 73 69 7a 65 20 32 2e  indents, size 2.
4000: 20 53 68 61 6c 6c 6f 77 20 69 6e 64 65 6e 74 73   Shallow indents
4010: 20 64 75 65 20 74 6f 20 74 68 65 20 68 69 67 68   due to the high
4020: 20 6c 65 76 65 6c 20 6f 66 0a 20 20 20 20 6e 65   level of.    ne
4030: 73 74 69 6e 67 20 6f 63 63 75 72 72 69 6e 67 20  sting occurring 
4040: 69 6e 20 73 75 63 68 20 66 69 6c 65 73 2c 20 61  in such files, a
4050: 6e 64 20 73 70 61 63 65 73 20 62 65 63 61 75 73  nd spaces becaus
4060: 65 20 74 68 65 79 27 72 65 20 6e 6f 74 20 61 73  e they're not as
4070: 0a 20 20 20 20 61 6e 6e 6f 79 69 6e 67 20 61 74  .    annoying at
4080: 20 73 68 61 6c 6c 6f 77 20 69 6e 64 65 6e 74 20   shallow indent 
4090: 6c 65 76 65 6c 73 20 69 6e 20 65 64 69 74 6f 72  levels in editor
40a0: 73 20 74 68 61 74 20 64 6f 6e 27 74 20 74 72 65  s that don't tre
40b0: 61 74 20 73 70 61 63 65 0a 20 20 20 20 69 6e 64  at space.    ind
40c0: 65 6e 74 73 20 6c 69 6b 65 20 74 61 62 73 2e 0a  ents like tabs..
40d0: 0a 2d 20 20 20 55 6e 69 78 20 6c 69 6e 65 20 65  .-   Unix line e
40e0: 6e 64 69 6e 67 73 2e 20 41 67 61 69 6e 2c 20 74  ndings. Again, t
40f0: 68 65 73 65 20 61 72 65 20 69 6e 74 65 6e 64 65  hese are intende
4100: 64 20 74 6f 20 62 65 20 76 69 65 77 65 64 20 69  d to be viewed i
4110: 6e 20 61 0a 20 20 20 20 70 72 6f 67 72 61 6d 6d  n a.    programm
4120: 65 72 27 73 20 74 65 78 74 20 65 64 69 74 6f 72  er's text editor
4130: 2c 20 77 68 69 63 68 20 73 68 6f 75 6c 64 20 77  , which should w
4140: 6f 72 6b 20 77 69 74 68 20 55 6e 69 78 20 6c 69  ork with Unix li
4150: 6e 65 20 65 6e 64 69 6e 67 73 0a 20 20 20 20 6e  ne endings.    n
4160: 6f 20 6d 61 74 74 65 72 20 74 68 65 20 70 6c 61  o matter the pla
4170: 74 66 6f 72 6d 2e 0a 0a 0a 23 23 23 20 50 6c 61  tform....### Pla
4180: 69 6e 20 54 65 78 74 20 46 69 6c 65 73 0a 0a 46  in Text Files..F
4190: 69 6c 65 20 74 79 70 65 73 3a 20 60 74 78 74 60  ile types: `txt`
41a0: 0a 0a 2d 20 20 20 53 70 61 63 65 73 20 66 6f 72  ..-   Spaces for
41b0: 20 69 6e 64 65 6e 74 73 2c 20 73 69 7a 65 20 34   indents, size 4
41c0: 2e 20 53 70 61 63 65 73 20 62 65 63 61 75 73 65  . Spaces because
41d0: 20 73 75 63 68 20 66 69 6c 65 73 20 61 72 65 20   such files are 
41e0: 6f 66 74 65 6e 0a 20 20 20 20 76 69 65 77 65 64  often.    viewed
41f0: 20 69 6e 20 4e 6f 74 65 70 61 64 20 61 6e 64 20   in Notepad and 
4200: 73 69 6d 69 6c 61 72 6c 79 20 63 72 69 70 70 6c  similarly crippl
4210: 65 64 20 74 65 78 74 20 65 64 69 74 6f 72 73 20  ed text editors 
4220: 77 68 69 63 68 20 75 73 65 20 61 0a 20 20 20 20  which use a.    
4230: 64 65 66 61 75 6c 74 20 69 6e 64 65 6e 74 20 6c  default indent l
4240: 65 76 65 6c 20 6f 66 20 38 2e 0a 0a 2d 20 20 20  evel of 8...-   
4250: 44 4f 53 20 6c 69 6e 65 20 65 6e 64 69 6e 67 73  DOS line endings
4260: 2c 20 61 67 61 69 6e 20 66 6f 72 20 74 68 65 20  , again for the 
4270: 4e 6f 74 65 70 61 64 20 72 65 61 73 6f 6e 2e 20  Notepad reason. 
4280: 41 6e 64 20 6f 6e 20 6d 6f 64 65 72 6e 20 55 6e  And on modern Un
4290: 69 78 79 0a 20 20 20 20 70 6c 61 74 66 6f 72 6d  ixy.    platform
42a0: 73 2c 20 74 68 65 20 74 6f 6f 6c 73 20 63 6f 70  s, the tools cop
42b0: 65 20 77 69 74 68 20 44 4f 53 20 6c 69 6e 65 20  e with DOS line 
42c0: 65 6e 64 69 6e 67 73 20 72 65 61 73 6f 6e 61 62  endings reasonab
42d0: 6c 79 20 77 65 6c 6c 2e 0a 20 20 20 20 42 65 74  ly well..    Bet
42e0: 74 65 72 20 74 68 61 6e 20 74 68 65 20 63 6f 6e  ter than the con
42f0: 76 65 72 73 65 2c 20 61 6e 79 77 61 79 2e 0a 0a  verse, anyway...
4300: 0a 57 68 65 6e 20 69 6e 20 64 6f 75 62 74 2c 20  .When in doubt, 
4310: 6d 69 6d 69 63 20 77 68 61 74 20 79 6f 75 20 73  mimic what you s
4320: 65 65 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e  ee in the curren
4330: 74 20 63 6f 64 65 2e 20 57 68 65 6e 20 73 74 69  t code. When sti
4340: 6c 6c 20 69 6e 0a 64 6f 75 62 74 2c 20 61 73 6b  ll in.doubt, ask
4350: 20 6f 6e 20 74 68 65 20 5b 6d 61 69 6c 69 6e 67   on the [mailing
4360: 20 6c 69 73 74 5d 5b 6d 6c 5d 2e 0a 0a 0a 23 23   list][ml]....##
4370: 20 54 65 73 74 69 6e 67 20 59 6f 75 72 20 50 72   Testing Your Pr
4380: 6f 70 6f 73 65 64 20 43 68 61 6e 67 65 0a 0a 4d  oposed Change..M
4390: 79 53 51 4c 2b 2b 20 69 6e 63 6c 75 64 65 73 20  ySQL++ includes 
43a0: 61 20 73 65 6c 66 2d 74 65 73 74 20 6d 65 63 68  a self-test mech
43b0: 61 6e 69 73 6d 20 63 61 6c 6c 65 64 20 60 64 74  anism called `dt
43c0: 65 73 74 60 2e 20 49 74 27 73 20 61 20 42 6f 75  est`. It's a Bou
43d0: 72 6e 65 0a 73 68 65 6c 6c 20 73 63 72 69 70 74  rne.shell script
43e0: 2c 20 72 75 6e 20 6d 75 63 68 20 6c 69 6b 65 20  , run much like 
43f0: 60 65 78 72 75 6e 60 3a 0a 0a 20 20 20 20 24 20  `exrun`:..    $ 
4400: 2e 2f 64 74 65 73 74 20 5b 2d 73 20 73 65 72 76  ./dtest [-s serv
4410: 65 72 5f 61 64 64 72 5d 20 5b 2d 75 20 75 73 65  er_addr] [-u use
4420: 72 5d 20 5b 2d 70 20 70 61 73 73 77 6f 72 64 5d  r] [-p password]
4430: 0a 0a 54 68 69 73 20 61 75 74 6f 6d 61 74 69 63  ..This automatic
4440: 61 6c 6c 79 20 72 75 6e 73 20 6d 6f 73 74 20 6f  ally runs most o
4450: 66 20 74 68 65 20 65 78 61 6d 70 6c 65 73 2c 20  f the examples, 
4460: 63 61 70 74 75 72 65 73 20 74 68 65 20 6f 75 74  captures the out
4470: 70 75 74 73 20 74 6f 20 61 0a 66 69 6c 65 2c 20  puts to a.file, 
4480: 61 6e 64 20 74 68 65 6e 20 63 6f 6d 70 61 72 65  and then compare
4490: 73 20 74 68 61 74 20 74 6f 20 61 20 6b 6e 6f 77  s that to a know
44a0: 6e 2d 67 6f 6f 64 20 72 75 6e 27 73 20 6f 75 74  n-good run's out
44b0: 70 75 74 73 2c 20 73 74 6f 72 65 64 20 69 6e 0a  puts, stored in.
44c0: 60 62 6d 61 72 6b 2e 74 78 74 60 2e 20 53 6f 2c  `bmark.txt`. So,
44d0: 20 62 65 66 6f 72 65 20 79 6f 75 20 73 75 62 6d   before you subm
44e0: 69 74 20 61 20 70 61 74 63 68 2c 20 72 75 6e 20  it a patch, run 
44f0: 60 64 74 65 73 74 60 20 74 6f 20 73 65 65 20 69  `dtest` to see i
4500: 66 0a 61 6e 79 74 68 69 6e 67 20 68 61 73 20 63  f.anything has c
4510: 68 61 6e 67 65 64 2e 20 49 66 20 73 6f 6d 65 74  hanged. If somet
4520: 68 69 6e 67 20 68 61 73 20 61 6e 64 20 79 6f 75  hing has and you
4530: 20 63 61 6e 27 74 20 61 63 63 6f 75 6e 74 20 66   can't account f
4540: 6f 72 20 69 74 2c 20 69 74 0a 72 65 70 72 65 73  or it, it.repres
4550: 65 6e 74 73 20 61 20 70 72 6f 62 6c 65 6d 20 74  ents a problem t
4560: 68 61 74 20 79 6f 75 27 6c 6c 20 68 61 76 65 20  hat you'll have 
4570: 74 6f 20 66 69 78 20 62 65 66 6f 72 65 20 73 75  to fix before su
4580: 62 6d 69 74 74 69 6e 67 20 74 68 65 0a 70 61 74  bmitting the.pat
4590: 63 68 2e 20 49 66 20 69 74 20 67 69 76 65 73 20  ch. If it gives 
45a0: 61 6e 20 65 78 70 65 63 74 65 64 20 63 68 61 6e  an expected chan
45b0: 67 65 2c 20 72 65 6d 6f 76 65 20 60 62 6d 61 72  ge, remove `bmar
45c0: 6b 2e 74 78 74 60 2c 20 72 65 2d 72 75 6e 0a 60  k.txt`, re-run.`
45d0: 64 74 65 73 74 60 2c 20 61 6e 64 20 69 6e 63 6c  dtest`, and incl
45e0: 75 64 65 20 74 68 65 20 60 62 6d 61 72 6b 2e 74  ude the `bmark.t
45f0: 78 74 60 20 64 69 66 66 73 20 69 6e 20 79 6f 75  xt` diffs in you
4600: 72 20 70 61 74 63 68 2e 20 54 68 69 73 0a 63 6f  r patch. This.co
4610: 6d 6d 75 6e 69 63 61 74 65 73 20 74 6f 20 75 73  mmunicates to us
4620: 20 74 68 65 20 66 61 63 74 20 74 68 61 74 20 79   the fact that y
4630: 6f 75 20 6b 6e 6f 77 20 74 68 65 72 65 20 61 72  ou know there ar
4640: 65 20 64 69 66 66 65 72 65 6e 63 65 73 20 61 6e  e differences an
4650: 64 20 77 61 6e 74 0a 74 68 65 20 70 61 74 63 68  d want.the patch
4660: 20 65 76 61 6c 75 61 74 65 64 20 61 6e 79 77 61   evaluated anywa
4670: 79 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 77 65  y. Otherwise, we
4680: 20 61 72 65 20 6c 69 6b 65 6c 79 20 74 6f 20 76   are likely to v
4690: 69 65 77 20 74 68 65 20 63 68 61 6e 67 65 0a 61  iew the change.a
46a0: 73 20 61 20 62 75 67 2e 0a 0a 60 64 74 65 73 74  s a bug...`dtest
46b0: 60 20 61 6c 73 6f 20 72 75 6e 73 20 61 6c 6c 20  ` also runs all 
46c0: 6f 66 20 74 68 65 20 75 6e 69 74 20 74 65 73 74  of the unit test
46d0: 73 20 69 6e 20 60 74 65 73 74 2f 2a 60 2e 20 54  s in `test/*`. T
46e0: 68 65 20 70 75 72 70 6f 73 65 20 6f 66 0a 60 74  he purpose of.`t
46f0: 65 73 74 2f 2a 60 20 69 73 20 64 69 66 66 65 72  est/*` is differ
4700: 65 6e 74 20 66 72 6f 6d 20 74 68 61 74 20 6f 66  ent from that of
4710: 20 60 65 78 61 6d 70 6c 65 73 2f 2a 60 3a 0a 0a   `examples/*`:..
4720: 2d 20 20 20 60 74 65 73 74 2f 2a 60 20 61 72 65  -   `test/*` are
4730: 20 75 6e 69 74 20 74 65 73 74 73 3a 20 65 61 63   unit tests: eac
4740: 68 20 74 65 73 74 73 20 6f 6e 6c 79 20 6f 6e 65  h tests only one
4750: 20 4d 79 53 51 4c 2b 2b 20 63 6c 61 73 73 2c 0a   MySQL++ class,.
4760: 20 20 20 20 69 6e 64 65 70 65 6e 64 65 6e 74 20      independent 
4770: 6f 66 20 65 76 65 72 79 74 68 69 6e 67 20 65 6c  of everything el
4780: 73 65 2e 20 42 65 63 61 75 73 65 20 44 42 20 61  se. Because DB a
4790: 63 63 65 73 73 20 72 65 71 75 69 72 65 73 20 73  ccess requires s
47a0: 65 76 65 72 61 6c 0a 20 20 20 20 4d 79 53 51 4c  everal.    MySQL
47b0: 2b 2b 20 63 6c 61 73 73 65 73 20 74 6f 20 63 6f  ++ classes to co
47c0: 6f 70 65 72 61 74 65 2c 20 61 20 75 6e 69 74 20  operate, a unit 
47d0: 74 65 73 74 20 6e 65 76 65 72 20 61 63 63 65 73  test never acces
47e0: 73 65 73 20 61 20 64 61 74 61 62 61 73 65 3b 0a  ses a database;.
47f0: 20 20 20 20 68 65 6e 63 65 2c 20 6e 6f 20 75 6e      hence, no un
4800: 69 74 20 74 65 73 74 20 6e 65 65 64 73 20 44 42  it test needs DB
4810: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 61 72 61   connection para
4820: 6d 65 74 65 72 73 2e 20 20 57 65 20 77 69 6c 6c  meters.  We will
4830: 20 6e 65 76 65 72 0a 20 20 20 20 67 65 74 20 31   never.    get 1
4840: 30 30 25 20 63 6f 64 65 20 63 6f 76 65 72 61 67  00% code coverag
4850: 65 20 66 72 6f 6d 20 60 74 65 73 74 2f 2a 60 20  e from `test/*` 
4860: 61 6c 6f 6e 65 2e 0a 0a 2d 20 20 20 60 65 78 61  alone...-   `exa
4870: 6d 70 6c 65 73 2f 2a 60 20 63 61 6e 20 62 65 20  mples/*` can be 
4880: 74 68 6f 75 67 68 74 20 6f 66 20 61 73 20 69 6e  thought of as in
4890: 74 65 67 72 61 74 69 6f 6e 20 74 65 73 74 73 3a  tegration tests:
48a0: 20 74 68 65 79 20 74 65 73 74 20 6d 61 6e 79 0a   they test many.
48b0: 20 20 20 20 70 69 65 63 65 73 20 6f 66 20 4d 79      pieces of My
48c0: 53 51 4c 2b 2b 20 77 6f 72 6b 69 6e 67 20 74 6f  SQL++ working to
48d0: 67 65 74 68 65 72 2c 20 61 63 63 65 73 73 69 6e  gether, accessin
48e0: 67 20 61 20 72 65 61 6c 20 64 61 74 61 62 61 73  g a real databas
48f0: 65 0a 20 20 20 20 73 65 72 76 65 72 2e 20 49 6e  e.    server. In
4900: 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 65 6e 73   addition to ens
4910: 75 72 69 6e 67 20 74 68 61 74 20 61 6c 6c 20 74  uring that all t
4920: 68 65 20 70 69 65 63 65 73 20 77 6f 72 6b 20 74  he pieces work t
4930: 6f 67 65 74 68 65 72 0a 20 20 20 20 61 6e 64 20  ogether.    and 
4940: 67 69 76 65 20 63 6f 6e 73 69 73 74 65 6e 74 20  give consistent 
4950: 72 65 73 75 6c 74 73 20 66 72 6f 6d 20 70 6c 61  results from pla
4960: 74 66 6f 72 6d 20 74 6f 20 70 6c 61 74 66 6f 72  tform to platfor
4970: 6d 20 61 6e 64 20 72 75 6e 20 74 6f 0a 20 20 20  m and run to.   
4980: 20 72 75 6e 2c 20 69 74 20 61 6c 73 6f 20 66 69   run, it also fi
4990: 6c 6c 73 20 69 6e 20 67 61 70 73 20 69 6e 20 74  lls in gaps in t
49a0: 68 65 20 63 6f 64 65 20 63 6f 76 65 72 61 67 65  he code coverage
49b0: 20 77 68 65 72 65 20 6e 6f 20 73 75 69 74 61 62   where no suitab
49c0: 6c 65 0a 20 20 20 20 60 74 65 73 74 2f 2a 60 20  le.    `test/*` 
49d0: 6d 6f 64 75 6c 65 20 63 6f 75 6c 64 20 62 65 20  module could be 
49e0: 63 72 65 61 74 65 64 2e 0a 0a 2d 20 20 20 60 74  created...-   `t
49f0: 65 73 74 2f 2a 60 20 70 72 6f 67 72 61 6d 73 20  est/*` programs 
4a00: 61 6c 77 61 79 73 20 72 75 6e 20 73 69 6c 65 6e  always run silen
4a10: 74 6c 79 20 6f 6e 20 73 75 63 63 65 73 73 2c 20  tly on success, 
4a20: 77 72 69 74 69 6e 67 20 6f 75 74 70 75 74 0a 20  writing output. 
4a30: 20 20 20 6f 6e 6c 79 20 74 6f 20 69 6e 64 69 63     only to indic
4a40: 61 74 65 20 74 65 73 74 20 66 61 69 6c 75 72 65  ate test failure
4a50: 73 2e 20 54 68 69 73 20 69 73 20 62 65 63 61 75  s. This is becau
4a60: 73 65 20 74 68 65 79 27 72 65 20 75 73 75 61 6c  se they're usual
4a70: 6c 79 20 6f 6e 6c 79 0a 20 20 20 20 72 75 6e 20  ly only.    run 
4a80: 76 69 61 20 60 64 74 65 73 74 60 2e 0a 0a 2d 20  via `dtest`...- 
4a90: 20 20 60 65 78 61 6d 70 6c 65 73 2f 2a 60 20 61    `examples/*` a
4aa0: 72 65 20 61 6c 77 61 79 73 20 22 6e 6f 69 73 79  re always "noisy
4ab0: 2c 22 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66  ," regardless of
4ac0: 20 77 68 65 74 68 65 72 20 74 68 65 79 20 73 75   whether they su
4ad0: 63 63 65 65 64 0a 20 20 20 20 6f 72 20 66 61 69  cceed.    or fai
4ae0: 6c 2c 20 62 65 63 61 75 73 65 20 74 68 65 79 27  l, because they'
4af0: 72 65 20 61 6c 73 6f 20 72 75 6e 20 69 6e 74 65  re also run inte
4b00: 72 61 63 74 69 76 65 6c 79 20 62 79 20 70 65 6f  ractively by peo
4b10: 70 6c 65 20 6c 65 61 72 6e 69 6e 67 0a 20 20 20  ple learning.   
4b20: 20 74 6f 20 75 73 65 20 4d 79 53 51 4c 2b 2b 2e   to use MySQL++.
4b30: 0a 0a 50 61 74 63 68 65 73 20 73 68 6f 75 6c 64  ..Patches should
4b40: 20 69 6e 63 6c 75 64 65 20 74 65 73 74 73 20 69   include tests i
4b50: 66 20 74 68 65 79 20 69 6e 74 72 6f 64 75 63 65  f they introduce
4b60: 20 6e 65 77 20 66 75 6e 63 74 69 6f 6e 61 6c 69   new functionali
4b70: 74 79 20 6f 72 20 66 69 78 0a 61 20 62 75 67 20  ty or fix.a bug 
4b80: 74 68 61 74 20 74 68 65 20 65 78 69 73 74 69 6e  that the existin
4b90: 67 20 74 65 73 74 20 63 6f 76 65 72 61 67 65 20  g test coverage 
4ba0: 66 61 69 6c 65 64 20 74 6f 20 63 61 74 63 68 2e  failed to catch.
4bb0: 20 20 49 66 20 74 68 65 20 74 65 73 74 20 69 73    If the test is
4bc0: 0a 6e 6f 69 73 79 2c 20 6e 65 65 64 73 20 44 42  .noisy, needs DB
4bd0: 20 61 63 63 65 73 73 2c 20 6f 72 20 74 65 73 74   access, or test
4be0: 73 20 6d 75 6c 74 69 70 6c 65 20 70 61 72 74 73  s multiple parts
4bf0: 20 6f 66 20 74 68 65 20 6c 69 62 72 61 72 79 20   of the library 
4c00: 61 74 20 6f 6e 63 65 2c 0a 69 74 20 67 6f 65 73  at once,.it goes
4c10: 20 69 6e 20 60 65 78 61 6d 70 6c 65 73 2f 2a 60   in `examples/*`
4c20: 2e 20 49 66 20 79 6f 75 72 20 63 68 61 6e 67 65  . If your change
4c30: 20 61 66 66 65 63 74 73 20 6f 6e 6c 79 20 6f 6e   affects only on
4c40: 65 20 63 6c 61 73 73 20 69 6e 0a 4d 79 53 51 4c  e class in.MySQL
4c50: 2b 2b 20 61 6e 64 20 74 65 73 74 69 6e 67 20 69  ++ and testing i
4c60: 74 20 63 61 6e 20 62 65 20 64 6f 6e 65 20 77 69  t can be done wi
4c70: 74 68 6f 75 74 20 69 6e 73 74 61 6e 74 69 61 74  thout instantiat
4c80: 69 6e 67 20 6f 74 68 65 72 20 4d 79 53 51 4c 2b  ing other MySQL+
4c90: 2b 0a 63 6c 61 73 73 65 73 20 e2 80 94 20 6f 74  +.classes — ot
4ca0: 68 65 72 20 74 68 61 6e 20 62 79 20 63 6f 6d 70  her than by comp
4cb0: 6f 73 69 74 69 6f 6e 2c 20 6f 66 20 63 6f 75 72  osition, of cour
4cc0: 73 65 20 e2 80 94 20 69 74 20 73 68 6f 75 6c 64  se — it should
4cd0: 20 67 6f 20 69 6e 0a 60 74 65 73 74 2f 2a 60 2e   go in.`test/*`.
4ce0: 0a 0a 49 6e 20 67 65 6e 65 72 61 6c 2c 20 70 72  ..In general, pr
4cf0: 65 66 65 72 20 6d 6f 64 69 66 79 69 6e 67 20 61  efer modifying a
4d00: 6e 20 65 78 69 73 74 69 6e 67 20 60 65 78 61 6d  n existing `exam
4d10: 70 6c 65 73 2f 2a 60 20 6f 72 20 60 74 65 73 74  ples/*` or `test
4d20: 2f 2a 60 0a 70 72 6f 67 72 61 6d 2e 20 20 41 64  /*`.program.  Ad
4d30: 64 20 61 20 6e 65 77 20 6f 6e 65 20 6f 6e 6c 79  d a new one only
4d40: 20 69 66 20 79 6f 75 27 72 65 20 69 6e 74 72 6f   if you're intro
4d50: 64 75 63 69 6e 67 20 62 72 61 6e 64 20 6e 65 77  ducing brand new
4d60: 0a 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 6f  .functionality o
4d70: 72 20 77 68 65 6e 20 61 20 67 69 76 65 6e 20 66  r when a given f
4d80: 65 61 74 75 72 65 20 63 75 72 72 65 6e 74 6c 79  eature currently
4d90: 20 68 61 73 20 6e 6f 20 74 65 73 74 20 61 74 20   has no test at 
4da0: 61 6c 6c 2e 0a 0a 42 65 77 61 72 65 20 74 68 61  all...Beware tha
4db0: 74 20 74 68 65 20 70 72 69 6d 61 72 79 20 72 6f  t the primary ro
4dc0: 6c 65 20 74 68 65 20 65 78 61 6d 70 6c 65 73 20  le the examples 
4dd0: 69 73 20 74 6f 20 69 6c 6c 75 73 74 72 61 74 65  is to illustrate
4de0: 20 70 6f 69 6e 74 73 20 69 6e 20 74 68 65 0a 75   points in the.u
4df0: 73 65 72 20 6d 61 6e 75 61 6c 2e 20 49 66 20 61  ser manual. If a
4e00: 6e 20 65 78 69 73 74 69 6e 67 20 65 78 61 6d 70  n existing examp
4e10: 6c 65 20 64 6f 65 73 20 73 6f 6d 65 74 68 69 6e  le does somethin
4e20: 67 20 73 69 6d 69 6c 61 72 20 74 6f 20 77 68 61  g similar to wha
4e30: 74 20 61 0a 70 72 6f 70 65 72 20 74 65 73 74 20  t a.proper test 
4e40: 77 6f 75 6c 64 20 6e 65 65 64 20 74 6f 20 64 6f  would need to do
4e50: 20 61 6e 64 20 74 68 65 20 74 65 73 74 20 64 6f   and the test do
4e60: 65 73 6e 27 74 20 63 68 61 6e 67 65 20 74 68 65  esn't change the
4e70: 20 6e 61 74 75 72 65 20 6f 66 0a 74 68 65 20 65   nature of.the e
4e80: 78 61 6d 70 6c 65 2c 20 64 6f 6e 27 74 20 77 6f  xample, don't wo
4e90: 72 72 79 20 61 62 6f 75 74 20 63 68 61 6e 67 69  rry about changi
4ea0: 6e 67 20 74 68 65 20 65 78 61 6d 70 6c 65 20 63  ng the example c
4eb0: 6f 64 65 2e 20 49 66 20 79 6f 75 72 20 74 65 73  ode. If your tes
4ec0: 74 0a 77 6f 75 6c 64 20 63 68 61 6e 67 65 20 74  t.would change t
4ed0: 68 65 20 6e 61 74 75 72 65 20 6f 66 20 74 68 65  he nature of the
4ee0: 20 65 78 61 6d 70 6c 65 2c 20 79 6f 75 20 65 69   example, you ei
4ef0: 74 68 65 72 20 6e 65 65 64 20 74 6f 20 64 6f 20  ther need to do 
4f00: 74 68 65 20 74 65 73 74 0a 61 6e 6f 74 68 65 72  the test.another
4f10: 20 77 61 79 2c 20 6f 72 20 61 6c 73 6f 20 73 75   way, or also su
4f20: 62 6d 69 74 20 61 20 63 68 61 6e 67 65 20 74 6f  bmit a change to
4f30: 20 60 64 6f 63 2f 75 73 65 72 6d 61 6e 2f 2a 2e   `doc/userman/*.
4f40: 64 62 78 60 20 74 68 61 74 0a 69 6e 63 6f 72 70  dbx` that.incorp
4f50: 6f 72 61 74 65 73 20 74 68 65 20 64 69 66 66 65  orates the diffe
4f60: 72 65 6e 63 65 2e 0a 0a 0a 23 23 20 41 64 64 69  rence....## Addi
4f70: 6e 67 20 53 75 70 70 6f 72 74 20 66 6f 72 20 61  ng Support for a
4f80: 20 44 69 66 66 65 72 65 6e 74 20 43 6f 6d 70 69   Different Compi
4f90: 6c 65 72 0a 0a 41 73 20 64 65 73 63 72 69 62 65  ler..As describe
4fa0: 64 20 61 62 6f 76 65 2c 20 4d 79 53 51 4c 2b 2b  d above, MySQL++
4fb0: 20 75 73 65 73 20 74 68 65 20 42 61 6b 65 66 69   uses the Bakefi
4fc0: 6c 65 20 73 79 73 74 65 6d 20 66 6f 72 20 63 72  le system for cr
4fd0: 65 61 74 69 6e 67 0a 70 72 6f 6a 65 63 74 20 66  eating.project f
4fe0: 69 6c 65 73 20 61 6e 64 20 6d 61 6b 65 66 69 6c  iles and makefil
4ff0: 65 73 2e 20 54 68 69 73 20 61 6c 6c 6f 77 73 20  es. This allows 
5000: 75 73 20 74 6f 20 6d 61 6b 65 20 63 68 61 6e 67  us to make chang
5010: 65 73 20 74 6f 20 61 20 73 69 6e 67 6c 65 0a 73  es to a single.s
5020: 65 74 20 6f 66 20 66 69 6c 65 73 2c 20 61 6e 64  et of files, and
5030: 20 68 61 76 65 20 74 68 65 20 70 72 6f 70 65 72   have the proper
5040: 20 63 68 61 6e 67 65 73 20 62 65 20 6d 61 64 65   changes be made
5050: 20 74 6f 20 61 6c 6c 20 67 65 6e 65 72 61 74 65   to all generate
5060: 64 0a 70 72 6f 6a 65 63 74 20 66 69 6c 65 73 20  d.project files 
5070: 61 6e 64 20 6d 61 6b 65 66 69 6c 65 73 2e 20 49  and makefiles. I
5080: 6e 20 74 68 65 20 70 61 73 74 2c 20 77 65 20 75  n the past, we u
5090: 73 65 64 20 6d 6f 72 65 20 61 64 2d 68 6f 63 20  sed more ad-hoc 
50a0: 73 79 73 74 65 6d 73 2c 0a 61 6e 64 20 77 65 27  systems,.and we'
50b0: 64 20 66 72 65 71 75 65 6e 74 6c 79 20 66 6f 72  d frequently for
50c0: 67 65 74 20 74 6f 20 75 70 64 61 74 65 20 69 6e  get to update in
50d0: 64 69 76 69 64 75 61 6c 20 70 72 6f 6a 65 63 74  dividual project
50e0: 20 66 69 6c 65 73 20 61 6e 64 0a 6d 61 6b 65 66   files and.makef
50f0: 69 6c 65 73 2c 20 73 6f 20 61 74 20 61 6e 79 20  iles, so at any 
5100: 67 69 76 65 6e 20 74 69 6d 65 2c 20 61 74 20 6c  given time, at l
5110: 65 61 73 74 20 6f 6e 65 20 74 61 72 67 65 74 20  east one target 
5120: 77 61 73 20 6c 69 6b 65 6c 79 20 74 6f 20 62 65  was likely to be
5130: 0a 62 72 6f 6b 65 6e 2e 0a 0a 49 66 20 4d 79 53  .broken...If MyS
5140: 51 4c 2b 2b 20 64 6f 65 73 6e 27 74 20 63 75 72  QL++ doesn't cur
5150: 72 65 6e 74 6c 79 20 73 68 69 70 20 77 69 74 68  rently ship with
5160: 20 70 72 6f 6a 65 63 74 20 66 69 6c 65 73 20 6f   project files o
5170: 72 20 6d 61 6b 65 66 69 6c 65 73 20 74 75 6e 65  r makefiles tune
5180: 64 0a 66 6f 72 20 79 6f 75 72 20 63 6f 6d 70 69  d.for your compi
5190: 6c 65 72 20 6f 66 20 63 68 6f 69 63 65 2c 20 79  ler of choice, y
51a0: 6f 75 20 6e 65 65 64 20 74 6f 20 77 6f 72 6b 20  ou need to work 
51b0: 74 68 72 6f 75 67 68 20 74 68 65 20 42 61 6b 65  through the Bake
51c0: 66 69 6c 65 0a 6d 65 63 68 61 6e 69 73 6d 20 74  file.mechanism t
51d0: 6f 20 61 64 64 20 73 75 70 70 6f 72 74 2e 20 57  o add support. W
51e0: 65 27 72 65 20 6e 6f 74 20 77 69 6c 6c 69 6e 67  e're not willing
51f0: 20 74 6f 20 64 6f 20 61 64 2d 68 6f 63 20 70 6c   to do ad-hoc pl
5200: 61 74 66 6f 72 6d 0a 73 75 70 70 6f 72 74 20 61  atform.support a
5210: 6e 79 20 6d 6f 72 65 2c 20 73 6f 20 70 6c 65 61  ny more, so plea
5220: 73 65 20 64 6f 6e 27 74 20 61 73 6b 20 69 66 20  se don't ask if 
5230: 79 6f 75 20 63 61 6e 20 73 65 6e 64 20 75 73 20  you can send us 
5240: 70 72 6f 6a 65 63 74 20 66 69 6c 65 73 0a 69 6e  project files.in
5250: 73 74 65 61 64 3b 20 77 65 20 64 6f 6e 27 74 20  stead; we don't 
5260: 77 61 6e 74 20 74 68 65 6d 2e 0a 0a 49 66 20 79  want them...If y
5270: 6f 75 20 77 61 6e 74 20 74 6f 20 70 6f 72 74 20  ou want to port 
5280: 4d 79 53 51 4c 2b 2b 20 74 6f 20 61 6e 6f 74 68  MySQL++ to anoth
5290: 65 72 20 70 6c 61 74 66 6f 72 6d 2c 20 77 65 20  er platform, we 
52a0: 6e 65 65 64 20 74 6f 20 62 65 20 63 6f 6e 66 69  need to be confi
52b0: 64 65 6e 74 0a 74 68 61 74 20 74 68 65 20 65 6e  dent.that the en
52c0: 74 69 72 65 20 6c 69 62 72 61 72 79 20 77 6f 72  tire library wor
52d0: 6b 73 20 6f 6e 20 79 6f 75 72 20 70 6c 61 74 66  ks on your platf
52e0: 6f 72 6d 20 62 65 66 6f 72 65 20 77 65 27 6c 6c  orm before we'll
52f0: 20 61 63 63 65 70 74 0a 70 61 74 63 68 65 73 2e   accept.patches.
5300: 20 49 6e 20 74 68 65 20 70 61 73 74 2c 20 77 65   In the past, we
5310: 27 76 65 20 68 61 64 20 62 72 6f 6b 65 6e 20 70  've had broken p
5320: 6f 72 74 73 20 74 68 61 74 20 77 65 72 65 20 6d  orts that were m
5330: 69 73 73 69 6e 67 20 69 6d 70 6f 72 74 61 6e 74  issing important
5340: 0a 6c 69 62 72 61 72 79 20 66 65 61 74 75 72 65  .library feature
5350: 73 2c 20 6f 72 20 74 68 61 74 20 63 72 61 73 68  s, or that crash
5360: 65 64 20 77 68 65 6e 20 62 75 69 6c 74 20 69 6e  ed when built in
5370: 20 63 65 72 74 61 69 6e 20 77 61 79 73 2e 20 46   certain ways. F
5380: 65 77 20 70 65 6f 70 6c 65 0a 77 69 6c 6c 20 6b  ew people.will k
5390: 6e 6f 77 69 6e 67 6c 79 20 75 73 65 20 61 20 63  nowingly use a c
53a0: 72 69 70 70 6c 65 64 20 76 65 72 73 69 6f 6e 20  rippled version 
53b0: 6f 66 20 4d 79 53 51 4c 2b 2b 2c 20 73 69 6e 63  of MySQL++, sinc
53c0: 65 20 74 68 65 72 65 20 61 72 65 0a 75 73 75 61  e there are.usua
53d0: 6c 6c 79 20 61 63 63 65 70 74 61 62 6c 65 20 61  lly acceptable a
53e0: 6c 74 65 72 6e 61 74 69 76 65 73 2e 20 20 54 68  lternatives.  Th
53f0: 65 72 65 66 6f 72 65 2c 20 73 75 63 68 20 70 6f  erefore, such po
5400: 72 74 73 20 62 65 63 6f 6d 65 0a 6d 61 69 6e 74  rts become.maint
5410: 65 6e 61 6e 63 65 20 62 61 67 67 61 67 65 20 77  enance baggage w
5420: 69 74 68 20 6c 69 74 74 6c 65 20 63 6f 6d 70 65  ith little compe
5430: 6e 73 61 74 69 6e 67 20 76 61 6c 75 65 2e 0a 0a  nsating value...
5440: 0a 23 23 20 3c 61 20 6e 61 6d 65 3d 22 70 72 69  .## <a name="pri
5450: 76 61 74 65 22 3e 3c 2f 61 3e 4d 61 69 6e 74 61  vate"></a>Mainta
5460: 69 6e 69 6e 67 20 61 20 50 72 69 76 61 74 65 20  ining a Private 
5470: 52 65 70 6f 73 69 74 6f 72 79 0a 0a 41 6c 74 68  Repository..Alth
5480: 6f 75 67 68 20 46 6f 73 73 69 6c 20 73 79 6e 63  ough Fossil sync
5490: 73 20 63 68 61 6e 67 65 73 20 62 61 63 6b 20 74  s changes back t
54a0: 6f 20 74 68 65 20 60 74 61 6e 67 65 6e 74 73 6f  o the `tangentso
54b0: 66 74 2e 63 6f 6d 2f 6d 79 73 71 6c 70 70 60 0a  ft.com/mysqlpp`.
54c0: 46 6f 73 73 69 6c 20 72 65 70 6f 73 69 74 6f 72  Fossil repositor
54d0: 79 20 62 79 20 64 65 66 61 75 6c 74 2c 20 69 74  y by default, it
54e0: 20 69 73 20 70 6f 73 73 69 62 6c 65 20 74 6f 20   is possible to 
54f0: 6d 61 69 6e 74 61 69 6e 20 61 20 70 72 69 76 61  maintain a priva
5500: 74 65 20 63 6f 70 79 0a 74 68 61 74 20 73 69 6d  te copy.that sim
5510: 70 6c 79 20 70 75 6c 6c 73 20 63 68 61 6e 67 65  ply pulls change
5520: 73 20 69 6e 20 6f 63 63 61 73 69 6f 6e 61 6c 6c  s in occasionall
5530: 79 2e 0a 0a 54 68 65 20 66 69 72 73 74 20 73 74  y...The first st
5540: 65 70 20 69 73 20 74 6f 20 74 75 72 6e 20 6f 66  ep is to turn of
5550: 66 20 74 68 65 20 61 75 74 6f 2d 73 79 6e 63 20  f the auto-sync 
5560: 66 65 61 74 75 72 65 3a 0a 0a 20 20 20 20 20 24  feature:..     $
5570: 20 66 6f 73 73 69 6c 20 73 65 74 20 61 75 74 6f   fossil set auto
5580: 73 79 6e 63 20 30 0a 0a 54 68 65 6e 2c 20 49 20  sync 0..Then, I 
5590: 72 65 63 6f 6d 6d 65 6e 64 20 74 68 61 74 20 79  recommend that y
55a0: 6f 75 20 6d 61 6b 65 20 61 6e 79 20 6c 6f 63 61  ou make any loca
55b0: 6c 20 63 68 61 6e 67 65 73 20 6f 6e 20 61 20 62  l changes on a b
55c0: 72 61 6e 63 68 3a 0a 0a 20 20 20 20 2e 2e 2e 68  ranch:..    ...h
55d0: 61 63 6b 2c 20 68 61 63 6b 2c 20 68 61 63 6b 2e  ack, hack, hack.
55e0: 2e 2e 0a 20 20 20 20 24 20 66 6f 73 73 69 6c 20  ...    $ fossil 
55f0: 63 69 20 2d 2d 62 72 61 6e 63 68 20 6d 79 2d 6c  ci --branch my-l
5600: 6f 63 61 6c 2d 62 72 61 6e 63 68 0a 0a 41 66 74  ocal-branch..Aft
5610: 65 72 20 79 6f 75 20 67 69 76 65 20 74 68 65 20  er you give the 
5620: 60 2d 2d 62 72 61 6e 63 68 60 20 6f 70 74 69 6f  `--branch` optio
5630: 6e 20 6f 6e 20 61 20 63 68 65 63 6b 69 6e 2c 20  n on a checkin, 
5640: 46 6f 73 73 69 6c 20 61 75 74 6f 6d 61 74 69 63  Fossil automatic
5650: 61 6c 6c 79 0a 73 77 69 74 63 68 65 73 20 79 6f  ally.switches yo
5660: 75 72 20 6c 6f 63 61 6c 20 63 68 65 63 6b 6f 75  ur local checkou
5670: 74 20 74 6f 20 74 68 61 74 20 62 72 61 6e 63 68  t to that branch
5680: 2c 20 73 6f 20 74 68 61 74 20 61 6c 6c 20 66 75  , so that all fu
5690: 72 74 68 65 72 0a 63 68 65 63 6b 69 6e 73 20 63  rther.checkins c
56a0: 61 6e 20 62 65 20 6d 61 64 65 20 77 69 74 68 6f  an be made witho
56b0: 75 74 20 74 68 65 20 60 2d 2d 62 72 61 6e 63 68  ut the `--branch
56c0: 60 20 6f 70 74 69 6f 6e 2e 20 20 54 6f 20 67 65  ` option.  To ge
56d0: 74 20 62 61 63 6b 20 74 6f 20 74 68 65 0a 74 72  t back to the.tr
56e0: 75 6e 6b 2c 20 79 6f 75 27 64 20 73 61 79 20 60  unk, you'd say `
56f0: 66 6f 73 73 69 6c 20 75 70 20 74 72 75 6e 6b 60  fossil up trunk`
5700: 2c 20 62 75 74 20 75 6e 64 65 72 20 74 68 69 73  , but under this
5710: 20 77 6f 72 6b 66 6c 6f 77 2c 20 74 68 65 20 6e   workflow, the n
5720: 65 65 64 0a 66 6f 72 20 74 68 61 74 20 77 69 6c  eed.for that wil
5730: 6c 20 62 65 20 72 61 72 65 2e 0a 0a 57 68 65 6e  l be rare...When
5740: 20 73 6f 6d 65 74 68 69 6e 67 20 68 61 70 70 65   something happe
5750: 6e 73 20 6f 6e 20 74 68 65 20 6f 66 66 69 63 69  ns on the offici
5760: 61 6c 20 74 72 75 6e 6b 20 6f 6e 20 60 74 61 6e  al trunk on `tan
5770: 67 65 6e 74 73 6f 66 74 2e 63 6f 6d 60 20 74 68  gentsoft.com` th
5780: 61 74 0a 79 6f 75 20 77 61 6e 74 20 70 75 6c 6c  at.you want pull
5790: 65 64 20 69 6e 74 6f 20 79 6f 75 72 20 70 72 69  ed into your pri
57a0: 76 61 74 65 20 72 65 70 6f 73 69 74 6f 72 79 2c  vate repository,
57b0: 20 73 61 79 3a 0a 0a 20 20 20 20 24 20 66 6f 73   say:..    $ fos
57c0: 73 69 6c 20 73 79 6e 63 0a 20 20 20 20 24 20 66  sil sync.    $ f
57d0: 6f 73 73 69 6c 20 6d 65 72 67 65 20 74 72 75 6e  ossil merge trun
57e0: 6b 0a 0a 54 68 65 20 66 69 72 73 74 20 63 6f 6d  k..The first com
57f0: 6d 61 6e 64 20 70 75 6c 6c 73 20 61 6c 6c 20 72  mand pulls all r
5800: 65 6d 6f 74 65 20 63 68 61 6e 67 65 73 20 69 6e  emote changes in
5810: 74 6f 20 79 6f 75 72 20 6c 6f 63 61 6c 20 63 6c  to your local cl
5820: 6f 6e 65 2c 20 62 75 74 0a 73 69 6e 63 65 20 74  one, but.since t
5830: 68 6f 73 65 20 63 68 61 6e 67 65 73 20 64 6f 6e  hose changes don
5840: 27 74 20 61 66 66 65 63 74 20 79 6f 75 72 20 70  't affect your p
5850: 72 69 76 61 74 65 20 62 72 61 6e 63 68 2c 20 79  rivate branch, y
5860: 6f 75 20 77 6f 6e 27 74 20 73 65 65 20 61 6e 79  ou won't see any
5870: 0a 69 6d 6d 65 64 69 61 74 65 20 63 68 61 6e 67  .immediate chang
5880: 65 2e 20 54 68 65 20 73 65 63 6f 6e 64 20 61 74  e. The second at
5890: 74 65 6d 70 74 73 20 74 6f 20 6d 65 72 67 65 20  tempts to merge 
58a0: 74 68 65 20 74 72 75 6e 6b 20 62 72 61 6e 63 68  the trunk branch
58b0: 27 73 0a 63 68 61 6e 67 65 73 20 73 69 6e 63 65  's.changes since
58c0: 20 74 68 65 20 6c 61 73 74 20 62 72 61 6e 63 68   the last branch
58d0: 20 6f 72 20 6d 65 72 67 65 20 70 6f 69 6e 74 20   or merge point 
58e0: 69 6e 74 6f 20 79 6f 75 72 20 70 72 69 76 61 74  into your privat
58f0: 65 20 62 72 61 6e 63 68 2e 0a 0a 57 68 65 74 68  e branch...Wheth
5900: 65 72 20 74 68 65 20 6d 65 72 67 65 20 69 73 20  er the merge is 
5910: 73 75 63 63 65 73 73 66 75 6c 20 6f 72 20 6e 6f  successful or no
5920: 74 2c 20 46 6f 73 73 69 6c 20 64 6f 65 73 20 6e  t, Fossil does n
5930: 6f 74 20 69 6d 6d 65 64 69 61 74 65 6c 79 0a 6d  ot immediately.m
5940: 6f 64 69 66 79 20 79 6f 75 72 20 63 6c 6f 6e 65  odify your clone
5950: 2c 20 6f 6e 6c 79 20 74 68 65 20 77 6f 72 6b 69  , only the worki
5960: 6e 67 20 63 68 65 63 6b 6f 75 74 20 64 69 72 65  ng checkout dire
5970: 63 74 6f 72 79 2e 20 59 6f 75 20 6d 75 73 74 20  ctory. You must 
5980: 74 68 65 6e 0a 73 61 79 20 60 66 6f 73 73 69 6c  then.say `fossil
5990: 20 63 69 60 20 6f 6e 63 65 20 79 6f 75 27 72 65   ci` once you're
59a0: 20 68 61 70 70 79 20 77 69 74 68 20 74 68 65 20   happy with the 
59b0: 6d 65 72 67 65 2e 20 55 6e 74 69 6c 20 74 68 65  merge. Until the
59c0: 6e 2c 20 61 6c 6c 20 74 68 65 0a 75 73 75 61 6c  n, all the.usual
59d0: 20 46 6f 73 73 69 6c 20 63 6f 6d 6d 61 6e 64 73   Fossil commands
59e0: 20 6c 69 6b 65 20 60 66 6f 73 73 69 6c 20 64 69   like `fossil di
59f0: 66 66 60 20 61 6e 64 20 60 66 6f 73 73 69 6c 20  ff` and `fossil 
5a00: 73 74 61 74 75 73 60 20 77 69 6c 6c 20 68 65 6c  status` will hel
5a10: 70 0a 79 6f 75 20 63 6f 6d 65 20 74 6f 20 74 68  p.you come to th
5a20: 61 74 20 64 65 63 69 73 69 6f 6e 2e 0a 0a 49 66  at decision...If
5a30: 20 79 6f 75 20 65 76 65 72 20 64 65 63 69 64 65   you ever decide
5a40: 20 74 6f 20 63 6f 6e 74 72 69 62 75 74 65 20 79   to contribute y
5a50: 6f 75 72 20 70 72 69 76 61 74 65 20 62 72 61 6e  our private bran
5a60: 63 68 20 74 6f 20 74 68 65 20 4d 79 53 51 4c 2b  ch to the MySQL+
5a70: 2b 0a 70 72 6f 6a 65 63 74 2c 20 74 68 65 72 65  +.project, there
5a80: 20 61 72 65 20 61 20 63 6f 75 70 6c 65 20 6f 66   are a couple of
5a90: 20 65 61 73 79 20 77 61 79 73 20 74 6f 20 61 63   easy ways to ac
5aa0: 68 69 65 76 65 20 74 68 61 74 2e 20 41 73 6b 20  hieve that. Ask 
5ab0: 61 62 6f 75 74 20 69 74 0a 6f 6e 20 74 68 65 20  about it.on the 
5ac0: 5b 6d 61 69 6c 69 6e 67 20 6c 69 73 74 5d 5b 6d  [mailing list][m
5ad0: 6c 5d 20 69 66 20 79 6f 75 20 66 69 6e 64 20 79  l] if you find y
5ae0: 6f 75 72 73 65 6c 66 20 69 6e 20 74 68 69 73 20  ourself in this 
5af0: 73 69 74 75 61 74 69 6f 6e 2e 0a                 situation..