
                        Qddb 1.43 (GNU version)

This is the Qddb 1.43 GNU release.

If you program in Qtcl, you should read this very carefully.
Most Fx scripts will run with little or no change, depending
on whether you are using Itcl 1.5 or Itcl 2.X.   We *strongly*
recommend using itcl2.2 (the current release).

Unfortunately, the integrated spreadsheet did not make 1.43
due to time constaints.   It will probably be released as a 
patch to 1.43 or in 1.44.

See the new Qddb home page at http://www.hsdi.com/qddb for
the latest release information.

=================================================================

What's new in Qddb 1.43 over 1.43 Beta 2?
-------------------------------------------

1. Several bug fixes

2. New Schema option: Use Condensed Indexing
   This option reduces the size of all the index files
   25-50% by using base-62 integers instead of base-10.

What's new in Qddb 1.43 Beta 2 over Beta 1?
-------------------------------------------

1. New features for the report generator.
	a) Range analysis (sum/avg/stddev etc) on ranges
	b) Dates and strings can now be used on the X-axis
	   for range comparisons.  Dates can be displayed in 
	   any format that strftime can handle, plus you can 
	   specify ranges for summaries:
		%m       : month of year
		%d       : day of month
		%y       : year
		%y/%m    : year/month
		%y/%m/%d : year/month/day
		%w       : day of week
		%W       : week of year
		%H       : hour of day
	   and so forth.   Dates are processed with the range 
	   specification, and like values are lumped together 
	   for sum, avg, stddev, min, max, count, or prod 
	   operations on the Y values. The X-axis is sorted by
	   ascii comparison.     Some examples of aestheticly
	   pleasing range/format pairs might be:
	        Range: %m          Format: %b
	        Range: %w          Format: %a
		Range: %y/%m/%d    Format: %d/%m/%Y

	   Strings on the X-axis are lumped together by their value
	        "A" "Fox" "Trot" "etc."
	   and sorted by ascii comparison.  The "Range:" and "Format:"
	   are ignored for string comparisons.

	   Numbers (integers and reals) can be lumped together
	   by numeric range (2.5, 87, ...) and sorted by numeric
	   comparison.   The "Format:" is ignored for integers,
	   and denotes the precision to the right of the decimal
	   for reals (default is 0).
	c) Font settings for ticks and titles

2. Some fairly minor bug fixes in the qddb_table code and in Fx.

3. New "qddb_table summary" command to generate quick summaries on
   existing tables, suitable for display in a graph or barchart.

4. Some minor performance enhancements

5. Fx windows should now properly handle the Wm DELETE event.

6. Key binding fixes for itcl2.2/tcl7.6/tk4.2

7. Handles Cut/Paste properly for itcl2.2 and friends.

8. Fixed a bug that caused 'qddb_rows select -suppress on' to 
   print garbage instead of omitting the row values.

9. New "qddb_util datestyle" command to select between US and
   European default styles.   This command switches the handling
   of the ambiguous numeric dates "%m/%d/%y" <=> "%d/%m/%y" and
   "%m-%d-%y" <=> "%d-%m-%y".    The style is now user-selectable
   through nxqddb and all Fx-based programs, as well as the
   environment variable QDDB_DATESTYLE:
       QDDB_DATESTYLE=us
   or
       QDDB_DATESTYLE=european
   The compiled default is overridden by the environment variable,
   and the environment variable is overridden by the user's selection.

10. Several new date input formats:
       Jan-10-96, 10-Jan-96
       Jan/10/96, 10/Jan/96
       Jan.10.96, 10.Jan.96
       31 Jan, 1996
       12/31/96,  31/12/96 (ambiguous, resolved by date style)
       12-31-96,  31-12-96 (ambiguous, resolved by date style)
       12.31.96,  31.12.96 (ambiguous, resolved by date style)

11. New Schema option "maxmem=<integer>" to specify
    the maximum Kbytes of RAM that that should be
    consumed during stabilization (roughly).   Overrides
    --enable-maxmem=XXX.
    
12. New Schema option "Use ExcludeWords" to specify
    that the file "ExcludeWords" contains a list of
    newline-separated words to be excluded from
    indexing.

What's new in Qddb 1.43 Beta 1 over Alpha 4?
--------------------------------------------

1. The report generator is fully integrated with the Fx
   toolkit and nxqddb(1).   The report generator will work
   without BLT, but you won't be able to use graphs and
   barcharts.   Currently, the report generator is *only*
   available if you use itcl2.X.   We are debating whether
   to add support for the old itcl1.5 interface.   Please
   let us know if you really need it for itcl1.5.   We have
   been using itcl2.1 and itcl2.2.

   Major features of the report generator:

   You can combine multiple searches and a search
   results configuration to build reports in various
   forms.    We currently provide the following formats:
      i) Listing - Listing of the table produced by each search,
         with optional summary of numeric columns for each table.
     ii) Postcards - You can generate postcard-size letters
         suitable for printing on a dot-matrix print and
         postcard forms.
    iii) Letters - You can generate letters, either in
         a free-form or preformatted way.   The free-form
         letters give you the ability to surround things
         like greetings with TeX or Troff.
     iv) E-mail - You can generate e-mail.
      v) Graphs - You can designate two columns of your
         tables to be used in building interactive graphs.
         The graphs can be dynamically reconfigured for
         different columns, colors, etc.
     vi) Barcharts - You can designate two columns of your
         tables to be used in building interactive barcharts.
         The barcharts can be dynamically reconfigured for
         different columns, colors, etc.

2. A couple small bug fixes in Fx/nxqddb.

3. Tested with the new itcl2.2.   BLT requires one modification
   (besides the Makefile) to work with itcl2.2.   Bgexec has an
   obsolete call in it.    Itcl2.2 seems very stable so far.

4. A real user's manual!   It's not yet complete, but it's already
   around 100 pages.    Fx applications (and nxqddb in particular)
   will be fully documented.   Should be available in mid December.

What's new in Qddb 1.43 Alpha 4 over Alpha 3?
---------------------------------------------

1. The Hx toolkit for CGI forms and searching.
   The basic tools provide:
        a) Entry/search form building; I think this is
           pretty nice to use.
        b) Easy CGI search parsing (1 command does it all)
        c) Limited search results configuration 
        d) Output can either be formatted by you, or Hx
           provides the following nice formats:
            i) HTML tables
           ii) Formatted listings
           (All output is easily customizable.)
   See Hx(n) for more details.

2. Several small bug fixes

3. New command: "qddb_keylist range" - returns a range of nodes 
   matching a fixed number of tuples.  This command gives you 
   the ability to build tables and rows in small increments
   if you like.


What's new in Qddb 1.43 Alpha 3 over Alpha 2?
---------------------------------------------

1. The -attrs option to qddb_rows select is now obsolete; if 
   it is used, Qddb uses the old semantics of using only 
   those attributes as the list of significant attributes.   
   The new method keeps the lists of significant attributes 
   available from the keylist operations.   In particular, no 
   extra effort is now required to perform proper unions of 
   dissimilar attributes.

2. "qddb_util isregexp" for checking whether a given string
   is a valid regular expression.

3. Several bug fixes in the Fx toolkit dealing with the
   new table structure and/or itcl-2.1.   Also several
   minor bug fixes in the table code.   If you have reported
   a bug, it should be fixed in this release.   Let me
   know if it isn't.

4. qddb_search word has a new option "-parsing on|off" to
   specify whether the default behavior of parsing words
   based on the separators is desired.

5. New printing option "Preview to screen" that allows you to
   view anything that you can print.

What's new in Qddb 1.43 Alpha 2 over Alpha 1?
---------------------------------------------

1. Many configuration fixes

2. Many little bug fixes

3. Full support for Tcl 7.5 and Tk 4.1 (with itcl1.5 or itcl2.1)
   Extensive testing for itcl2.1.    

   NOTE: there was a funny problem with Tk4.1.   Apparently, Tk 
   4.1 explicitly resets the focus on a toplevel after returning
   from a menu command.    The fix was to carefully trigger a
   focus command using "after idle" and make sure that no routines
   call "update idletasks" after that.   If this is not properly
   done, you will occasionally see TWO fields that appear to have
   the focus.   Only one will really have the focus, of course,
   but it is confusing.   If you see this problem when using
   Tk 4.1, please send a bug report.

4. User-defined columns for search results.   You can now define
   calculated columns for the search results based on numeric
   columns or other calculated columns.    This feature is
   available via the "Configure->Search Results" menu item.

5. New schema option "Use Cached Secondary Search".   This option
   significantly speeds up the searching the instable parts of
   the database at the expense of some memory and an extra
   lookaside file "SecondaryCache" (see the Schema.5 man page)


What's new in Qddb 1.43 Alpha 1?
--------------------------------

TABLE ABSTRACTION
---
 1. New Tcl command (qddb_table) that provides a generic table
    abstraction suitable for driving spreadsheets, reports, generating
    HTML tables, etc.    This abstraction is also more intuitive 
    for people used to using traditional relational databases.
    There are some examples in the 'qddb-<version>/test/' directory.

 2. New Tcl command (qddb_rows all|select -format table) that returns 
    a table descriptor suitable for use with qddb_table.
---

 3. The Fx toolkit now uses the table abstraction to speed up
    sorting and display of search results.

 4. Itcl 2.0, BLT 2.1 support (./configure --with-itcl2 --with-blt)
    BLT 2.1 is required if you use BLT with Itcl 2.0.   Unfortunately, if
    you use Itcl 1.5 and BLT 2.1, there is some incompatibility because 
    George removed the blt_ prefixes from the non-itcl2.0 version. I took
    the liberty of putting the prefixes back with an indirect function call
    so you can use either 'blt_busy' or 'busy'.   The other blt_* commands
    are also there.   Fx uses the prefixes as before.  The itcl2.0 version
    uses blt::busy, etc.
  
    NOTE: IF YOU PLAN TO USE ITCL2.0, PLEASE READ THE FILE:
        qddb-<version>/Notes/NOTES-itcl2.0
    NOTE: IF YOU PLAN TO USE ITCL2.1, PLEASE READ THE FILE:
        qddb-<version>/Notes/NOTES-itcl2.1

 5. Date parser now supports @firstofmonth(date) and @lastofmonth(date).
    Things like:
 	a) @firstofmonth(last month)
	b) @lastofmonth(today -1 month -1 year)
    are now valid dates.

 6. TkTable's command is now 'tktable' instead of 'table' to avoid
    naming conflicts with BLT 2.0 and possibly other extensions.  The
    widget class is now TkTable.   Sorry about that, I didn't see a 
    better way around it.

 7. Reorganized the source tree to accomodate upcoming perl/python
    programming language support.

 8. Speed and memory use enhancements - you can search for 1000s of
    tuples now without running out of memory too quickly.   'qddb_rows
    select -flush on -sortby {...}' now works properly.

 9. When including TclX, we don't use the special TclX autoloading 
    mechanism because it seems to break things.

10. In the Fx searching mechanism, the SearchProc uses a table instead
    of the standard row result of 'qddb_rows select'.    This speeds the
    formatting of rows considerably.   All the Fx_Menubar *LastSearch 
    and *SetLastSearch methods accept and return table descriptors.  You
    must use 'qddb_rows select -format table -rowdescs on' when setting
    the last search results.

11. When you view the 'last search results', by default, the row values
    are not refreshed.   This means you might be viewing stale data if
    someone else (or you) modified any of the tuples in the search 
    results.  The new default is significantly faster if you have many
    rows in your last search results.   Instance views are still always
    refreshed.

12. Optional line numbers for search results and instance views.

13. More formatting options for search results and instance views.

14. qddb_util flock|funlock <file desc>

15. Instance views are now properly updated to reflect the state of 
    any other displayed instance views above them in the schema hierarchy.

16. Search results configuration does not kill the last search results or
    change modes.

17. Performance has been greatly increased when dealing with very large
    tuples.


