Current status of lambda-DB

lambda-DB version 1.8 (released on 11/29/2001)

Minor changes. Things done:
  1. Added TPC-D benchmark queries (directory examples/tpcd/) written by Shruti Sharma.
  2. Converted joins with key or OID equalities on class extents into object dereferences. For example, select e, c from e in Instructors, c in Courses where c.taught_by.ssn=e.ssn is converted into select c.taught_by, c from c in Courses. This is a fix for those who like to program using joins (SQL style) rather than in OQL style.

lambda-DB version 1.7 (released on 8/13/2001)

Minor changes. Things done:
  1. Fixed aggregations over real numbers (floats).
  2. Fixed a typechecking error in group-by queries with more than two aggregations.

lambda-DB version 1.6 (released on 3/26/2001)

Minor changes. Things done:
  1. Fixed the %e1.A := e2; assignment to update the indexes that depend on A.
  2. Extended OQL functions to support ODL methods using the syntax %define class::method (...) as query;.
  3. Added the %print query; command to print query results of compiled queries.
  4. Added method overloading across classes (but not within a class).

lambda-DB version 1.4 (released on 12/4/2000) and version 1.5 (released on 1/15/2001)

Minor changes. Things done:
  1. Completed the XML example.
  2. Fixed plan costing. Fixed recursion. Fixed various bugs.
  3. Added "import" in ODL to import other modules.

lambda-DB version 1.3 (released on 10/15/2000)

Things done:
  1. Added recursive functions to capture transitive closure. Tested on XML data.
  2. Converted the code to ANSI C++ and ported it to RHL 7.0.
  3. By default, objects are now transient when constructed. To make an object persistent (ie, stored in a class extent) you must put the keyword "persistent" before the object construction. "Persistent by reachability" is not supported any more (reason: if an objects has been created as transient, the indexes will not be updated).

lambda-DB version 1.2 (released on 9/14/2000)

Things done:
  1. Now the optimizer can run in different modes: with or without query unnesting, with or without materialization of path expressions, and with or without mapping unnests into joins. Voodoo now allows you to choose modes.
  2. Added support for enum and union types in OQL. Added a case statement to the OQL language to manipulate union types. Modified voodoo to handle union values. Created another example directory (XML) that has a schema with two union types.
  3. Made block-nested-loop work as outer-join when needed.
  4. Run benchmark queries (available at lambda-DB/example/benchmarks.oql) and tuned the evaluation engine.
  5. Merged voodoo.tcl with the oql_server into one program (called voodoo).

lambda-DB version 1.1 (released on 6/1/2000)

Things done:

  1. Now lambda-DB uses a new version of SHORE that works with new Red-Hat Linux without using the old libc libraries (thanks to Jim Smith
  2. Modified the SHORE source code to fix the file permission of some SDL files. Now lambda-DB can be used for class projects by many students.

lambda-DB version 1.0 (released on 5/10/2000)

Fixed minor bugs:
  1. Fixed the interpreter to handle bag-of-bag queries, such as select (select from c in e.teaches) from e in Instructors.
  2. Added object deletion from a class extent.

lambda-DB version 0.5 (released on 4/1/2000)

Things done:
  1. Replaced the sorting algorithm. Now sorting uses quicksort to sort a fixed number of tuples in memory and then it dumps them into runfiles. The resulting runfiles are then merged in one step using a priority queue implemented as a heap. If all tuples can fit in memory, no runfiles are created.
  2. Implemented block nested loop and changed the optimizer/code-generator to incorporate it.
  3. Now order-by clause can sort in descending order when specified (using desc).
  4. Fixed the object printer of the interpreter so it can print nested collections and objects to any (prespecified) nesting level.
  5. Fixed the problem of materializing a stream to a value in the header of a query needed in queries such as select set(teaches) from Instructors. To do this, I had to use a stack of stream environments instead of just a fixed number of streams.
  6. Added more accumulator choices in voodoo and improved the interface.
Things to do:
  1. Need to fix block nested loop and merge join to support outerjoins.
Future plans:
  1. Next version will probably be an alpha release (before the sigmod 2000 demo, I hope).

lambda-DB version 0.4 (released on 12/1/1999)

Things done:
  1. Ported to new i486 Red Hat Linux (tested on RHL 6.0).
  2. Completed the OQL interpreter. Now the code generator produces functional-style code (higher-order functions and lambda abstractions) and this code is then translated into C++ using defunctionalization. The code can also be evaluated by the interpreter with minimal overhead.
  3. Connected the VOODOO visual query formulator with the interpreter.
  4. Changed the DB files access modes. Now the system is multi-user but with no security.
  5. Improved the manual.
  6. Fixed various bugs (thanks to Akhtar Muhammad for reporting some of them).
Things to do:
  1. Performance considerations discussed in the previous release will (hopefully) be addressed in the next major release.
  2. One UTA student is working on a GUI data browser.
  3. Another UTA student is making the catalog ODMG-compliant.

lambda-DB version 0.3 (released on 8/1/1999)

Things done:
  1. The optimization of group-by queries was considerably improved. This required to make the nest operator more like a group-by: now it can group-by any list of path expressions. This means that nest now requires sorting when grouping-by non-key attributes. Future extension will use hashing to form groups instead of sorting.
  2. Now the optimizer eliminates duplicate nestings. For example, in the query:
          select count(e.teaches)
            from e in Employees
           where count(e.teaches) > 0
    the count(e.teaches) (an unnest followed by a nest) is translated once.
  3. Fixed the bug of translating queries with subqueries in the order-by clause.
  4. Fixed the bug of predicate promotion (which was premature in some cases).
  5. Announced the release to DBWORLD.
Things to do:
  1. Currently sorting is done with B+-trees! This contributes to performance degradation.
  2. Need to implement block-nested-loop and hybrid-hash join.
  3. Need to have two kinds of keys: strings and integers (now everything is mapped to strings).
  4. Need special algorithms for pointer joins.
  5. Need an OQL interpreter (hard to do).

lambda-DB version 0.2 (released on 1/20/99)

  1. Made lambda-DB work for Linux.
  2. Fixed minor bugs.
  3. Announced the release to SHORE-ALL distribution list.
  1. It puts the predicate"Smith" in a wrong place:
    exists x in Instructors:
    for all c in x.teaches: = "Smith" and"DB"
  2. Can't have a nested query in an order-by (this is easy to fix):
    from d in Departments
    order by count(select * from e in d.instructors
                   where e.rank = "Full Professor")

lambda-DB version 0.1 (released on 1/10/99)

Last modified: 11/13/01 by Leonidas Fegaras