Ann: DES 6.10 Released

[Apologies for multiple receptions]

Hello,

This is a mail just for informing that the new release

Datalog Educational System version 6.10

mirrored at: Datalog Educational System

with online playground:

https://desweb.fdi.ucm.es

has been launched on November, 11th, 2026, and tested for

SICStus Prolog 4.4.1
SWI-Prolog 7.6.4

This version focuses on strengthening SQL semantic analysis,
query optimization, language expressiveness and overall
stability and robustness of the system through a large
number of bug fixes. First, SQL semantic checking has been
enhanced with deeper detection of inconsistencies,
tautologies, and implied conditions, extending these
analyses to dependent views and providing additional
optimization hints. Semantic reasoning also benefits from
improved handling of functional dependencies, enabling the
detection of unnecessary DISTINCT modifiers, acceptance of
more GROUP BY queries, and more accurate compliance with SQL
standard semantics for set operations involving null values.
Second, the SQL language has been extended with features
such as omitted referenced columns in foreign key
declarations, expression-based CASE constructs, support for
VALUES in local and global views, OFFSET and LIMIT clauses
in SQL hints, and the addition of the BIGINT data type.
Compile-time type checking has also been expanded to cover
several SQL built-ins, including COALESCE, GREATEST, LEAST,
NVL, NVL2, IIF, and CASE. Third, optimization capabilities
have been improved through the introduction of absorption
rules for conjunctions and disjunctions, together with
refinements to semi-naive evaluation for recursive queries.
Fourth, DES incorporates new commands for console management
and SQL semantic checking based on actual data, allowing
users to inspect and control whether table contents are
considered during semantic analyses and simplifications.
Finally, numerous language refinements, behavioral changes,
and bug fixes improve compatibility, correctness, error
reporting, type handling, SQL and RA processing, query
translation, aggregates, grouping, recursion, null-value
semantics, and external database interactions. Section 9.1
in the user manual includes the complete list of
enhancements, changes, and bug fixes.

A complete list of enhancements and fixed bugs is attached
to the end of this message.
Please, see http://des.sourceforge.net for details.

Best regards.

=============================================================
Fernando Saenz Perez
Profesor Titular de Universidad / Associate Professor
Home Page: Fernando Sáenz Pérez Home Page Moved
Tel: + 34 913947642. Fax: + 34 913947547
Despacho / Office: 435 (4a. planta / 4th floor)
Dept. Ingenieria del Software e Inteligencia Artificial /
Department of Software Engineering and Artificial
Intelligence
Universidad Complutense de Madrid
Facultad de Informatica
C/Profesor Jose Garcia Santesmases, s/n
E - 28040 Madrid. Spain

=============================================================

Version 6.10 of DES (released on November, 11th, 2026)

  • Enhancements:
    o SQL semantic checking of inconsistent and tautological
    conditions is extended to dependent views
    o Improved detection of semantic warnings for implied
    conditions (Error 8 [BG06])
    o Enhanced SQL semantic detection of unneeded DISTINCT
    modifier based on functional dependencies and
    distinguishing if duplicates are enabled or not
    o More SQL hints involving implied conditions
    o Foreign keys can omit the referenced column names,
    assuming the primary key columns of the referenced table
    to be the external key
    o Extended SQL CASE for dealing with expressions as
    arguments
    o Compile-time type checking for arguments of SQL
    built-ins COALESCE, GREATEST, LEAST, NVL, NVL2, IIF and
    CASE
    o Supported OFFSET and LIMIT clauses in SQL hints
    o Absorption rules added for conjunction and disjunction,
    enabling more optimization opportunities
    o Added BIGINT SQL type
    o Open types in messages are now closed
    o Enhanced visibility rules for aliases in SELECT
    renamings, which allows for references to such aliases in
    other subsequent clauses
    o Added syntactic error for multiple primary key SQL
    declarations in the same table
    o Added string to datetime datatype conversion for date
    without time
    o Support for VALUES in local and global SQL views
    o GROUP BY queries with non-grouped attributes in the
    SELECT list but determined by groping attributes are
    accepted
    o 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
    o Differential semi-naive optimization for linear
    recursion (/optimize_sn on) is automatically disabled in
    non-linear rule bodies
    o 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:
    o 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
    o 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
    o String types for constants in error messages are not
    limited to the length of the constant
    o Under strong type casting, the type of a Datalog
    predicate cannot be changed if its data does not exactly
    match with the new types
    o 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:
    o Some translations of projections to canonical RA in the
    compilation of SQL queries were omitted. This might lead
    to compilation errors
    o The operator != was not accepted in DRC
    o Type conversion failed in some corner cases involving
    disjunctions (‘$eq’ was not treated as an infix
    comparison) and string types
    o DWIM could raise an exception in presence of restricted
    predicates
    o TOP-N semantics was inadvertently changed in version 6.8
    for non-open goals. This affected in particular to
    compilations of SQL EXISTS queries
    o SQL hints should not be issued for TAPI commands except
    for /parse and /mparse, similar to what semantic errors
    behave
    o Missing documentation for the modifier ALL of INTERSECT
    and EXCEPT multiset SQL operations
    o A semantic SQL translation might not terminate because
    of switched arguments
    o Upon exceptions on an external database, integrity
    constraint checking might be disabled
    o Numeric types in output schema of queries now identify
    correct types for constants
    o 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.
    o Inconsistency checking with type casting enabled may
    lead to miss integers with floats
    o Opening an external connection (such as SQL Server) may
    lead to a couple of rows in the dual table, instead just
    one
    o 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
    o Some SQL queries with ALL/ANY modifiers over subqueries
    with aggregates raised an exception
    o Aggregates computed in the SELECT list may miss
    solutions
    o In RA, a rename applied to a sort lead to an unknown
    column
    o System error exception fixed for SQL query and
    correlated subquery with ALL and grouping in both
    o Fixed overloaded datetime_sub with type casting on
    o Fixed exception for recompilations of views when
    switching autocast mode
    o Fixed internal error in derived table with COUNT(*)
    correlated through an expression of an outer attribute
    o Uncorrelated variable in SQL subquery with DISTINCT
    o Replacing a script variable with the same name as a
    static predicate led to an exception
    o A nested rename in RA might caused input processing
    error
    o Grouping involving the dual table may return incorrect
    results
    o An expression involving a scalar SELECT subquery with
    aggregates led to syntactic error (aggregate in a WHERE)
    o 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
    o Circular aliases may cycle
    o Some relation aliases was missed in subqueries
    o Offset collapsed duplicated entries and thus, in
    general, less rows than expected were returned
    o From-less SELECT … INTO statements raised a syntactic
    error
    o Arithmetic arguments in Datalog string functions were
    not evaluated
    o A natural full join with no common attributes raised an
    error
    o Double escape char at the end of the string was
    misinterpreted
    o In an SQL condition, AND combined with NOT IN raised an
    error
    o An alias reused in the SELECT list as a single argument
    raised an error
    o Some remarks inside SQL statements raised a syntax error
    o 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
    o An EXCEPT query involving nulls did not distinguish them
    as equal values
    o Some constant arguments were passed as positional
    arguments to GROUP BY
    o The command /drop_tables did not terminate when there
    were dependency cycles between tables through referential
    integrity constraints
    o Some types were not closed rightly in view definitions,
    dealing to incorrect announced types
    o Comparison between string types of different lengths may
    lead to error even when type casting was enabled
    o Renamings in RA queries might pollute further queries
    o Arguments in ORDER BY (SQL and RA) might be missed with
    positional
    o An aggregate over a recursive predicate under semi-naive
    differential optimization might lead to non-termination
    o The function/predicate IIF assumed true the condition
    for comparisons with constants

//----------------------------//
// ACIDE 0.19 Release Notes //
// June, 15th 2025 //
//----------------------------//

  • Enhancements, changes and fixed bugs:
    o Theme Management: Allows users to customize color
    schemes for the application’s interface, including font
    settings, and save configurations as themes.
    o File Encoding Selection: Enables users to choose the
    encoding format for loaded files.
    o Persistent Window Dimensions: ACIDE now retains its
    dimensions when restarted.
    o Configurable “Run” Button: Users can personalize the
    execution button behavior.
    o Resizable Number of Rules in Asserted Database: Improves
    visibility and management of rules within the database.
    o Enhanced Console Functionality: Users can now paste
    content directly at the cursor position within the
    console.
    o Project Closure Fix: Corrected ACIDE’s behavior when
    closing an active project.
    o Installer Creation: Developed an ACIDE installer for
    simplified setup.
    o Table Creation Using Datalog: Added support for defining
    tables through Datalog.
    o Line Wrapping Fix: Improved the text wrapping feature in
    the editor.
    o File Format Enhancements: Refined configuration and
    management of file formats.
    o Various Bug Fixes & Performance Optimizations:
    Implemented stability improvements and usability
    enhancements.

Fixed in release DES6.10 on 11/11/2026:

  • Race condition on ACIDE startup made the console to
    display $success

IMPORTANT CAVEATS / KNOWN BUGS:
o Ctrl+Mouse Wheel for resizing font display may take long
time depending on the number of open file editors.
o Opening medium-sized text files may take long time due
to lexical analysis. No progress indicators are provided.
Only when all editor windows are processed they are
displayed.
o As an alpha version, there are expected many bugs and
incomplete functionalities. Please report them to

fernan@sip.ucm.es

1 Like