| 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 |