| Version 6.9 of DES adds to previous version (6.8): - Enhancements:
- SQL reformulations for top-level queries and view creation are offered when the system identifies alternatives that enhance readability and/or performance
- SQL semantic analysis extended to local processing of queries to external connections (when /des_sql_solving is on)
- Added support for external evaluation of order_by/3, group_by/3, top/1, distinct/1, distinct/2, is_null/1, is_not_null/1, intermediate assignments for expressions, disjunctive conditions (OR instead of UNION) and subqueries in persistent predicates
- Added TOP, OFFSET and LIMIT clauses for UPDATE and DELETE SQL statements
- The SQL statement UPDATE followed by TABLE raises an error only when there is no table with name "table"
- Allow for RENAME COLUMN in the ALTER TABLE statement
- Aggregates in a GROUP BY clause are identified and the query is rejected
- New RA set operators union_all, intersect_all and difference_all for keeping duplicates
- Improved SQL translations for AR, DRC and TRC (can be seen with the command /show_sql on)
- Host safe extended to consulting Datalog files
- Some tweaks on information messages
- Improved validation to catch mismatches between local view definitions and their schemas
- Simplification of Datalog goals for metapredicate goal arguments. In particular, this allows for discovering more semantic issues in SQL queries
- False goals are anticipated in some cases
- Most commands with a switch argument become TAPI enabled
- More stable logs in case of broken streams
- Fixed some documentation issues, both in the system and in the manuals
- New functions and predicates. For each function below, there is a counterpart Datalog predicate with the same name prepended with $, and with an extra final argument as output:
- asc(X) Return the ASCII code from a character X
- chr(X) Return the character from an ASCII code X
- New commands:
- /des_developing Display whether DES developing in underway: on means that atoms are not quoted and lists of codes are rendered as strings, and off the other way round. TAPI enabled
- /des_developing Switch Enable or disable DES developing (on or off, resp.): on means that atoms are not quoted and lists of codes are rendered as strings, and off the other way round. This uses different portray clauses for easing tracing along development. TAPI enabled
- /display_answer_schema Display whether display of the answer schema is enabled. The schema is only displayed if the answer display is enabled (see the command /display_answer). TAPI enabled
- /display_answer_schema Switch Enable or disable display of the answer schema (on or off, resp.) The schema is only displayed if the answer display is enabled (see the command /display_answer). TAPI enabled
- /last_sql_hint Display the last SQL hint, if available. A hint is a reformulation of an SQL query that improves upon the original. "Improving" may refer to a smaller query size or a more appropriate structure; for example, placing conditions in the WHERE clause is preferred over using HAVING. TAPI enabled
- /sql_hints Display whether SQL hints are enabled (enabled by default). If enabled, alternative SQL formulations for input SQL queries are displayed. TAPI enabled
- /sql_hints Option Set the required level of SQL hints as disabled, enabled or full (off, on or full, resp.) If enabled, alternative SQL formulations for input SQL queries are displayed. The full option applies hints also to from-less queries. TAPI enabled
- /verbose_listings Display whether verbose listings for SQL, AR, DRC and TRC are enabled (on or off, resp.) When disabled, default modifiers ALL, DISTINCT and ASC are omitted. TAPI enabled
- /verbose_listings Switch Enable or disable verbose listings for SQL, AR, DRC and TRC (on or off, resp.) When disabled, default modifiers ALL, DISTINCT and ASC are omitted. TAPI enabled
- Changes:
- Changed the semantics of replace to avoid the solver not to terminate when using an empty string as its second argument
- The commands /indexing, /multiline, /order_answer, /output, /timing now emit warnings as other commands
- The messages from /order_answer have been changed to be similar to other switching commands
- The command /spy automatically enables debugging
- Changed the renamings "reli" to "r_i" in SQL listings for AR, DRC, and TRC equivalent statements
- Removed parentheses after NOT for NOT EXISTS SQL clauses in displays
- SQL listings are not verbose by default (make them verbose with the new command /verbose_listings on). Optional keywords (such as ALL) are omitted
- The command /des Input is moved to the Query Languages category
- Fixed bugs:
- The command /list_predicates raised an exception
- The command /writeln_to_file raised an exception. Help on this command via /help was erroneous
- Help on built-ins did not show the Conversion category
- In DB2 and Oracle, identifiers starting with $ should preserve its original case
- Undefined predicates starting with $ which are not built-ins were not warned as such
- The file name argument of the command /rm could not include enclosing double quotes in the SICStus Prolog distributions
- Some built-ins had no mode declaration, which led to incorrect translations
- Solving some built-ins via top/2 raised an existence exception
- The display of the PDG raised an exception in verbose, fuzzy mode
- Dropping tables for DB2 added the CASCADE clause, which is not supported
- Storing new states for nested processing might rewrite older states
- Extra line in /dangling_relations when there are not such relations
- Missing answer schema for obtaining a relation cardinality from DB2
- Dropping an external relation lead to failure when updating the PDG
- Making persistent an unsafe predicate failed
- Delimiters for DB2 SQL identifiers were not generated
- Some rules were omitted as a result of unfolding in the presence of embedded implications
- COUNT(*) was not capitalized in SQL displays
- Different variables in Datalog rules resulting from compilations might appear with the same displayed name
- The command /des Input was not working. Bug introduced in DES version 6.4
- The command /abolish cleared modes for built-in predicates, which led to invalid compilations
- Escaped LIKE was displayed with its internal representation
- Linearizing a head failed when all its arguments were already linear
- Displaying an SQL query from compilations might show a table name t instead of the original one
- Debugging external DB2 databases might raise exceptions
- When abolishing, persistent predicates were not abolished in the topological order
Previous versions |