$Id: NEWS 65 2009-09-18 20:07:26Z carlo $

WARNING: if you are upgrading from NoSQL v2 or earlier I *strongly*
suggest you build the package in a new place (See the INSTALL file for how.)
and test it out carefully with your existing programs. Do _not_ run those
tests against production data, or you may regret it. The only compatibility
between NoSQL v3 and previous versions is that they all use the same table
format. Starting with NoSQL v4 the table header format has also changed,
so no compatibility can be expected between v4 and earlier versions.
The good news is that v4 headers are what they ought to always have been,
so I do not expect further changes in the 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 behavior 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 behavior and command-line interface
of 'jointable' have changed. 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.strozzi.it/cgi-bin/CSA/tw7/I/en_US/NoSQL/Home%20Page

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

