Change History
Table of Contents

Summary of changes made to the library


v0.78.1
  9/26/06 
          * Bug fixes for parsing and executing aggregate functions
          * Fixed short circuit error in is_eu_boolean and is_eu_autonumber
          * Added get_sql_keyword()
          * Added error checking for correct number of insert fields

v0.78.0
  4/18/06 
          * Added BOOLEAN, DATE_TIME data type
          * Added functions to deal with DATE_TIMEs: see Dates
          * Fixed bugs relating to self joins and unjoined tables
          * Uses matheval v1.65 (datetimeval.e, upper, lower)

v0.77.3
  12/05/05 
          * Fixed create_field() so that it updates existing records
          * Implemented drop_field()
          * Fixed bug that could cause a crash when malformed, multiple joins
            in sql statement
          * Better determination of calculated fields' datatypes
          * Added checks for valid field and index names in create_index()
          * Uses matheval v1.64 (added <> operator for 'not equal to')
          * Fixed bug that could cause joins with where clauses to fail
          * Fixed docs for get_next_autonumber()
          * Text inside of single quotes wasn't processed correctly
          * Improved error message when incorrect field is specified
          * Optimized simple case of "SELECT COUNT(*) FROM TABLE_NAME"
          * Fixed an indexing bug that wouldn't properly update an index
            when all records for a certain value were deleted

v0.77.2
  8/15/05 
          * Fixed indexing bug in insert_record2()
          * Fixed bug for queries on tables with no fields

v0.77.1
  1/4/05 
          * Fixed bugs with SELECT COUNT(*)
          * Fixed some INSERT and UPDATE bugs
          * Uses matheval v1.63

v0.77.0
  9/10/04 
          * Can alias a table and perform self joins
          * CREATE DATABASE, INDEX sql added
          * Uses matheval v1.62 (bug fixes)

v0.76.8
  8/03/04 
          * Fixed bug with update queries where only one field would be updated
          * Fixed bug where duplicate literals were not parsed correctly
          * Fixed bug in insert_record2() (did the earlier bug creep back in?)
          * Fixed bug in update_record2() for updating an index
          * Fixed parsing bug for SELECT COUNT(*) queries
v0.76.7
  6/1/04 
          * Properly handles semicolons at the end of a SQL statement
          * Bug fixes
v0.76.6
  3/16/04 
          * Fixed bug in insert_record2()
v0.76.5
  1/30/04 
          * Fixed bug with UPDATE queries
 v0.76.4
  1/27/04 
          * insert_record2() optimized to update indices at the end, rather than
            for each individual record
          * Bug fixes:
            + Updated parse_delete() to add the correct number of elements
              to query[QN_VALUES] (4)
            + Incorrect definition of EUSQL_CONCAT
            + EUSQL_MULTIPLY was conflicting with EUSQL_ASTERISK, and broke
              'SELECT * FROM TABLE'-type functionality
            + Fixed indexing errors when deleting records
            + Fixed some parsing errors introduced into other query types by
              modifications to SELECT parsing
 v0.76.3
  12/04/03 
          * Bug fixes:
            + Parameter and matheval variable handling
            + Parser was missing <=, >= and incorrectly parsing quoted literals
            + ORDER BY didn't properly take into account non-displayed fields
            + UPDATE query wouldn't update with an atom value
            + select_current() didn't always change the current table
          * Uses matheval v1.61
            + Added scripteval.e to use matheval's IF() operator
            + Added texteval.e for string manipulation
          * Calculated fields for queries (arithmetic, IF, text operations)

 v0.76.2
 11/17/03 
          * Optimized and fixed bugs in select queries, parameter handling

 v0.76.1
 10/27/03 
          * insert_record() and insert_record2() will call blank_record()
            if an atom is passed for the blank record.
          * Better parsing of INSERT queries.  No longer have to prepend the
            table name to each field to be inserted.
          * Added validate_field2() for easier field validation.
          * Can change the way EuSQL opens databases using eusql_exclusive().

 v0.76
 10/08/03 
          * insert_record2() returns sequence with error codes for records
          * Fixed insert bug when a parameter's value had not been set.

 v0.75
 8/4/03 
          * Fixed delete_record() bugs
          * Added AUTONUMBER datatype

 v0.74
 4/21/03 
          * Major optimization for SELECT queries
          * Changed order of precedence for boolean logic so that it makes more sense
            (fewer parenthesis are needed)
          * IN() keyword now works in where clauses
          * create_db() didn't update db_list
          * Bug fixes to DELETE, UPDATE parsing and execution
          * rename_table() added
 v0.73
 4/10/03 
          * Improved error checking and reporting in several places
          * Fixed bug where eusql missed fields with the same name as a table
          * update and delete functions now update indices
          * Fixes to boolean evaluation
          * Can now use IS [NOT] NULL in WHERE clauses
          * More parameter bug fixes--/UPDATE queries 
          * Other UPDATE query bug fixes
          * Fixed bugs regarding parameters--values not being set and read properly
 v0.72
 1/16/03 
          * Fixed several bugs regarding outer joins
 v0.71
 11/22/02 
          * Select now uses indices, dramatic speed increase
          * Outer joins working
          * Can alias an aggregate function: SUM(TABLE1.FIELD1) AS FIELD1
 v0.7
 4/19/02 
          * Literals now case sensitive.
          * Condition and single, multiple join work now.
          * Need to test multiple conditionals with joins.
          * Indices are being created, but not sure if correct,
            since they're not used anywhere else.
 v0.62
 6/14/01 
          * added matheval:booleval for comparison and calculations
 v0.61
 5/2/01 
          * create_index(): need to allow queries to do this, too
          * get_record2(): Retrieve a record based on non-key values.
            Also had to add index_wild() to hlist.e to search on
            wildcard values.
 v0.6
 3/6/01 
          * Added CREATE, DROP TABLE queries.
          * Modularized parsing routines.
 v0.5
 3/2/01 
          * Added API commands to update, insert, retrieve records, get the
            structure of a table's records, create tables and fields,
            select current database, table
          * When create_table and create_field are used, TABLEDEF is
            automatically updated.
          * "SELECT *" now returns 'flat' records
          * Fixed bug regarding condition handling.  Can now use conditions
            with "SELECT *"
          * Initial support for datatypes -- they're stored, but not
            actually used for verification yet
          * Fixed bug with UPDATE queries
 v0.4
 2/8/01: 
          * Better error handling.  Added get_sql_err() for
            more verbose error reporting.
          * Many bug fixes.
          * DELETE queries supported.  Returns keys of deleted records.
          * UNION queries supported.
          * "SELECT *" supported.
          * INSERT queries supported.
          * UPDATE queries supported.
 v0.3a
 11/2/00: 
          * Column functions COUNT, SUM, AVG, GROUP BY
          * Added support for SELECT DISTINCT to get unique values
          * field struct converted to uppercase in table_list()
          * Changed from absolute referencing of compiled query to using
            constants to allow flexibility in sequence structure.