$Id: ChangeLog 78 2014-06-06 20:51:24Z carlo $

Version 4.1.11, June 6th 2014:

* Added a crude datatype-enforcement mechanism to the database schema,
  and modified the 'constraint' operator accordingly.
* Added a useful help text to the 'constraint' operator.
* Added option '--lists' to 'tabletolist'.
* Added detection of the Darwin OS to 'install-sh' and 'src/Makefile' .
* Fixed 'install-sh' not checking for source compilation errors.
* Added a useful help text to the 'muxtotable' operator.
* Added option '--fallback' to 'updtable' and the associated special
  field value "..NIL.." .
* Improved checks for null keys in 'muxtotable'.
* Added option '--no-lock' to 'nblparser'.
* Fixed a ton of bugs in 'nblparser', sure that's not over yet.
* Improved automatic editor detection in 'edittable'.


Version 4.1.10, September 13th 2010:

* Minor changes to 'slapd-bind' and 'slapd-search' to ensure that
  the command PATH contains what is needed when called as a slapd(8)
  shell backend.
* Added option '--all' to 'slapdtonbl'.
* Option "-i" of 'jointable' is now deprecated in favour of "-f",
  as "-i" may be re-used in the future to indicate an input file,
  like most other operators do.
* Changed 'unsorttable.c' to get it compile correctly on Darwin OS.
  Thanks to Mick McQuaid for reporting this problem.


Version 4.1.9, September 18th 2009:

* Added more setup instructions at the end of 'install-sh'.
* Polished the English syntax in a few texts, courtesy of Barrie Stott.
* Added missing workfile's default removal delay in 'tmptable'.
* Added an optional "pattern" argument to 'edittable'.


Version 4.1.8, August 11th 2009:

* Fixed the INSTALL file to explain that the formerly required SWU
  package is now no loger mandatory.
* Changed 'awktable' not to require the AWK program to be enclosed
  in curled braces "{}" when called as 'compute'.
* Added the "setenv" command to the nosql shell wrapper.
* Fixed a typo in 'awktable' when called as 'getrow'.


Version 4.1.7, August 3rd 2009:

* Fixed more bugs in the new 'install-sh' script.


Version 4.1.6, August 3rd 2009:

* Fixed serious bugs in the new 'install-sh' script.


Version 4.1.5, August 3rd 2009:

* Added the 'snapshot' code to 'nosql.version'.
* Removed stale references to 'tablecat' from 'src/Makefile'.
* Fixed a bug in 'itable' about the handling of 'and' and 'or'
  operators in row selection expressions.
* Fixed a buffer overflow in 'awktable' when called with '-c'.
* Dropped the old (and buggy) 'getrow' and 'compute' operators,
  which have been replaced with symbolic links to 'awktable'.
* Fixed the badly broken 'ctime' operator.
* Added the 'unsorttable' experimental operator, based on the
  'unsort' utility, by gatopeich <gatoguan-os@yahoo.com>.
* Fixed a slight inconsistency between 'tabletocsv' and 'csvtotable'
  when handling column names containing characters other than [a-zA-Z0-9] .
* Added dash(1) to the list of shells to look for during install.
* Minor change to 'setnames' to accept also non-ASCII characters
  in renamed column names.
* Made NoSQL independent from the formerly pre-required SWU package by
  including a stripped-down version of the latter with NoSQL itself.


Version 4.1.4, September 24th 2007:

* Added a note to the help text of 'jointable' regarding option '-n'
  not being supported with GNU 'coreutils' 5.2.x and above.
* Changed sort(1) invocation options in 'sorttable' to make them
  POSIX 1003.1-2001 compliant.
* Fixed non working column-level sorting options in 'sorttable'.
* Added option '-n' to 'edittable'.
* Added option '-p' to 'tablecat'.
* Added the 'mysqltotable' experimental operator.


Version 4.1.3 May 2nd 2007:

* Fixed the 'constraint' operator that was still referring to the
  'Attribute' schema column, now renamed into 'Aliasof'.
* Added missing commands to 'nosqlcommands.table'.
* Added experimental function library 'xmllib.awk'.
* Removed the dependency on mawk(1); now the installation program looks
  for mawk(1) first, and then for gawk(1) if it cannot find the former.
* Added iconv(1) option '-f utf-8' in 'ldaptolist'.
* Source files 'misc.c', 'strlist.c' and 'util.h' moved from NoSQL
  to the Shell-Ware Utilities (SWU) package.


Version 4.1.2 March 22nd 2007:

* Added options '-s', '-l', '-u' and '-e' to 'tabletolist'.
* Added the 'ldap' action to NBL.
* Added the 'slapdtonbl' experimental operator.
* Added the 'slapd-search' experimental shell back-end for slapd(8).
* Added dependency on the iconv(1) utility.
* Added option '-c' to 'ldaptolist', and fixed the latter program in
  several ways.
* Added the NOSQL_CHARSET global variable.
* Added the 'slapd-bind' experimental shell back-end for slapd(8).
* Added option '-q' to 'constraint'.
* Fixed non-working '-B' option in 'tabletocsv'.
* Added correct handling of continuation lines in Base64-decoded data
  on the part of 'ldaptolist'.
* Added correct handling of symbolic links to 'edittable'.
* "Attribute" schema column renamed to "Aliasof" in "nblparser" and
  "slapdtonbl", for clarity.
* Fixed a bug in "nblparser" regarding the handling of LDAP schema "Cn"
  columns.
* Tweaked "tabletolist" to force some slapd(8) setups to behave correctly
  with fields containing continuation newlines.
* Added more LDAP query types to "nblparser".


Version 4.1.1 September 10th 2006:

* BEGIN-20-nosql.awk and END-20-nosql.awk renamed into BEGIN.awk and
  END.awk respectively.
* The 'userproc' experimental operator has undergone some incompatible
  changes, see the relevant help text for more info.
* Fixed a bug in option '-N' of 'keysearch', whereby specifying said
  option triggered the command usage message.
* Fixed a bug in 'gregorian', whereby the julian equivalent of
  '2006-09-13 16:12:00' became '2006-09-13 16:11:60'.


Version 4.1.0 September 7th 2006:

* Fixed a paging problem in the new editing format used by 'edittable'.
* Added the 'widest' operator and fixed more bugs in new 'edittable'.
* Added the 'frametable' operator.
* Added Steve Summit's 'bsearch' utility and adapted 'keysearch' accordingly.
* Minor fixes to 'keysearch' and 'seektable'.
* Added automatic support for Hobbs' RDB input format to 'rdbtotable'.
* Changes in 'nblparser' make the operator incompatible with previous
  versions. Please consider this operator still experimental and unstable.
* Added the 'makeschema' operator.
* Added options '-r' and '-c' to 'awktable'. See the 'BUGS' file for more
  information.
* Added options '--help' and '--version' to the 'nosql' shell wrapper.
* Added the 'sqlitetotable' operator.
* Fixed handling of option '-t' by 'keysearch'.
* Hopefully fixed the annoyng paging behavior of 'prtable'. Thanks
  to Michael Somos for his help with this.
* Minor tweaks to 'install-sh'.
* Fixed spurious blanks inserted in the rightmost column by 'frametable'.
* Renamed 'uniontable' to 'tablecat', and added a true 'uniontable'
  operator that is able to perform the equivalent of the SQL construct
  "UNION ALL". If the input tables of the new 'uniontable' have the same
  structure, as it was required by the old operator, this change should not
  break your old programs, unless they call 'uniontable' with option '-f',
  an unlike event. Unfortunately the new 'uniontable' is much slower than
  the old one. If you need efficiency in concatenating several tables
  having compatible structures then you should make your programs use
  'tablecat'.
* Added 'nosqllib.awk', 'userproc.awk' and the 'userproc' operator.
* Added the 'constraint' experimental utility.
* Fixed missing initial '\001' from 'maketable' when option '-o' was used.
* 'nosqllib.awk' broken up into 'nosqllib.awk', 'mainloop.awk',
  'BEGIN-20-nosql.awk' and 'END-20-nosql.awk'.
* NoSQL now depends on the external package SWU (Shell-Ware Utilities),
  to which a few former NoSQL commands and libraries have been moved.


Version 4.0.15 May 30th 2006:

* Introduced an easier editing format in the default behavior of 'edittable'.
* Option '-a' of 'edittable' and option '-H' of 'addrow' now use the '='
  character for highlights, as opposed to '#'.


Version 4.0.14 April 24th 2006:

* Fixed a bug in 'muxtotable' regarding null '-s' pattern.
* Added option '-P' to 'nblparser'.
* Version control switched from cvs to subversion.


Version 4.0.13 March 10th 2006:

* Fixed a bug in 'csvtotable' about a misleading NR value in error message.
* Fixed a bug in arguments passed by 'deptable' to the back-end 'getcolumn'.

* Licensing: due to the current debate on the upcoming GPLv3 vs. GPLv2,
  I have decided to amend the NoSQL copyright terms to explicitly state
  that the the only valid version of the GPL as far as NoSQL is concerned
  is GPL version 2 dated June, 1991 (ie GPLv2, not v2.2 or v3.x or whatever),
  unless explicitly otherwise stated. This change is effective starting
  with NoSQL version 4.0.13-20060226, February 26th 2006.

* Fixed a rather subtle bug in 'jointable', caused by the selection
  of the improper delimiter ":" in multi-field joins. Now I have
  changed the delimiter to octal "\001", which seems to be more
  appropriate.


Version 4.0.12, January 10th 2006:

* Added the 'nosqlcommands.table' documentation file,
  kindly contributed by Michael Somos.
* Added option '-s' to 'totaltable'.
* Added case-insensitive matching on attribute names to 'ldaptolist'.
* Minor improvements to documentation files, courtesy of Michael Somos.
* Added option '-s' to 'muxtotable'.
* Minor improvement in the '--highlight' option of 'addrow'.
* Added auto-removal of highlights to 'edittable'.
* Fixed a bug in the 'remember-as' statement of NBL.
* 'getrow' and 'compute' are now deprecated in favour of 'awktable'.
* Patched 'install-sh' and 'src/Makefile' to allow for better
  specification of the target installation directory, as suggested
  by Jim Hart.
* Fixed a couple of gcc(1) warnings for missing includes in jointable.c.


Version 4.0.11, April 8th 2005:

* Improved the 'updtable' operator to support table keys on multiple
  columns.
* Dropped option '-d' from 'updtable' and added options '-K' and '-n'.
* Added option '-e' to 'nltable'.
* Added automatic key column detection based on file-names.
* The 'jointable' operator has been split into a C wrapper and
  an AWK back-end. The old AWK-only script had ended-up with requiring a
  few system() calls, thus causing it to spawn six processes in total.
  The rewriting has reduced the no. of processes to four, and it seems
  also to have cured a few hard-to-trace random problems in the old
  script. Those problems were probably due to timing and machine-load
  issues that were causing some instability and unpredictability in the
  interactions between the front-end AWK script and the back-end shell
  processes.
* Added option '-S' to 'searchtable' and 'keysearch'.
* The Soundex algorithm that I used was broken, it should be ok now.
* Added variable-length Soundex codes to 'soundex' and 'keysearch'.
* Added option '-x' to 'keysearch'.
* Changed 'maketable' to accept column-level comments on multiple lines.
* The new 'jointable' based on FIFOs was subject to random hangs.
  To make it stable I had to turn the FIFOs into temporary files.
* Fixed a justification bug in 'prtable' when switching from integer to
  float.
* Fixed a bug in the '-i' option of 'awktable'.
* Re-introduced the old 'envtotable' operator, that had been dropped
  a few versions ago.
* Added option '-N' to 'listtotable'.
* Fixed a bug in the multi-column key handling code of 'updtable'.
* Added option '-R' to 'istable'.
* Index files produced by 'indextable' have now '._x.' instead of '.x.'
  in their file name. This was done because 'x' can also be a valid
  column name, and the old convention was potentially confusing when
  used in conjunction with the new key name auto-detection feature
  of NoSQL.
* Added LC_ALL=POSIX in 'filtertable' when the operator is requested
  to run either sort(1) or join(1). This bug was causing 'edittable'
  not to sort properly on the primary key of the table being edited.
* Added option '-D' to 'nblparser'.
* Added the 'muxtotable' experimental operator.
* Added support for columns in comma-separated format to 'sorttable'.
* Fixed a "..." string runaway error from AWK in 'getrow'. The error
  was triggered by conditions such as: $(1)=="strig"{_nosql_nr++;...
  as reported by 'getrow -x'. Apparently " and { must be spaced, i.e.:
  $(1)=="strig" {_nosql_nr++;...
* Fixed a bug in 'getrow', that was producing a broken table on
  output when multiple columns with the same name were present in the
  input table.
* Added table auto-detection to 'muxtotable'.
* Fixed another bug in 'updtable'.
* Fixed a parsing error in 'getrow', when a literal contained a
  valid column name.
* Added option '-p' to 'addcolumn'.
* Added option '-m' to 'tabletolist'.
* Added the 'muxtosql' experimental operator.
* Added the 'psqltotable' experimental operator.
* Made several operators strip trailing blanks from field values by default.
* Fixed another bug in the parser section of 'getrow' and 'compute',
  when dealing with quoted column names.
* Added the NOSQL_DEBUG environment variable.
* Fixed under-estimated ALLOCSIZ value in 'getrow' and 'compute'.
* Fixed a bug in the '-o' option of 'tabletocsv' and 'tabletordb'.
* Added option '-B' to 'tabletocsv'.
* Added option '-r' to 'tabletordb'.
* Added option '-n' to 'tabletordb'.
* Fixed a bug in the hidden field handling code of 'nblparser'.
* Added options '--show-copying' and '--show-warranty' to most of
  the NoSQL operators.
* Fixed wrong handling of '-r' option in 'getcolumn'.
* Made some improvements to 'nblparser'.
* Added the 'setnames' operator.
* Added 'unique-by' to NBL.
* The never-ending story of bugs in the parser code of 'getrow'
  and 'compute', again. And more to come, for sure.


Version 4.0.10, August 10th 2004:

* Added the 'ldaptolist' experimental operator.


Version 4.0.9, August 8th 2004:

* Fixed a bug in the '-f' option of 'rename'.
* 'jointable' has been changed to support joining on multiple columns.
  This is still experimental and needs a lot more testing, especially
  on non-Debian platforms.
* Fixed non-compliancy in 'tabletocsv'. This has caused the operator to
  loose backward-compatibility, also in command-line options. Please
  refer to 'tabletocsv --help' for more info.
* Added the 'csvtotable' operator.
* Added the 'usleep' utility, used internally by 'jointable'.
* Added option '-r' to 'istable' and 'islist'.
* Added option '-n' to 'numer'.
* Option '-i' of 'search' was changed into '-I', for consistency
  with '-i' meaning 'input' in most other operators.
* Added the 'seektable' operator.
* Added option '-I' to 'keysearch' (requires 'seektable'), to enable
  searching with secondary indices.
* To provide better supporto for Linux distributions that abide by the
  Filesystem Hierarchy Standard (FHS), a number of operators have been
  renamed to make them less likely to collide with equally-named common
  utilities. The old names have been left in place in the form of symbolic
  links, for backward compatibility, but it will be up to distribution
  maintainers to decide whether to set up those symbolic links or not.
* Added the 'summtable' operator.
* Added the 'itable' utility.
* Added the 'formtable' operator.


Version 4.0.8, 11 July 2004:

* Added option '-r' to 'column'.
* Changed 'Table' into 'Relation' in the database schema, and
  modified 'nblparser' accordingly.
* Added options '-a', '-k' and '-K' to 'maketable'.
* Added option '-a' to 'islist' and 'istable'.
* Fixed a bug in 'jointable' '-a' option.
* Improved output paging behavior of 'prtable'.
* Fixed a bug in the 'nosql' shell wrapper.
* Added option '-t' to 'total'.
* Fixed a buffer overflow in addcol(), on tables with many columns.
* Added option '-s' to 'gregorian'.
* Added option '-f' to 'rename'.
* Added supporto for multiple renames 'rename'.
  See 'rename --help' for more.


Version 4.0.7, 09 October 2003:

* Added option '-s' to 'number'.
* 'tabletolist' options '-c' and '-C' are now deprecated in favour of
  '-F' and '-N' respectively.
* Added option '-j' to 'tabletolist'.
* Plugged a major security flaw in 'nblparser'.
* Added option '-H' to 'addrow'.
* Added option '-a' to 'edittable'.
* 'tmptable' long option '--delay' changed into '--delete'.
* Added option '-d' to 'nblparser'.
* The official NoSQL documentation is now available in the form of
  a Wiki site at the following URL:
  http://www.strozzi.it/cgi-bin/CSA/tw7/I/en_US/NoSQL/Home%20Page
* Minor changes as suggested by David Frey, as a consequence of the
  Debianisation process.
* Added option '-n' to 'nblparser'.



Version 4.0.7-rc2:

* Added the 'nblparser' experimental operator.
* The 'union' operator has been ported to C, and its '-a' option has
  been changed to '-f', for clarity.


Version 4.0.7-rc1:

* Documentation licensing switch from FDL to GPL.
* Added an experimental 'awktable' operator, kindly contributed by
  Micah Stetson. 'awktable' which is mainly a scripting tool, can
  be seen as a flexible replacement for both 'row' and 'compute'.
* 'istable' and 'islist' now check also for duplicated column names.


Version 4.0.6 - 15 July 2003, by Carlo Strozzi

* Corrected a few typos in texts.
* The command-line interface to 'jointable' has changed.
  Please refer to the NEWS file for more info.
* Added the 'notcolumn' operator as an alias for 'rmcolumn'.
* Added simple report formatting capabilities to 'total'.
* Main documentation kindly revised and corrected by Thomas Miller.
* Fixed a bug in the parser() function used by 'row' and 'compute'.
  The function was failing of the last character of statements like
  "some_column=some_other_column".
* Fixed a bug in the 'sorttable', whereby when realloc(3) was called
  by addarg() on h->args a partial buffer overwrite occurred.
* Fixed a bug in the 'nosql' shell wrapper, as it was possible to
  run any shell command through it, and not just NoSQL operators.
  Not a big problem actually, but not very useful/sensible either.
* A completely rewritten version of the 'column' operator was kindly
  provided by Micah Stetson.
* Re-introduced option '-n' in 'maketable'.


Version 4.0.5 - 19 April 2003, by Carlo Strozzi

* Removed useless noise printed by 'search' to STDERR.
* Minor changes to the documentation.
* A few operators have been re-written in C. As a consequence,
  I had to make a few incompatible changes to the command-line
  interface of some of them. See the NEWS file for more details.
  Such changes involve rarely-used options, though, so their
  impact should be limited.
* Re-introduced the ChangeLog file, for GNU compliancy.
* Introduced the 'keysearch' experimental operator.

