
List of known NoSQL bugs:

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

'envtotable' prints empty values for NOSQL_INSTALL, NOSQL_STDOUT and
NOSQL_STDERR environment variables even if such names do not appear
in the program environment at all. I don't know where they come from!
I suspect that, at least with mawk(1), referencing an undefined array
element causes that element to pop into existence, albeit with an empty
value. The effect of this behavior, although annoying, should not be
harmful; if the referenced element is not-null then it will appear on
output with the correct value, otherwise it will show up with an empty
value.

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

The original 'compute' and 'getrow' operators that used to come with
NoSQL contained a small parser that turned expressions based on column
names into expressions based on column positions, as needed by the
underlying AWK interpreter. Such a parser was far from perfect and was
actually proven to be buggy on several occasions. Consequently, every
time it was changed to fix bugs it tended to break elsewhere. The proper
way of doing things is the one applied by the 'awktable' operator,
kindly contributed by Micah Stetson, that was not available at the time
when 'getrow' and 'compute' were written. Beginning with version 4.1.15
'getrow' and `compute' are now symbolic links to `awktable'. When called
as either 'getrow' or 'compute', 'awktable' will interpret expressions
based on plain column names, such as 'Name', without the need to prepend
a dollar sign to them, as in '$Name'. Please consider that the way this
is handled makes 'awktable' much slower and it is meant mainly to be
used interactively at the command-line, where speed can often be traded
in for comfort. Application programs and scripts should always use
'awktable' and its native syntax.

-- TODO: explain awktable's native syntax.

Replacing the old 'getrow' and 'compute' with symlinks to a properly
modified 'awktable' introduced the following compatibility issues that
a NoSQL user must be aware of:

1) Option '--input' was dropped in favour of '-i' .
2) Options '--output' and '-o' are no longer supported.
3) Option '--no-header' was dropped in favour of '-N' .
4) Option '--help' was dropped in favour of '-h' .
5) Options '--debug' and '-x' were dropped .
6) getrow's options '--not-empty' and '-e' were dropped .
7) getrow's options '--test' and '-t' were dropped .
8) getrow's options '--key' and '-K' were dropped .
9) getrow's options '--first-match' and '-f' were dropped .


Some further remarks are in order:

1) Due to how 'awktable' and AWK work, referring to plain names does not
   work inside the BEGIN{} block, so if you need names to work in
   there also then you must use $Name. Also, either use plain names
   in your script or use the native syntax, since mixing them will not
   produce the expected results in most cases.

2) Expressions to be evaluated can be passed to either 'getrow' or
   'compute' only on the command-line and not in a file (as would be
    possible with 'awktable ... -f program-file').


Please make sure you have inspected your pre-existing NoSQL applications
and modified the as needed prior to upgrading to version 4.1.15 .

