SourceForge.net Logo
Release Notes

Version 6.10 of DES adds to previous version (6.9):

  • Enhancements:
    • SQL semantic checking of inconsistent and tautological conditions is extended to dependent views
    • Improved detection of semantic warnings for implied conditions (Error 8 [BG06])
    • Enhanced SQL semantic detection of unneeded DISTINCT modifier based on functional dependencies and distinguishing if duplicates are enabled or not
    • More SQL hints involving implied conditions
    • Foreign keys can omit the referenced column names, assuming the primary key columns of the referenced table to be the external key
    • Extended SQL CASE for dealing with expressions as arguments
    • Compile-time type checking for arguments of SQL built-ins COALESCE, GREATEST, LEAST, NVL, NVL2, IIF and CASE
    • Supported OFFSET and LIMIT clauses in SQL hints
    • Absorption rules added for conjunction and disjunction, enabling more optimization opportunities
    • Added BIGINT SQL type
    • Open types in messages are now closed
    • Enhanced visibility rules for aliases in SELECT renamings, which allows for references to such aliases in other subsequent clauses
    • Added syntactic error for multiple primary key SQL declarations in the same table
    • Added string to datetime datatype conversion for date without time
    • Support for VALUES in local and global SQL views
    • GROUP BY queries with non-grouped attributes in the SELECT list but determined by groping attributes are accepted
    • With nulls enabled, set operations INTERSECT and EXCEPT (both DISTINCT and ALL) behave as SQL standard dictates. With nulls disabled, more efficient compilations are delivered
    • Differential semi-naïve optimization for linear recursion (/optimize_sn on) is automatically disabled in non-linear rule bodies
    • New commands:
      • /cls Clear the console screen by emitting ANSI escape sequences. This requires a console with ANSI support enabled
      • /sql_semantic_check_data Display whether SQL semantic check based on actual data is enabled (disabled by default). If enabled, data from tables are used for consistency checks and query simplifications
      • /sql_semantic_check_data Switch Enable or disable actual data for SQL semantic check (on or off, resp.) If enabled, data from tables are used for consistency checks and query simplifications
  • Changes:
    • SQL queries that include FROM dual or are FROM-less are now displayed without a FROM clause on DBMS's that support it; in particular, for DES
    • SQL queries that include a top-N clause are now displayed with its simplified version SELECT TOP N on DBMS's that support it; in particular, for DES
    • String types for constants in error messages are not limited to the length of the constant
    • Under strong type casting, the type of a Datalog predicate cannot be changed if its data does not exactly match with the new types
    • The comparison built-ins = and \= respectively use Prolog's =:= and =\= to evaluate its arithmetic arguments, providing a more homogeneous behavior for different Prolog systems. In particular, a Datalog query such as 1=1.0 succeeds for both SICStus and SWI-Prolog host systems
  • Fixed bugs:
    • Some translations of projections to canonical RA in the compilation of SQL queries were omitted. This might lead to compilation errors
    • The operator != was not accepted in DRC
    • Type conversion failed in some corner cases involving disjunctions ('$eq' was not treated as an infix comparison) and string types
    • DWIM could raise an exception in presence of restricted predicates
    • TOP-N semantics was inadvertently changed in version 6.8 for non-open goals. This affected in particular to compilations of SQL EXISTS queries
    • SQL hints should not be issued for TAPI commands except for /parse and /mparse, similar to what semantic errors behave
    • Missing documentation for the modifier ALL of INTERSECT and EXCEPT multiset SQL operations
    • A semantic SQL translation might not terminate because of switched arguments
    • Upon exceptions on an external database, integrity constraint checking might be disabled
    • Numeric types in output schema of queries now identify correct types for constants
    • When detecting tautological conditions and translating to constraints during SQL semantic checking, type casting was enabled in type inference, but it should not have been.
    • Inconsistency checking with type casting enabled may lead to miss integers with floats
    • Opening an external connection (such as SQL Server) may lead to a couple of rows in the dual table, instead just one
    • SQL semantic warning GROUP BY with singleton groups submitted a false positive in two scenarios: for primary keys of more than one column, and cross auto joins. This also led to false positive for replacing GROUP BY by DISTINCT
    • Some SQL queries with ALL/ANY modifiers over subqueries with aggregates raised an exception
    • Aggregates computed in the SELECT list may miss solutions
    • In RA, a rename applied to a sort lead to an unknown column
    • System error exception fixed for SQL query and correlated subquery with ALL and grouping in both
    • Fixed overloaded datetime_sub with type casting on
    • Fixed exception for recompilations of views when switching autocast mode
    • Fixed internal error in derived table with COUNT(*) correlated through an expression of an outer attribute
    • Uncorrelated variable in SQL subquery with DISTINCT
    • Replacing a script variable with the same name as a static predicate led to an exception
    • A nested rename in RA might caused input processing error
    • Grouping involving the dual table may return incorrect results
    • An expression involving a scalar SELECT subquery with aggregates led to syntactic error (aggregate in a WHERE)
    • If ORDER BY contained a non-grouped attribute shared with the SELECT list, the error pointed to the first clause instead to the second one
    • Circular aliases may cycle
    • Some relation aliases was missed in subqueries
    • Offset collapsed duplicated entries and thus, in general, less rows than expected were returned
    • From-less SELECT ... INTO statements raised a syntactic error
    • Arithmetic arguments in Datalog string functions were not evaluated
    • A natural full join with no common attributes raised an error
    • Double escape char at the end of the string was misinterpreted
    • In an SQL condition, AND combined with NOT IN raised an error
    • An alias reused in the SELECT list as a single argument raised an error
    • Some remarks inside SQL statements raised a syntax error
    • EXCEPT ALL queries with disabled duplicates did not terminate because different nulls were not identified as a single value in its translation to Datalog's group_by
    • An EXCEPT query involving nulls did not distinguish them as equal values
    • Some constant arguments were passed as positional arguments to GROUP BY
    • The command /drop_tables did not terminate when there were dependency cycles between tables through referential integrity constraints
    • Some types were not closed rightly in view definitions, dealing to incorrect announced types
    • Comparison between string types of different lengths may lead to error even when type casting was enabled
    • Renamings in RA queries might pollute further queries
    • Arguments in ORDER BY (SQL and RA) might be missed with positional
    • An aggregate over a recursive predicate under semi-naïve differential optimization might lead to non-termination
    • The function/predicate IIF assumed true the condition for comparisons with constants

    Previous versions