DES 6.6 Released

[Apologies for multiple receptions]

Hoping and wishing the best in current circumstances, this
is a mail just for informing that the new release

Datalog Educational System version 6.6

Mirrored at:

And also its online interface has been made available at:

has been launched on January, 25th, 2021, and tested for

SICStus Prolog 4.4.1
SWI-Prolog 7.4.2

The current version is mainly focused on the SQL debugger.
First, a new ACIDE version includes a panel with an
interactive graphical debugger for SQL based on the existing
algorithms in DES. To make this work, several new commands
with TAPI support have been added. Following the
requirements for a graphical interface, new TAPI-enabled
commands have been also provided for the Datalog debugger
(for which a new interactive debugger panel is now under
construction). Second, the coverage of SQL has been extended
with clauses such as for dealing with pagination (offset and
limit) and quantifers. Third, thanks to the experience in
(now virtual) classrooms, unnoticed bugs have been revealed
and fixed, mainly related to SQL and RA. Finally, other
commands have been added and changes have been made.

A complete list of enhancements and fixed bugs is attached
to the end of this message.
Please, see for details.

Best regards.

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


Version 6.6 of DES (released on January, 25th, 2021)

  • Enhancements:
    o TAPI interface for Datalog and SQL debuggers
    o Full Datalog debugger can be applied to the local
    database (no need for a source file)
    o The original source database is restored after a Datalog
    debugging session
    o Listed possible answers to Datalog debugger restricted
    for propositional predicates
    o New offset Datalog predicate for pagination
    o Expression evaluation in goal arguments of
    o Fractions of seconds are allowed in time data type
    o A foreign key can reference the same table it is applied
    o Support for aggregates in ALL/ANY SQL subqueries
    o Improved automatic type casting for SQL built-ins
    o Allow for escaped proprietary and standard SQL user
    o Positional arguments allowed for GROUP BY and ORDER BY
    clauses, including expressions solved at run time
    o Allow for escaped delimiters in SQL user identifiers
    o More precise semantic warning message for unneeded
    argument in SQL COUNT
    o Added OFFSET and LIMIT clauses to SQL queries
    o Modifier ALL added to INTERSECT and EXCEPT multiset SQL
    o Added DEFAULT VALUES option for INSERT
    o Added internal error messages for command processing
    o The condition in the /if command can be surrounded by
    o Uncontrolled exceptions handled in TAPI commands
    o New commands:

    • /breakpoint Set a breakpoint: start host Prolog
    • /debug_dl_answer Question Answer Answer a question
      when debuging a Datalog relation. Possible answers are
      abort, valid, nonvalid, missing(Tuple), and
      wrong(Tuple), where Tuple is of the form rel(cte1, …,
      cten), where rel is the relation name and each argument
      ctei is an SQL constant. Placeholders (_) are allowed
      for missing tuples instead of constants. TAPI enabled
    • /debug_dl_current_question Display the current
      question when debuging a Datalog relation. TAPI enabled
    • /debug_dl_explain Explain the outcome of the last
      Datalog debugging session. TAPI enabled
    • /debug_dl_node_state Display Datalog debugging node
      states. TAPI enabled
    • /debug_dl_set_node Name/Arity State Set the state for
      a node with an unknown state… State can be either valid
      or nonvalid. TAPI enabled
    • /debug_dl_statistics Display Datalog debugging session
      statistics. TAPI enabled
    • /debug_sql_answer Question Answer Answer a question
      when debuging an SQL relation. Possible answers are
      abort, valid, nonvalid, missing(Tuple), and
      wrong(Tuple), where Tuple is of the form rel(cte1, …,
      cten), where rel is the relation name and each argument
      ctei is an SQL constant. Placeholders (_) are allowed
      for missing tuples instead of constants. TAPI enabled
    • /debug_sql_current_question Display the current
      question when debuging an SQL view. TAPI enabled
    • /debug_sql_node_state Display SQL debugging node
      states. TAPI enabled
    • /debug_sql_set_node Node State Set the state for a
      node with an unknown state. State can be either valid or
      nonvalid. TAPI enabled
    • /debug_sql_statistics Display SQL debugging session
      statistics. TAPI enabled
  • Changes:
    o Simplified questions in SQL debugger
    o The command interface for /debug_dl has been changed to
    be similar to /debug_sql, also adding a new option and
    optional answer. Additionally, it becomes TAPI enabled
    o Added DBMS-sensitive delimiters in output for relations
    o SQL EXCEPT DISTINCT semantics changed for committing to
    SQL standard
    o The command /get_relation is sensitive to the current
    order answer setting
    o The command /relation_modified displays all modified
    o The input /silent Input is not logged
    o Substring for a negative Offset works as: If Length is
    greater than -Offset, then the first Length+Offset+1
    characters are returned (up to the length of the string)
    o SQL semantic checking disabled for the commands
    /generate_db and /debug_sql_bench

  • Fixed bugs:
    o Not found SQL GROUP BY column name in aggregate
    subqueries for comparisons
    o Foreign key constraints were not checked if the asserted
    rule contained a null
    o Predicate transformation in Datalog debugger generated
    intermediate user identifiers, possibly clashing with
    existing predicates
    o Some TOP calls were not safe in SQL compilations
    o Some incorrect translations in ALL SQL subqueries
    o SQL INTERSECTION did not discard duplicates when they
    were enabled
    o The function iif could not be used in an expression
    o Null values were rejected for casting
    o Removed incorrect SQL duplicated and constant columns
    warnings in UPDATE statements
    o Some ill-typed expressions were not identified in the
    error message
    o Labels were not correctly parsed in multiline mode
    o SQL user identifiers including blanks were not delimited
    in some listings
    o An SQL statement including an inconsistent condition
    with type casting enabled was rejected without a hint
    o The full Datalog debugger failed for transformed source
    o SQL strings including a semicolon were not well
    o A TAPI command at the end of a script had to end in a
    o Missing answers after solving an embedded implication
    after the last goal of a previous join
    o Trying to CREATE OR REPLACE a view already defined as a
    table led to a non-meaningful error message
    o Foreign key constraints involving several attributes may
    fail to be posted
    o String constants as arguments of user relations were
    missed with expressions
    o DES exited when a timeout occurred during processing a
    script file
    o Some incorrect compilations with type casting enabled
    o Underscored variables as head arguments were removed
    when consulting a Datalog program
    o Plain Datalog debugger did not reset root tuples for
    o Datalog basic queries with removed anonymous variable
    arguments missed the PDG
    o The predicate order_by did not return an answer for a
    true goal
    o Aggregate functions as arguments in expressions might
    raise an exception
    o The Datalog debugger failed when all mutually recursive
    nodes were non valid
    o The command /set_timeout threw an error instead of
    informing of an invalid number
    o The global timeout was not applied
    o The file for the Datalog debugger was not
    included in binary distros
    o Error during parsing exclusive optional modifiers of the
    command /dependent_relations
    o Error when parsing a restricting query with multiline
    o Datalog 0-arity functions count and count_distinct were
    allowed in SQL
    o In multiline mode, the terminator “;” did not end some
    incorrect SQL / RA / TRC / DRC inputs
    o Unfolding a negated disjunction was not correct
    o SQL INTERSECT operation did not discard duplicates when
    they were enabled
    o An aggregate on a single row for a specific program
    optimization gave a null result
    o System facts were listed when development listings were
    not enabled
    o A negated LIKE in SQL lead an exception
    o Simplifying rules with failing ground primitives lead to
    o Safe goal reordering did not consider the metapredicate

// ACIDE 0.18 Release Notes //
// January, 25th 2021 //

  • Enhancements, changes and fixed bugs:
    o Added complete functionality to the SQL Debug panel.
    o Graphs in all panels are drawn with the root node at the
    o Added the RDG (Relation Dependency Graph) to the PDG
    o Lexicon configuration is kept after console reset.
    o Views opened from the Database panel are updated on
    o Catching errors when modifying an SQL view.
    o Data retrieved from views in the grid are no longer
    editable (there is not support for updatable views).
    o When the checkbox ‘SQL Text’ is checked, the
    corresponding view is shown in the Database panel.
    o Avoiding most non-TAPI commands in the communication
    between ACIDE and DES.
    o Fixed inserting and deleting tuples on tables with more
    than one column.
    o Fixed view and table grid display for external
    o Fixed SQL text display for external databases when
    modifying views.

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
o As an alpha version, there are expected many bugs and
incomplete functionalities. Please report them to

1 Like