Version 2.7 of DES adds to previous version (2.6): - Enhancements:
- Extended relational algebra processor including all the original operators but division, and extended operators for dealing with outer joins, duplicate elimination, recursion, and grouping with aggregates
- Multi-line input is also allowed in addition to the current single-line input. Long inputs as typical SQL statements can be spanned over several lines. When multi-line is enabled with the command /multiline on, Datalog inputs must end with a dot (.), and SQL and RA inputs with a semicolon (;). When disabled, each line is considered as a single (Datalog, SQL or RA) input and ending characters are optional
- When multi-line input is enabled, remarks enclosed between /* and */ can span over several lines and can be nested as well
- Single-line (--) and multi-line (/**/) remarks can be included in SQL statements at any place a separating blank can occur
- SQL statement CREATE TABLE can include LIKE for creating a table with the same schema as an existing one
- SQL statement DROP TABLE can include IF EXISTS clause and can apply to a list of tables
- New (non-standard) SQL metadata statements (catalogued under ISL, Information Schema Language):
- SHOW TABLES; List table names. TAPI enabled
- SHOW VIEWS; List view names. TAPI enabled
- SHOW DATABASES; List database names. TAPI enabled
- DESCRIBE Relation; Display schema for Relation, as /dbschema command does. TAPI enabled
- New commands:
- /list_tables List table names. TAPI enabled
- /list_views List view names. TAPI enabled
- /multiline Display whether multi-line input is enabled
- /multiline Switch Enable or disable multi-line input (on or off resp.)
- /ra Switch to RA interpreter
- /ra Query Execute an RA query
- /referenced_relations Name Display relations directly referenced by a foreign key in Name
- /referenced_relations Name/Arity Display relations directly referenced by a foreign key in Name/Arity
- Last line in a processed file must not end with a carriage return for its processing
- Faster abolish command and drop database SQL statement
- Display of the number of consulted constraints, if any
- Exceptions during constraint checking when consulting files are caught
- Faster parsing of Datalog rules and SQL statements
- A pivot variable that does not occur in the aggregate relation raises a syntax error
- Views are not required to be created with given column names
- Submitting a query or creating a view with duplicated columns is rejected
- Language command error messages instead of just "Input processing error"
- Improved compilation of EXISTS SQL clauses, using Datalog built-in top/2, which allows to prune the number of computed tuples
- Changes:
- The system prompt for Datalog language changes to the old prompt DES>, as almost any input can be handled from this setting. The only inputs that must explicitly submitted to a language processor are those that can be handled by several language processors
- Null identifiers are not wasted as eagerly as in previous versions
- Negation algorithm et_not do not longer rely on computations by strata
- New organization of system files:
- des_sql_debug.pl (debugger extracted from former des_sql.pl)
- des_dl_debug.pl (replaces des_debug.pl), and
- des_ra.pl (includes RA processor)
- Fixed bugs:
- Listings of SQL statements including Top-N queries failed
- After submitting an incorrect SQL view, all of its temporary schema was not cleaned up
- Variable names in consulted Datalog constraints were lost
- New schema names defined in the list of local definitions inside a WITH or ASSUME SQL statement were not handled appropriately. Bug introduced in version 2.6
- Only one blank was allowed after a SELECT statement. Bug introduced in version 2.6
- Operator precedence in SQL conditions and Datalog bodies was not correctly handled (parentheses were needed to ensure correct operator applications)
- Renamed relations could not be enclosed between parentheses
- A renamed argument in a nested query was not visible for the WHERE condition of its outer query
- Expressions in nested SQL queries could not be referenced from outermost queries
- Type inference failed in some situations for equivalent internal string types (cf. russell.sql). Bug introduced in version 2.6
- Underscored variables in a head rule made rule assertion fail
- The Prolog interpreter did not handle conjunctive and disjunctive queries
Previous versions |