v2.22:

  * datatool-base:

   - Bug fix: removed \@dtl@choptrailingzeroes from
     \@dtl@decimaltolocalefrac (interfering with \DTLround)

  * datatool:

   - added "autokeys" option to \DTLloaddb and \DTLloadrawdb

  * databib:

   - new commands: \DTLbibfieldlet, \DTLformatthisbibentry,
     \DTLpcite, \DTLcustombibitem, \DTLformatbooktitle



v2.21:

  * datatool:

    - Fixed misplaced locations of \dtldisplaystarttab and
    \dtldisplayafterhead within \DTLdisplaylongdb

    - Fixed bug in \dtl@gathervalues that ignored #3

  * databib:

    - Added \gDTLforeachbibentry

    - Fixed bug in \DTLforeachbibentry*

    - fixed typo in documentation
      \DTLforeachbib -> \DTLforeachbibentry

  * datagidx:

    - Fixed bug in \datagidx@parse@location

v2.20:

  * datatool:

   - added \DTLloaddbtex

   - added \DTLifnullorempty

   - added \DTLassignfirstmatch and \xDTLassignfirstmatch

   - Fixed bug in \DTLforeach* (\@dtl@dbname undefined)

v2.19:

  * datatool:

   - changed \\ to \dtldisplaycr in \DTLdisplaydb
     and set \dtldisplaycr to \tabularnewline

   - fixed bug in \glsaddall

  * datagidx:

   - added \glslink

   - defines \@idxitem if not already defined

v2.18:

  * datatool:

   - added check in \dtlsort for existence of specified keys 

   - reverted \DTLpar back to a robust command instead of using \let


  * databib.bst:

    Fixed error caused when article entry journal field missing

v2.17:

 * datatool:

   - added \edtlgetrowforvalue and \DTLfetch

   - added joining two databases in a single table example to user manual

 * databib:

   - fixed packaging of databib.bst

v2.16:

 * datatool:

  - Fixed bug in \@dtl@updatekeys that causes an error when the 
    data contains fragile commands.

 * datatool-base:

  - Fixed bug in \@dtl@checknumerical that causes an error when the
    argument is a command that expands to empty.


v2.15:

 * datagidx:

  - Removed spurious space in \do@locrange

  - Added \loadgidx

  - Added nowarn package option

  - Fixed bug that occurred with locations occurring in
    page-spanning paragraphs.

 * datatool:

  - added \dtllastloadeddb to \DTLsaverawdb etc

  - fixed bug that caused \DTLsaverawdb to perform extremely slowly.
    Now provide \DTLprotectedsaverawdb to save databases that contain
    fragile commands.

  - fixed bug in \DTLminforkeys

 * dataplot:

  - added \dtlplothandlermark 

  - fixed scoping issue with \DTLaddtoplotlegend

v2.14:

 * datatool:

  - fixed bug in \@dtl@updatekeys
    (Bug report: http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=20)

  - fixed \DTLsaverawdb so that it works when there are fragile
    commands in database entries


 * dataplot:

  - refactored \DTLplot to help prevent large data values exceeding
    TeX's maximum dimensions

  - aded tikz calc library as a requirement

 * datagidx:

  - added 'condition' key to \printterms

  - added \postnewtermhook, \newtermfield, \ifnewtermfield,
    \datagidxdb

  - fixed bug in 'gloss' style that displayed multiple "see also"
    lines for entries that have children.

 * Fixed minor typos in user manual

v2.13:

 * Added new package `datagidx'

   - create glossaries/indexes /without/ using an external tool such
     as makeindex or xindy

 * datatool.sty

  - added \dtlsort (like \DTLsort but user supplies custom
    comparison handler).

  - added \DTLgnewdb, \DTLgdeletedb, \DTLgcleardb

  - added \DTLsaverawdb

  - added \ifDTLnewdbonload, \DTLnewdbonloadtrue,
    \DTLnewdbonloadfalse

  - added \dtlparsewords

  - fixed bug in \@DTLnewrow (misspelt \PackageError command)

  - removed spurious space in \@dtl@setheaderforindex

  - removed spurious space in \DTLaddentryforrow

  - removed spurious space in \DTLdisplaydb and \DTLdisplaylongdb

  - removed spurious space in \@dtl@getsortdirection

  - removed spurious space in \@dtl@readline

  - removed spurious space in \DTLrawmap

  - \dtl@setcharcode and \dtl@setlccharcode now check 
    for \@dtl@wordbreak instead of space and tilde

  - \dtl@setlccharcode bug fix (characters without a lowercase
    now correctly dealt with)

  - \dtlicompare and \dtl@teststartswith now use 
    \dtl@setwordbreaksnohyphens to deal with spaces

  - added \@dtlstringnull and \@dtlnumbernull and fixed bug in
    \DTLifnull

  - renamed datatool.pdf to datatool-code.pdf

 * datatool-base.sty

  - added \dtlwordindexcompare

v2.12:

 * datatool.sty:

   - fixed bug in \DTLiflastrow

   - Fixed bug causing spurious space in \DTLloaddb


 * datatool-pgfmath.sty:

   - fixed bug in conditionals.

v2.11:

 * datatool.sty:

   - removed unwanted space in \@dtl@updatekeys

   - fixed typo in user guide (should be \dtlforcolumnidx not
     \dtlforcolumnindex)

   - added \dtldisplayvalign

   - added \DTLaddcolumn

   - added \dtlgetrowforvalue

   - added \dtlupdateentryincurrentrow

   - added \DTLgetrowindex and \dtlgetrowindex

v2.10 (2012/07/18):

 * datatool.sty:

   - Split package into datatool-base.sty, datatool-fp.sty and
     datatool-pgfmath.sty

   - Added package option "math" (math=fp -> use fp.sty,
     math=pgfmath -> use pgfmath.sty)

   - datatool.sty now requires etoolbox (changed commands like 
     \@ifundefined to etoolbox equivalents)

   - Added 'omitlines' option when loading csv file (from patch supplied by Bruno Le Floch
     at:
     http://tex.stackexchange.com/questions/22942/skipping-the-first-line-of-a-data-file-for-pgfplotstable/25133#25133 )

   - \DTLloaddb : adds default column header if missing

   - Added optional argument to \DTLdisplaydb

   - Added omit key to \DTLdisplaylongdb

   - added environment dtlenvgforint

   - added environments DTLenvforeach and DTLenvforeach*

   - added check for at least version 1.2 (2009/10/20) of substr.sty

   - added \DTLassign

   - added DTLnumitemsinlist

   - added \dtlrecombine, \dtlrecombineomitcurrent,
     \dtlreplaceentryincurrentrow, \dtlswapentriesincurrentrow,
     \dtlremoveentryincurrentrow, \dtlappendentrytocurrentrow

   - Rewritten \@dtl@ifDigitOrDecimalSep (code provided by Bruno Le Floch)

   - ensured first argument of \DTLconverttodecimal gets one-level
     expansion in commands like \DTLaddall

   - Fixed \DTLloaddb to work if % used at the start of a row in CSV file.

   - Fixed \@dtl@qlopoff to substitute escaped CSV delimiters

   - Fixed bug in \DTLloadrawdb, which only performed a single
     substitution per line

   - Added \long before \edef in \DTLsubstituteall

   - Fixed bug in \@dtl@getkeyforcolumn (affects
     \DTLgetkeyforcolumn)

   - Changed tab character to ^^I

   - Fixed bug in \DTLloaddb and \DTLloadrawdb when CSV file only contains one column

 * databib.bst:

   - Added eprints field

 * datatool-user.tex (User guide):

   - fixed typo "\value{DTLbibrow}<11" => "\value{DTLbibrow}<10"

   - added section "Operating on Current Row"

   - added remark on using etoolbox to check for empty values

v2.03 (2009/11/15):
 * Added facility to clear or delete a database.

 * Fixed bug in \DTLsavedb that prints duplicate information to file.

 * \DTLreplaceentryforrow expands the replacement value 

 * \DTLappendtorow expands the new value 

 * \DTLnewdbentry : user can choose between expanding or not 
   expanding value before adding to database.

 * Renamed \dtl@columnindex to \dtlcolumnindex so that it can be
   used in the document.

 * Spaces may now occur after commas (but not before) in the 
   assignment part of \DTLforeach

 * Fixed missing backslashes in example in manual (pounds->\pounds)

 * Fixed type in datapie documentation: non-colour option is
   "gray" not "monochrome".

 * Added package "person.sty"

v2.02 (2009/07/13):
 * fixed bug caused by undefined \@dtlifhaskey (should be 
   \@DTLifhaskey)
 * fixed bug caused by undefined \dtl@getcolumnindex (should
   be \@dtl@getcolumnindex)
 * fixed bug in \DTLsavedb that ignores the file name

v2.01 (2009/03/27):
 * fixed bug that ignores descending sort option

v2.0 (2009/02/27):
 datatool.sty:

 * Rewritten database internal representation to make the code
   faster (thanks to Morten H\o gholm for the suggestion)
 * added etex as a required package
 * Database columns can now have an associated header (in addition
   to the key)
 * added \DTLdisplaydb and \DTLdisplaylongdb
 * added \DTLremoverow
 * \DTLloaddb, \DTLloadrawdb:
     - removed unnecessary checks to determine if database 
       exists when adding entries.
     - added optional argument
     - can now also load files without header row
 * \DTLsumforkeys, \DTLmeanforkeys, \DTLvarianceforkeys,
   \DTLsdforkeys, \DTLminforkeys and \DTLmaxforkeys now have a 
   second optional argument
 * added \DTLsumcolumn, \DTLmeanforcolumn, \DTLvarianceforcolumn,
   \DTLsdforcolumn, \DTLminforcolumn and \DTLmaxforcolumn
 * added \dtlforeachkey
 * added \dtlforint and \dtlgforint
 * added \dtlforcolumn and \dtlforcolumnidx
 * added \DTLcolumncount
 * added starred versions of:
   - \DTLifdbempty
   - \DTLnewrow
 * added \DTLifhaskey
 * added \DTLgetcolumnindex
 * added \DTLunsettype, \DTLstringtype, \DTLinttype, \DTLrealtype
   and \DTLcurrencytype
 * added \DTLgetdatatype 
 * removed \@dtl@setidtype
 * removed \@dtl@setkeys
 * removed \@dtl@getidtype
 * removed \@dtl@ifrowcontains
 * removed \dtl@getentryvalue
 * removed \dtl@getentryid
 * added \dtlgetentryfromcurrentrow
 * added \dtlforcolumnindex

 dataplot.sty
 * fixed bug causing ! Argument of \pgfmath@afterquick has an extra }
   error

 databar.sty
 * added \DTLeverybarhook

v1.01 (2007/08/17) :
 * Added databib package.

 * datatool.sty:

   - Fixed bug in datatool caused when certain commands occur
     in database entries or when the data type is tested.
   - Fixed bug in \DTLsubstituteall (caused problems when certain
   - commands occurred in string)
   - Added \DTLsplitstring
   - Added \DTLifSubString and \DTLisSubString
   - Added \DTLifStartsWith and \DTLisPrefix
   - Added case insensitive string tests
   - \DTLinitials and \DTLstoreinitials now work with ~ and \space
   - \DTLinitials and \DTLstoreinitials now use \DTLinitialhyphen
   - Added \dtlcompare (no longer using compare.tex)
   - Added \DTLgetvalueforkey
   - Added \DTLgetrowforkey
   - Added optional argument to \DTLsort
   - Fixed bug causing expansion in \DTLsort
   - Fixed bug in \DTLsdforall and \DTLvarianceforall
   - Removed extraneous spaces in \DTLaddall, \DTLminall, 
     \DTLmaxall, \DTLmeanforall, \DTLsdforall and \DTLvarianceforall
   - Fixed bug in \DTLiflastrow
   - Fixed bug in \DTLremovecurrentrow

 * Manual:
   - added code that produces fig "Student Marks (with average scores".
   - fixed typos in examples "Editing Database Rows" & "Mail Merging"
   - added section on null values

v1.0 (2007/07/23) : Initial Release
