1 June 1998   2.0.4.1
-------------------------

	mSQL
	====

	o Fixed problem with new Remote_Access option not setting IPsock
	  to -1 (so the server was selecting on stdin due to IPsock
	  defaulting to 0)


	Lite / W3-mSQL
	==============

	o Fixed variable initialisaton for data passed through GET or
	  POST
	o Re-applied Jeff Staege's patch for multi-part form data



29 May 1998   2.0.4
-------------------------

	mSQL
	====

	o Added query optimisation for single entity sub-conditions to
	  unfold them into the main condition for inclusion in the 
	  optimsation loop.
	o Enhanced optimiser to determine the optimum order in which
	  multiple tables within a join should be processed based on
	  the frequency of comparisons between the tables.  This
	  overcomes many problems associated with slow processing of 
	  badly written queries.
	o Optimised temporary table creation for added performance in
	  joins, ordering and distincting.
	o Added in-core AVL Tree support
	o Added fast AVL Tree based sorting
	o Added fast AVL Tree based distinct processing
	o Optimised packet formation to increase the performance of the
	  API library
	o Fixed potential connection leak for failed connection attempts
	o Fixed null-termination problem for hostname lookups on Linux (core)
	o Fixed field wildcarding in joins
	o Fixed obscure problem where joining using table aliases,
	  conditions on the same fieldname from different tables and an
	  index on the inner join loop produced incorrect results
	o Fixed problem with NULL handling in packetization of result
	  data when sending to the client
	o Fixed rounding errors in the MONEY type caused by various
	  standard C library routines
	o Reverted to original map region syncer avoiding sync() if the
	  system has msync()
	o Forced an msync() prior to all munmaps() as some systems
	  appear not to force a sync while unmapping
	o Standardised NULL representation in data file to simplify 
	  row processing
	o Modularised code for better co-existance with the "research"
	  code branch
	o Better support for setuid versions of the backend
	o Fixed mis-handling of certain conditions in msqlDateOffset
	o Added prototypes for remaining date / time API functions
	o Fixed host lookup mismatch in client check
	o Changed unknown config entries to a warning rather than a
	  fatal error.
	o Added configuration entry for Local_Access (i.e. UNIX domain
	  access) to config handler and server startup code.
	o Added configuration entry for Remote_Access (i.e. TCP/IP
	  access) to config handler and server startup code.
	o Fixed problem with re-rentrant calls to gethost* routines
	  when accepting new connections.
	o Fixed possible core dump when accepting a remote connection
	  from a client that has a reverse nameserver entry but does
	  not have a forward entry
	o Further linting and prototyping
	o Added read timeout code to stop denial of service attacks
	  against the server.
	o Fixed core dump when invalid system var names are passed
	  through to createTmpTable() during a join, sort, or distinct.



	Lite / W3-mSQL
	==============
	o Fixed memory leak in regex handling
	o Fixed limitation on amount of data being passed into a
	  W3-mSQL page from a POST or a GET
	o Added bindings to msqlLoadConfigFile() to the mSQL module
	o Added expandText() to the standard module so that text with
	  embedded variables can be loaded from a file and "evaluated"
	  using the current value of the variables.
	o Adding missinget </CENTER> tag from footer output
	o Fixed code generation for "complex" math expressions so that
	  expressions like 2 - 1 - 1 + (int)"10" - (2 * 2 + (int)"1")
	  work from left to right rather than right to left
	o Added support for the money type to the lite VM
	o Added O_BINARY to opens for OS/2
	o Rolled in Jeff Staege's patch for multi-part form data
	o Fixed handling of NULL mSQL field values in the array return
	  by msqlFetchRow()


7 Oct 1997   2.0.3
-------------------------

	mSQL
	====

	o Fixed cpp problem on build (compilation failed on some systems)
	o Fixed infinite loop problem when updating an index value using
	  the index as the condition
	o Fixed core dump when using a sub condition in conjunction with
	  and index for row selection
	o Replaced hard coded make with $(MAKE) in makegen macros



        Lite / W3-mSQL
        ==============

	o Fixed several queries in msql-auth that did not include the
	  namespace to which they applied.


	

22 Sep 1997  2.0.2
-------------------------

	mSQL
	====

	o Rolled in Bob Sum's patches
	o Fixed translation of missing numerci values to NULL in msqlimport
	o Fixed floating point rounding problems with money values
	o Fixed denial of service attack problem with malformed protocols
	o Fixed core dump if overflow buffers of a TEXT field extend 
	  beyond the mapped region during an update
	o Fixed core dump when query string is longer than the debug buffer
	o Fixed SNI security concerns regarding buffer overflows
	o Added forward name lookup testing of hostnames during ACL checks
	o Fixed handling of reals, money and time in DISTINCT queries
	o Fixed server memory leak in certain mmap errors
	o Fixed memory leak in API library for empty selects
	o Fixed problems with updating and index where the index is in
	  use by the update query (i.e. in the where clause)
	o Changed the memory syncher to force a remap rather than using
	  msync as Linux appears to not sync the mapped regions.
	o Fixed an mmap region leak
	o Fixed problem where connection could be reached due to errors
	  causing session to abort
	o Fixed problem with TCP Port number in bcmp during host_lookup
	  (when host_lookup = false).  Thanks for the note Dirk.

	# Code branch for experimental development



  Jun 1997  2.0.1
-------------------------

	mSQL
	====

	o Modified select loop range handling to avoid potential
	  infinite loop searching for active sockets
	o Forced a mode of 0777 on the UNIX socket just in case
	o Rolled in completed Win32 portability
	o Fixed comparison of negative time/date values
	o Fixed matching of null values to 0
	o Fixed handling of null values in conditions other than
	  equals and not-equals
	o Fixed value overwriting when updating the value of a TEXT
	  field that was originally set to NULL
	o Fixed integrity of the overflow buffer on deletion of table
	  Rows containing NULL text fields.
	o Fixed non-unique index error when updating a row using the
	  index for row selection
	o Fixed wierd "field cannot be null" errors when inserting valid
	  data into not-null fields.
	o Fixed CHAR and TEXT comparison problem where the in-table
	  value fills the entire field width and the literal value
	  is longer than the field width (sub string match problem).
	o Fixed generation of values for _sysdate and _systime
	o Fixed handling of system variable like _systime for queries
	  on empty tables
	o Fixed problem in msqlDateOffset()
	o Rolled in Bob Sum's *LIKE fixes.  Some of the NULL handling
 	  code replaces the above mentioned NULL fixes.
	  
	



	Lite / W3-mSQL
	==============

	o Fixed definitions of HAVE_DYNAMIC
	o Added performance optimisations
	o Fixed strseg() handling of strings shorter than the specified
	  substring.



	Misc
	====

	o Updated doco for 2.0.1
	o RTF version of documentation replaced by HTML.  The
	  translation is still very rough and the PostScript version
	  should be used where possible.
	o Added testing for sys/timeb.h to the configure script




8 Jun 1997  2.0 Release
-------------------------

	mSQL
	====

	o Fixed minor read overflow in AVL tree initialisation
	o Further optimised index selection during candidate setup
	o Fixed memory leak in sub-condition handling
	o Fixed bug in handling of reversed ident conds in inner loop 
	  condition when using an index for the inner loop of a join
	o Fixed unique index handling problem
	o Fixed bug in comparison with some system variables
	o Fixed pre/post increment problem of sequences during query
	  execution
	o Fixed handling of TIME and DATE fields in msqldump
	o Fixed core dump where and index fields is compared to an IDENT
	  values who's value is NULL during a join.
	o Fixed core dump in certain situations if the value passed to
	  an index based condition is longer than the field length.
	o Fixed bug in the sorting of real values
	o Fixed obscure bug in resetting an index value to the same value
	  if that index was used for the lookup and the index node
	  contained duplicate values
	o Optimised index updates so that indices are only modified if
	  the value has actually changed
	o Made cache invalidation consistent
	o Added "copy" and "move" to msqladmin
	o Added section based name spaces to the config routines
	o Added further configuration output to "msqladmin version"
	o Rewrote msqlimport from scratch
	o Added date / time format routines to the API library



	Lite / W3-mSQL
	==============

	o Added .shtml as a valid HTML suffix for W3-mSQL processed files.
	o Added @variable for accessing global symbols from a local
	  namespace (e.g. using globals from within a function)
	o Fixed core dump when adding an empty function to a lite library
	o Fixed double contraction of \\ escapes




8 May 1997  2.0 Beta 7
----------------------

	mSQL
	====

	o Added test for "make target" before performing a build
	o Fixed unique index handling if updating the index value with
	  itself
	o Fixed access control for UPDATE queries
	o Fixed core dump if _rowid > numRows given in a select
	o Fixed problem with incorrect precision in update of real fields
	o Forced debug initialisation messages to stderr


	Lite / W3-mSQL
	==============

	o Fixed handling of multi-value web form data (i.e. multi-select
	  lists) during the casting of the values to an array.
	o Upgraded limits in W3-mSQL passed variable lengths 
	o Fixed initialisation of symbol table prior to checking W3-Auth
	  based access control


11 April 1997  2.0 Beta 6
-------------------------

	mSQL
	====

	o fixed rand() srand() portability macros
	o added strptime check to autoconf script
	o added strptime function to lib mSQL if needed
	o completed Win32 porting of client API and client apps
	o completed Win32 porting of server although indexing still
	  needs some debugging.
	o fixed per field cache pointer during tmp table creation (core
	  dump when ordering the result of a join with a TEXT field)
	o fixed handling of 8 bit char sets in regexp matching
	o fixed ident handling in joins (particularly in self joins)
	  when multiple idents used in the comparison clause
	o fixed timestamp bug where timestamps were reset in a condition
	o fixed NOT NULL testing for NULL fields
	o fixed NOT NULL testing for NULL indices
	o fixed resetting overflow table mapping length to 0 when
	  dropping a table cache entry in loadTableDef()
	o fixed potential leak of mapped region in initTable()
	o updated client library to use MSQL_DEBUG not MINERVA_DEBUG
	o updated libmsql to use stderr for debugging
	o added short-circuits for condition testing (i.e. bail as soon
	  as we can tell the result of and AND or an OR etc)
	o fixed leak of overflow buffers when deleting rows containing
	  TEXT fields
	o added soundex based matching using the SLIKE operator
	o fixed handling on blank date fields (ie. '')
	o fixed LIMIT handling


	Lite / W3-mSQL
	==============

	o More performance upgrades
		- Symbol names no-longer malloced
		- Symbol values < 10 bytes long no longer malloced
		- Results show 300% performance increase in virtual
	  	  machine operating speed
	o Fixed string length mis-match between locally created and
	  passed variable values (e.g. html form data etc)
	o Forced flushing of output after an echo() as a call to
	  system() following a non-flushed echo() could cause the
	  output order to skew



20  March 1997 	2.0 Beta 5
--------------------------

	mSQL
	====

	o Rewrote regression test suite to obtain better code coverage
	o Added real value precision handling to solve real number
	  rounding errors.  The desired precision is now stored with
	  the value in the database table.
	o Added code to translate system variables (eg _rowid) into
	  "real" table fields during creation of a result table.  This
	  allows the sysvar value from the original table to be carried
	  through a DISTINCT or an ORDER rather than it being incorrectly
	  generated from the result table.
	o Added ability to order a result on the value of a system
	  variable
	o Added more system diagnostics for low-level errors
	o Added more file ownership testing (for those that chown the
	  data file and don't get it correct)
	o Added /dev/tty test in makegen macros.  I though expecting 
	  /dev/tty to exists was fair but apparantly not so on IRIX
	  5.3.
	o Added README.sco for build details on SCO
	o Added msqlGetSequenceInfo() to API and server
	o Added support for showing sequence structure to relshow
	o Added support for dumping current sequence status to msqldump
	o Added support for UINT data type
	o Added support for DATE data type
	o Added support for TIME data type
	o Added support for MONEY data type
	o Added mmap region syncing for data files, overflow files and
	  the mapped regions of the AVL index files.  Frequency of sync's 
	  is configured in msql.conf.
	o Added support for sequences in relshow (sequence creation at
	  the current sequence value)
	o Added msqlGetSequenceInfo() API function
	o Added _systime system variable
	o Added mSQL time and date functions to the API library.  These
	  allow for conversion from the text representations used by
	  mSQL into a valid UNIX time_t value.
	o _sysdate system variable now returns a date type value of the
	  current data on the server machine (not the UNIX time value
	  as previously returned)
	o Rows are now padded to an 8 byte boundary for memory alignment
	  reasons (mmap() access to the row headers structures on Alpha)
	o Row header timestamp now time_t rather than int for machines
	  that use long time values (e.g. the Alpha)
	o Fixed memory leak in yyprev symbol handling
	o Fixed wild free in lexer symbol handling (core dump)
	o Fixed timestamp overwrite problem for the Alpha
	o Fixed relshow core dump for invalid index name
	o Fixed core dump in AVL code when accessing an unaligned real 
	  (i.e. a double) value in the tree node
	o Fixed bad handling of numeric index types by moving the field
	  value auto-casting earlier in the control flow
	o Fixed AVL Lookup problem for indices comprised of real values
	o Fixed compound index handling bug (key could be incorrectly
		formatted on lookup resulting in no results).
	o Fixed problem with ident comparisons on single table selects
	o Fixed problem with ident to sysvar comparisons on single table 
	  selects (e.g. select * from foo where f1 = _rowid)
	o Fixed wild free problem for ident values in join code (core dump)
	o Fixed memory over-read on some TEXT field operations
	o Fixed data hole free list handling
	o Fixed multiple increment of sequence value (i.e. select _seq
		from foo would increment the seq for each row)
	o Fixed multiple increment of seq in conditions (i.e.
		"select _seq from foo where id > _seq" would increment
		the sequence twice (once for each call to getSysVar() )
	o Fixed handling of system variables in join results
	o Fixed 8 byte alignment problems in the AVL tree code.  The
		entire server is now 64bit clean and passes the
		new regression test on an Alpha under OSF/1



	Lite / W3-mSQL
	==============

	o Rewrote all symbol table handling code to use a 64 way
	  hash table for symbol lookups.  Also added a short-cut for
	  symbol searches.  General performance increase in every aspect
	  of the language results from this modification.
	o Added support for non-local authentication databases via the
	  msql.conf file.
	o Added support for HTML comments and other non-Lite tags that
	  start with <!
	o Adding hooks for the mSQL time and date routines to mod_std
	o Added getTzOffset() to mod_std for hacking time values
	o Added toksplit() to mod_std
	o Added literal symbol re-use code
	o Fixed auto-casting problems with the new uint type
	o Fixed auto-base-conversion (i.e. octal & hex).  Conversions
	  now only performed on literals, not on variables during a cast
	  or an auto-cast
	o Fixed off-by-one error in count operator for text strings
	o Fixed regression test results to reflect the current test
	  output
	o Fixed space handling in urlEncode()
	o Fixed problem with string truncation in sub()
	o Fixed problem with handling some C styled comments
	o Fixed core dump when trying to cast an array to a scalar type
	o Fixed off by one error in array literal element length
	o Fixed handling of array indexing in text expansion (e.g. 
	  in echo() strings) when array indexed by a variable value
	o Fixed auto casting for int and uint in printf formats




	Misc
	====

	o Fixed a couple of bugs in the time library for date/time handling
	o Added errno.h to the headers searched in setup when looking for
	  sys_errlist (for NetBSD 1.2)
	o Added stdlib.h to the headers searched in setup when looking for
	  ssize_t (for Irix 6.2)
	o Started total re-working of the documentation kit.
	o Code has been "linted" within and inch of its life (using
	  gcc -Wall)



1  February 1997 	2.0 Beta 4
-----------------------------------

	Lite / W3-mSQL
	==============

	o Added support for Multi-Select form data to W3-mSQL
	o Added typeof() function to Lite standard module
	o Fixed bug in expandText() handling mis-defined symbols
	o Added work-around for the gnu getopt() library
	o Added work-around for the gnu atoi() function
	o Added 'uint' type handling and "%u" to printf()
	o Fixed problem with fuction call arg count on some machines
	o Fixed last character match problem in tr()
	o Fixed a few doco bugs in the mSQL module doc's
	o Fixed up type checking during a cast
	o Fixed a problem if the first element of an array is not a CHAR val
	o Fixed urlEncode problem for the + character


	mSQL
	====

	o Fixed token destruction in error reporting from the parser
	o Fixed documentation example for sequence creation
	o Fixed core dump in mSQL monitor on overly large error results
	o Fixed inaccurate initialisation of ident segments in msqlCreateIdent
	o Added support for MSQL_CONF_FILE environment variable
	o Fixed looping problem in wild-card delete
	o Fixed some _more_ doco bugs
	o Fixed problem with comparison of TEXT fields with NULL
	o Fixed problem with the matchVarChar() function when comparing
	  values with TEXT fields
	o Fixed bug in LIKE and CLIKE for matching multiple % wildcards
	  to an empty string
	o Fixed a possible problem with the static size of the connection
	  array



14  January 1997	2.0 Beta 3
-----------------------------------

	o Fixed bugs in table join logic
	o Fixed bug that allowed an update to set a non-unique value
	  for a unique index
	o Completed dynamic loading of module object code in Lite / W3-mSQL
	o Fixed some documentation errors in the HTML manual
	o Fixed non-flushed output in user prompts from msqladmin and msql 
	o Fixed problem with fields being inserted with the NULL flag set
	o Added a 0 exit val to msqldump
	o Fixed some API function prototypes 
	o Added strdup() to the malloc test code (although we don't
	  use the malloc library anymore for in-house code testing)
	o Fixed memory leaks in parser, msqlServerDelete, QUIT processing,
	  join condition lists, and join ident fields.
	o Wrote the mod_graph dynamic loaded graphing module for Lite &
	  W3-mSQL.
	o Added optional W3-auth security.  The file .w3-auth must now
	  be created in the directory containing the requested file to
	  enable W3-auth access control.




6  January 1997		2.0 Beta 2
-----------------------------------
	o Fixed problem with deletion using an index for row selection
	  (reshuffle of dup values in tree node caused getNext to skip
	   a valid entry)
	o Fixed bug in bulk index creation where it was including
	  non-active rows in the newly created index.
	o Added strncasecmp() for SVR4 people (so they can dodge the BSD lib)
	o Fixed bug in the AVL node swapping code wrt dup node lists.
	o Fixed core dump bug when DISTINCT used with an empty result
	  table.
	o Fixed bug in the updating of CHAR fields.
	o Increased listen queue for UNIX socket to 128
	o Fixed bug in updateValues() where by a full field width char
	  value would trash the active flag of the next field (i.e. NULL
	  termination of the string).
	o Fixed param count test in Lite function calling.
	o Increased Lite VM performance by up to 20% by caching stack 
	  frames and other reuseable items.
	o mSQL Server performance increases
	  - Removed some more malloc & bzero overhead 
	  - Added speedup for boxes without hardware multiply (like
	    lots of the early SPARCs).  
	  - The above modifications produced a 20% faster "killer"
	    result on a SPARC without hardware math.
	o Added support for symbolic Macros in modules
	o Started support for dynamic loading shared modules



16 December 1996	2.0 Beta 1
-----------------------------------
	o Initial public beta release of the 2.0 code base.
