A relational open-source database library written in C.
Duro is a relational open-source database library written in C. It is based on the principles laid down in the book Databases, Types, and the Relational Model: The Third Manifesto by C. J. Date and Hugh Darwen.
The goal of the Duro project is to create a library which is as compliant with the proposed database language D as it is possible for a C library. This library is supposed to serve as a basis for a truly relational database management system (TRDBMS).
Here are some key features of "Duro":
- Tuples and tables (relvars).
- Relational algebra: RENAME, select (restrict), project, EXTEND, JOIN, SEMIJOIN, UNION, INTERSECT, MINUS, SEMIMINUS, SUMMARIZE PER, DIVIDEBY PER, WRAP, UNWRAP, GROUP, and UNGROUP.
- Virtual tables (views).
- Locking and nested transactions.
- Duro tables are true sets -- uniqueness of tuples (rows) is always enforced. When creating real tables, at least one candidate key must be supplied. A candidate key may be empty.
- User-defined types (including type constraints) and operators.
- Declarative integrity.
- Tcl interface, including support for relational expressions in Tutorial D syntax and operators implemented in Tcl ("stored procedures").
- Simple GUI admin tool.
- Upgraded to Berkeley DB 4.7.
- Duro D/T now supports CASE and constraints.
- Added exception handling to Duro D/T.
- Dropped first argument of CONNECT.
- The return type is now explicitly passed to funtions which implement read-only operators.
- Single quotes are now used in data output in Tutorial D form.
- If a type is not found, NAME_ERROR is raised instead of NOT_FOUND_ERROR.
- Added limited type implementation functionality to Duro D/T.
- Added operator GETENV.