26 May 1999 2.0.10.1 ------------------------- mSQL ==== o Changed sys/errno.h to errno.h for Solaris o Fixed msqlDateOffset() problems and ensured Y2K compliance Lite / W3-mSQL ============== o Removed debugging delay from w3-msql 25 May 1999 2.0.10 ------------------------- mSQL ==== o Fixed bogus error messages from network EOF conditions o Fixed small quoting error in msqlimport o Fixed misplaced #endif in msql.h prototypes section o Added errno test for interrupted sys calls to net.c error reporting o Fixed strdup macro definition conflict in config.c Lite / W3-mSQL ============== o Rearanged hidden form field order in W3-Auth forms to get around an MS-IE parsing problem. o Fixed handling of array params in compiled lite libraries. 15 April 1999 2.0.9 ------------------------- mSQL ==== o Incorporated more Win32 portability. o Added DB_Dir config element to allow database data files to be moved to non-standard locations. o Fixed VARCHAR conditional matching problem o Fixed problem with partial updates of compound UNIQE indices o Fixed field length test to ensure escape characters are not viewed as part of the string (Resulting in 'field too large' errors even though the unescaped string is OK) Lite / W3-mSQL ============== o Fixed the Force_Private config element so that once set, files must be loaded from the INST_DIR/www directory (removes the chance of w3-msql being used to access other files in your web tree that may be controlled by htaccess security) o Fixed possible milling NULL termination on variable creation in w3-auth which was causing program failure due to missing internal data. 15 March 1999 2.0.8 ------------------------- mSQL ==== o Fixed "ansi only" constructs in strtoul.c o Fixed "value too large" error being mis-reported o Fixed core-dump on various BSD systems caused by large packet buffers. o Fixed formatting errors for money values between -0.01 and -0.09 o Fixed bug in the query optimiser that incorrectly handled certain queries if a compound index was used in the outer loop of a join and one of the index elements was evaluated using a ident expression rather than a literal value o Added missing msqlFreeResult() to msqldump.c o Added O_BINARY to a call of open in msqldb.c that was missed in the last round of OS/2 modifications. o Force the use of msync() under Linux Lite / W3-mSQL ============== o Added setHttpResonse() to standard module for over-riding the default "200" http response code. o Modified mime type generation to return text/html for any file with a suffix starting with .htm (e.g. .htm .html .htmsql) o Fixed the mangling of the QUERY_STRING environment variable o Fixed HTTP header generation in W3-auth runtime errors o Enhanced handling of aray variables in expandText() to allow unknown array references to be ignored rather than generating a runtime error. 15 February 1999 2.0.7 ------------------------- mSQL ==== o Fixed ansi-only line continuation in msqlimport o Fixed use of APIENTRY macro for client sources (i.e. code not using the mSQL portability code. o Added inclusion of time.h to msql.h for time_t prototypes o Added cast to (char *) for packet buffer accesses to stop HP-UX from complaining about the u_char buffer in string handling calls. o Removed SHELL=SH from top level Makefile o Fixed core dump if a value too large for the target field is inserted into a table in which the target field is used as part of a unique index. o The server now refuses STATS requests received from remote machines. This is in response to a security concern raised by KSR[T] (www.ksrt.org) as some of the information provided could be used in remote attacks on the server. o Modified money handling to introduce a "fake" 3rd digit of precision to overcome real number rounding errors in the standard C library routines. o Fixed AVL tree code to use a much more compact node size Thanks to Gabor Ligeti . o Fixed internal value 'datalen' settings for CHAR literal types. o Added config handling for Query_Log and Query_Log_File. o Added backend support for query logging. o Changed centry handling in date fields to not use the %C format element of strftime as it appears not to be supported properly by all OS's o Added stdlib.h to syserr testing o Rolled in Yuri's latest OS/2 mods to handle CRLF text files int Lite and w3-mSQL (Yuri Dario ) Lite / W3-mSQL ============== o Added createVariable(name,value) to mod_std for dynamic variable creation. o Modified w3-msql's arg parser to accept variable that include a '.' character via a POST or GET (for image maps etc.) The variable name is re-written so that $image.x becomes $image_dot_x o Added addHttpHeader(HeaderLine) to mod_std for w3-msql to allow the setting of custom headers in the HTTP Header block Misc ==== o Write demo lite script for reading a query log file. The script is called misc/parse_query_log o Added NEW_FEATURES file to the doc/ directory that explains any new features added in the current release. 15 January 1999 2.0.6 ------------------------- mSQL ==== o Incorporated modified msqlimport from Georg Horn. o Added multiplatform make support to makegen for OS2 and Win32 o Added multiplatform library handling to makegen for DLL's o Incorporated OS/2 specific modifications from Yuri Dario added the required multi-platform support for portability o Rewrote handling of money type to avoid any use of libc based numeric handling functions o Fixed core dump on invalid field type test in sort code (sorting on a TEXT field for example). o Moved to using strtoul() for conversion of UINT field types to ensure the values are not truncated to MAX_INT by atoi() on some platforms. o Added config testing for strtoul() and an implementation of it for those systems that are lacking. o Fixed possible DB name buffer overflow to satisfy the Brazilian "Sekure SDI" group's advisary. Other elements of the advisary have been intentionally ignored and reimplemented due to unportable programming constructs used by this "security group" o Rewrote the msqlDebug() handling to satisfy the totally paranoid. o Added runtime stats to "msqladmin stats" o Fixed handling of non-text type array elements being passed to user defined functions Lite / W3-mSQL ============== o Rewrote autoconversion during checking of parameters for types like INT/UINT o Patched the LVM to allow a scalar variable to be automatically cast to an array if a value is assigned to a dereferenced element (another Georg Horn patch) o Added NULL test to HTUnEscape o Added setup test for Linux so that -rdynamic can be included in the link flags for dynamic module loading o Fixed obscure bug if a variable was cast to an array from a scalar and there are other variables in the symbol table that are hashed to the same bucket of the symtab hash table. o Fixed problem if an empty string is passed to W3-mSQL as the QUERY_STRING env variable from a GET operation. 1 December 1998 2.0.5 ------------------------- mSQL ==== o Fixed sorting problem o Added test for number of args to msync() for BSDI and others o Added extern declaration for snprintf to msqldb.c o Added API library initialisation tests to ensure the packet buffer is not a NULL pointer (avoiding core dumps) o Added tests on the socket passed to the API calls with failures if it's pointing to a tty (i.e. fd 0 due to a uninitialised variable be used as the sock) o Fixed core-dump problem in the new CRA code's msqlReorderTableList() if a condinition element is a sub-cond o Fixed problem with updating the index field value when that index was used as the update condition o Fixed bad logic handling in multi-contidion where clauses o Fixed bogus creation of index files if the bulk creation failed (such as finding a NULL during the creation) o Fixed SIGPIPE handling causing previously msqlClosed sockets to be "re-closed" when they are no long associated with an mSQL connection o Fixed potential core dump in CRA code when handling sub-conditions (sub-conditions leave a NULL value in the condition expression list) o Fixed file path problem in sort code for installations that redefine the installation directory after compile time via the config file o Fixed double free (and possible core dump) when unknown field names are used as the rvalue of an ident to ident condition o Fixed "summer time" problem in msqlDateToUnixTime() and msqlTimeToUnixTime() where an un-zeroed struct was forcing daylight saving calculations to be performed. o Possible security problem as outlined on BugTraq where a badly formatted handshake packet is sent to the server has been fixed. o Added check and fix for HP-UX ranlib to the library build code o Extended the database and table name lengths in relshow o Added dirty map tracking for use by the mmap syncher Lite / W3-mSQL ============== o Fixed param type checking for module function calls o Fixed potential core dumps when undeclared symbols are referenced and printed. o Fixed potential core dump when displaying error messages on platforms without zero filled malloc blocks o Changed the semantics of precision handling in %f formats in printf() to round rather than truncate to the specified precision (as per the standard C implementations). 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 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