[Apologies for multiple receptions]
Hello.
This is a mail just for informing that the new release
Datalog Educational System version 6.8
http://des.sourceforge.net
Mirrored at: Datalog Educational System
And also its online interface has been made available at:
has been launched on June, 15th, 2025.
This version includes several upgrades mainly following
needs from teaching. First, the SQL semantic analyzer covers
a wider set of errors, including those that are more common
in the classroom. It detects inconsistency by resorting to
functional dependencies, which can uncover typical errors in
ORDER BY, GROUP BY and DISTINCT, among others. This is
useful not only for this system but also for an automatic
judge such as LearnSQL, which leverages this information for
student feedback. TAPI commands have been extended for such
a use case. Second, the Datalog debugger has been upgraded
by reducing the number of questions posed to the user. Also,
existing debugger commands have been extended, in particular
for its TAPI interface with other systems such as DESweb and
its graphical Datalog debugger. Third, an experimental
implementation of the semi-naïve differential optimization
has been performed in the DES engine, allowing for a better
performance of linear recursive predicates. Fourth, the new
version 0.19 of the desktop Java application ACIDE has been
bundled with DES, including: colour themes, file encoding,
stability and usability improvements. Finally, various
enhancements and new commands have been added to DES, along
with several refinements.
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 (4ª 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.8 of DES (released on June, 15th, 2025)
-
Enhancements:
o Enhanced SQL semantic analysis with functional
dependencies to uncover common pitfalls
o Added the value loose for the command
/sql_semantic_check, which includes more probabilities for
false positives, though with more error detections
o Avoided some rechecking in SQL semantic warnings
o Experimental semi-naïve optimization for linear
recursive predicates
o Intermediate files from a Datalog debugging session are
removed. Via TAPI, an ad-hoc command is used for this
purpose
o Enhanced full Datalog debugger by avoiding some subset
questions derived from former user answers
o Reduced set of automatic questions in the full Datalog
debugger
o Included dealing with an abort answer in the command
/debug_dl
o Updated help for /debug_dl
o Wrong and missing data can be specified in the command
/debug_dl_set_node
o New semantics for non-deterministic functions and impure
deterministic functions (and counterpart function
predicates)
o Setting fuzzy mode disables non-Datalog languages. As
well, setting a non-Datalog language in fuzzy mode selects
(crisp-)Datalog
o Commands /ls and /dir accepts a filename as argument.
Also, extended help provided for these commands
o New predicate and function substr with no length
o Added support for the ALL and ANY quantifiers in the
HAVING clause
o Syntax of PostgreSQL simplified recursive views is
supported (the same as already provided by DES but adding
a RECURSIVE keyword)
o SQL IS NULL operation extended to deal with expressions
o The function cast can receive an expression as its first
argument
o Added exception to show internal errors when processing
SQL queries
o Uppercase ODBC connection names in commands do not need
to be enclosed between single quotes (unless they contain
a blank space)
o ODBC connections become case-insensitive
o Only one pass in the extensional table for fetching
completed entries during fixpoint computation
o Top-level goals which have been previously completed are
not reprocessed (no fixpoint computation for them)
o Completed top-N goals become cached in the extension
table
o Along user inputs, the extension table is only cleared
for affected predicates
o Function rand/1 is solved once for each call, avoiding
resetting the seed along fixpoint computation
o The command /fp_info also displays statistics at each
fixpoint iteration if they are enabled
o When rules are removed (either manually or by the system
when removing intermediate predicates), only entries in
the extension table corresponding to those rules are
removed, instead of clearing all the table
o Host safety (sandboxing) extended to files out of the
start path, which are not allowed to be accessed
o New commands:- /debug_dl_cleanup Clean up full Datalog debugger.
Typically used with TAPI, this command removes temporary
data and files resulting from a debugging session. TAPI
enabled - /debug_dl_set_node Name/Arity State Set the state for
a node. State can be 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_solutions Display Datalog debugging
solutions for the current question. TAPI enabled - /list_predicate_classes List classes of predicates:
local (local database, either typed or not), deductive
database (typed local), mixed database (both in the
external and deductive databases), external database
(only from an external connection), user (all predicates
but built-ins), extensional (only facts or tables),
recursive (in a recursive cycle), non-recursive (in no
recursive cycle), non-dependent on recursive (not in a
recursive cycle and non-dependent on a recursive
predicate), restricted (with a restricted rule at
least), dependent on restricted, non-completeable (its
extension table cannot be closed), non-cacheable (with
no entries in the extension table), semi-naïve optimized
(amenable for this optimization) - /nodebug Disable debugging in the host Prolog
interpreter. Only working for source distributions - /parse_external_sql Display whether parsing of SQL
queries sent to external engines is enabled - /parse_external_sql Switch Enable or disable parsing
of SQL queries sent to external engines (on or off,
resp.) - /reset_statistics Reset deductive engine statistics
- /unset Var Unset the user variable Var so it becomes
no longer defined up to a new setting - /unset_flag FlagName Unset the system flag with name
FlagName so it becomes no longer defined up to a new
setting - /xpdg Display the extended predicate dependency graph,
which details the restricted predicates (if existing)
and their dependencies - /xpdg Name Display the current predicate dependency
graph restricted to predicate with name Name, detailing
the restricted predicates (if existing) and their
dependencies - /xpdg Name/Arity Display the current predicate
dependency graph restricted to predicate Name/Arity,
detailing the restricted predicates (if existing) and
their dependencies
- /debug_dl_cleanup Clean up full Datalog debugger.
-
Changes:
o The commands /drop_all_relations and /drop_all_tables
apply the CASCADE option
o The command /get_relation renders null internal
representation as null for non-TAPI invocations.
Otherwise, it displays null internal representations
o Predicates depending on non-deterministic functions
(such as rand and current_time) are not cached along user
inputs
o Non-deterministic functions (such as rand and
current_time) are evaluated only once for each solving
path. This is relevant in two scenarios: providing
different values for different depth calls along
recursion, and different values for different choice
points
o Modified semantics of top-N queries: results are not
affected by literal ordering -
Fixed bugs:
o The file des_pchr.pl was not located where expected and
the debugging session could not proceed
o Some functions incorrectly propagated semantic bindings,
leading to false positives for inconsistent conditions in
SQL semantic checking
o Some false positives in semantic warnings for EXCEPT,
UNION, DIVISION and IN SQL operators
o False positive in semantic warnings with COUNT DISTINCT
when several relations were joined
o False positive in semantic warnings for columns without
aggregates in the HAVING conditions
o False positive in semantic warnings for conditions over
grouped columns occurring in the HAVING clause without an
aggregate
o Expressions in disjunctive bodies were not translated
o Applying the full debugger to a Datalog predicate that
is not the root in the PDG of a program did not find the
erroneous predicate
o Some relations enclosed between parentheses were not
parsed
o Some built-in predicate calls were not reordered to
avoid instantiation exceptions. Some corner cases led to
incomplete answers
o Some uses of string casting yield to type errors
o ODBC connections to Oracle failed
o With ALTER TABLE it was possible to add existing column
names
o Type errors in expressions as arguments of built-in
infix operators
o The command /current_flag failed when applied to a user
flag
o Dropping delimited tables in Oracle would fail
o Datalog constant e (Euler number) raised an exception in
comparison queries (bug introduced in version 6.7)
o Selecting a string matching a built-in in SQL might fail
o Open answers led exceptions
o Non-ground goals in a top-n call might return incomplete
answers for recursive predicates in the goal solving path
o Incorrect pending choice point led /fp_info on to
display spurious text
o The extension table was not cleared when disabling
duplicates
o Some statistics related to the extension table were not
updated when inserting, deleting and updating in SQL
statements
o Under TAPI listings, an exception was raised for foreign
keys with more than one attribute.
//----------------------------//
// 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.
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