$Id: NEWS,v 1.10 2004/07/11 16:17:12 carlo Exp $

WARNING: if you are upgrading from NoSQL v2 or earlier I *strongly*
suggest you build the package with 'configure --prefix=/some/test/path'
and test it out carefully with your existing programs. Do _not_ run those
tests against production data, or you will regret. The only compatibility
between NoSQL v3 and previous versions is that they all use the same table
format.

  --------------------------------------------------------------------------

Beginning from version 4.0.5, I have started to rewrite in C some of
the programs that were formerly written in AWK. Especially those that
are just wrappers to other system commands and utilities, like 'row',
'sorttable', etc. So far, only a few of them have been rewritten. Of
course they still use AWK for back-end processing, where appropriate,
since rewriting that part in C would be a nonsense. Be warned, though,
that I'm a novice C programmer, so please excuse my poor (and probably
convoluted/flawed) coding style. Improvements are welcome. As a
consequence of the re-writing, the '--add' option of the 'row' operator
has been dropped. I may re-introduce it later, as my C skills improve :-)

I think the rewriting was worthwhile, though, as the new 'row' shows a
200% speed improvement over the old one, and its overall speed is now
close to that of one single AWK process. This is especially noticeable
on large tables, of course. All of the rewritten operators exhibit
similar speed improvements.

  --------------------------------------------------------------------------

Starting from version 4.0.5, the command-line interface of 'sorttable'
has changed slightly. Please check the new behaviour with 'sorttable --help'.
The new syntax is more consistent with the original sort(1) interface.
Also, options '--null' and '--like' have been dropped from the 'column'
operator.

  --------------------------------------------------------------------------

With version 4.0.6 the default behaviour and command-line interface of
'jointable' have changed. Namely, options '-J', '-1', '-2' and '-t' were
dropped, option '-a' has changed, and options '-i' and '-n' were added.
As reported in the associated new help text, all this mess produced the
following improvements:

* Thanks also to the new header format, the efficiency of the operator
  has improved a lot. Its current speed is such that my original plans
  of porting it from AWK to C may no longer be worth the trouble (a
  likely 20% improvement in joining two large tables).

* The new interface is more "sane" with respect to database concepts.
  As explained in the new help text, in relational terms a join should
  occur only between equally-named fields from two different tables.
  Information should be consistent across the whole database. Joining
  makes sense only between a primary key from one table and a foreign
  key from another table. The two fields are actually the very same
  piece of information, so they should always be given the same name,
  and that name should be unique. Enforcing this concept leads to
  consistent database design. Furthermore, a so called "outer join"
  makes sense only with respect to the table in which the join field is
  the primary key. I think that referring it to the second table, i.e.
  to the one in which the join field is a foreign key, is a nonsense
  from a relational perspective, and may even produce a broken table
  header on output. That is why former option '-a 1|2' has now become
  simply '-a', and it always means '-a 1'.

* As explained, in the old implementation there were options that should
  never have been there, while other useful options of the back-end
  join(1) utility, like '-n' and '-i', were missing. Now the situation 
  has been reversed.

  --------------------------------------------------------------------------
Starting from September 2003, the official NoSQL documentation has moved
to the NoSQL Wiki site, that can be reached at the following URL:

  http://www.scriptaworks.com/cgi-bin/wiki.sh/NoSQL

The original documentation contained in the doc/ directory of the distribution
tarball will eventually get out-of-sync with the new one.

You can obtain a (sort of) printable version of the new documentation by
loading the following URL:

  http://www.scriptaworks.com/cgi-bin/wiki.sh/NoSQL/DocumentationIndex?action=publish

  --------------------------------------------------------------------------

