[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:
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
- /cls Clear the console screen by emitting ANSI escape
-
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