[Apologies for multiple receptions]
Hello.
Hoping and wishing the best in current circumstances, this
is a mail just for informing that the new release
Datalog Educational System version 6.7
http://des.sourceforge.net
Mirrored at: Datalog Educational System
And also its online interface has been made available at:
has been launched on September, 4th, 2021, and tested for
SICStus Prolog 4.4.1
SWI-Prolog 7.4.2
There have been many upgrades in the current version driven
by the need to include this system as part of another in
order to benefit from the SQL semantic error analyser.
First, a new string solver has been added to improve the
precision analysis in the lexicographic domain. Also, a
domain constraint has been included in the translation of
integer conditions. Several new semantic warnings for
selected SQL clauses have been added. Second, SQL have been
extended with messages, checks, improvements, naming
suggestions, and a bunch of new functions, with counterpart
Datalog predicates. Third, some commands have been added, in
particular for a TAPI connection to an external system to
get semantic analysis information. Also, a new command
allows for interactive processing of files, allowing the
user to interact with the system via input commands (useful
in particular for games). Finally, other commands have been
added, and several changes have been made.
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.7 of DES (released on September, 4th, 2021)
-
Enhancements:
o Added string solver for semantic analysis with
disequality, inequality and domain constraints
o Improved precision for tautological and inconsistent
semantic warnings involving autocast
o Added domain constraint to integer solver for semantic
analysis
o Missing join condition, inconsistent condition, constant
argument warnings for aggregates
o Added SQL semantic warning for grouped columns in a
HAVING clause without an aggregate (Error 18 in [BG06])
o Added SQL semantic warning for repeated DISTINCT
o Added SQL semantic warning for COUNT on a not-null
constrained argument
o Added semantic warning for OFFSET 0
o Dropped semantic false positive for DISTINCT in IN
subqueries, which leads to better compilations
o Improved SQL semantic analysis precision for automatic
type casting
o An SQL constraint may receive a void name
o Inform about possible column names when the requested
column does not exist
o An SQL constraint name can be optionally given when
altering tables
o Improved and more precise error messages for SQL
grouping statements
o Interval check in SQL BETWEEN
o Reduced arguments in ORDER BY compilations
o SQL TOP, OFFSET and LIMIT clauses and RA top operator
can include expressions instead of just integers
o SQL constants can be specified as 0-arity functions
(with parentheses)
o Simplified compilations for SQL MINUS DISTINCT and
INTERSECT DISTINCT
o Removed unneeded DISTINCT’s in SQL DIVISION translation
o Simplification of true goals in top
o Reworked help on built-ins, which becomes interactive
o Added help on selection functions
o Added exception for compilation failures
o Added context information in stratum solving for verbose
mode
o Added informative message for trying to removing an
unexisting constraint
o Formatted exceptions on evaluation error
o More flexible date formats
o Reused temporary rule identifiers
o Simplification of true goals in top
o The /if command accepts a generic Datalog goal, instead
of just a comparison condition. Thus, the condition (goal)
may have to be enclosed between parentheses
o The commands /save_state and /restore_state become
TAPI-enabledo New functions and predicates. For each function below,
there is a counterpart Datalog predicate with the same
name prepended with $, and with an extra final argument as
output:- add_months(X,Y) Add to the datetime X the number of
months Y - datetime_add(X,Y) Return the datetime X increased by
the number Y. If X is a date, Y represents days, and
seconds otherwise. This function is equivalent to the
overloaded X + Y - datetime_sub(X,Y) If Y is a number, return the
datetime X decreased by the days Y. If X and Y are
dates, return the number of days between them. If X and
Y are either times or timestamps, return the number of
seconds between them. This function is equivalent to the
overloaded X - Y - greatest(X1,…,Xn) Return the greatest element Xi in
the lexicographic order - instr(X,Y) Return the first numeric position in the
string X of the searched substring Y - last_day(X) Return the last day of the month for the
given datetime X - least(X1,…,Xn) Return the least element Xi in the
lexicographic order - mod(X,Y) X modulo Y. Apply to two integers and return
an integer - nvl2(X,Y,Z) Return either Y if X is a not null value,
or Z otherwise - replace(X,Y,Z) Replace the string Y by Z in the given
string X - reverse(X) Reverse the string X
- rpad(X,Y) Return the given string X padded to the
right with spaces, with the given total length Y - rpad(X,Y,Z) Return the given string X padded to the
right with Z, with the given total length Y - to_char(X) Convert a datetime X to a string
- to_char(X,Y) Convert a datetime to a string for a
given format - to_date(X) Convert the string X to a date
- to_date(X,Y) Convert the string X to a date for the
given format Y - trim(X) Remove both leading and trailing spaces from
the string X
o New commands:
- /command_assertions List commands that can be used as
assertions. A Datalog program can contain assertions :-
command(arg1,…,argn), where command is the command
name, and argi are its arguments - /input Variable Wait for a user input (terminated by
Intro) to be set on the user variable Variable - /list_predicates List predicates (name and arity).
Include intermediate predicates which are a result of
compilations if development mode is enabled (cf. the
command /development). TAPI enabled - /mparse Input Parse the next input lines as they were
directly submitted from the prompt, terminated by a
single line containing $eot. Return syntax errors and
semantic warnings, if present in Input (only SQL DQL
queries supported up to now). TAPI enabled - /mtapi Process the next input lines by TAPI. It
behaves as /tapi Input, where Input are the lines
following /mtapi and terminated by a single line
containing $eot - /parse Input Parse the input as it was directly
submitted from the prompt, avoiding its execution.
Return syntax errors and semantic warnings, if present
in Input (only SQL DQL queries supported up to now).
TAPI enabled - /run Filename [Parameters] Reminiscent of old 8 bit
computers, this command allows for processing a file but
retaining user input for selected commands such as
/input. Process the contents of Filename as if they were
typed at the system prompt. Extensions by default are:
.sql and .ini. When looking for a file f, the following
filenames are checked in this order: f, f.sql, and
f.ini. A parameter is a string delimited by either
blanks or double quotes (") if the parameter contains a
blank. The same is applied to Filename. The value for
each parameter is retrieved by the tokens parv1,
parv2, … for the first, second, … parameter,
respectively - /sandboxed Synonym for /host_safe. Display whether
host safe mode is enabled (on) or not (off). Enabling
host safe mode prevents users and applications using DES
from accessing the host (typically used to shield the
host from outer attacks, hide host information, protect
the file system, and so on) - /sandboxed Switch Synonym for /host_safe Switch.
Enable host safe mode. Once enabled, this mode cannot be
disabled
- add_months(X,Y) Add to the datetime X the number of
-
Changes:
o The command /builtins displays an interactive help based
on categories. This can navigate to the interactive
command help and vice versa
o Added separators in interactive help
o TAPI commands does not output elapsed time
o String values in SQL results are delimited between
single quotes
o Null values are placed after any other symbol in the
lexicographic and numeric orders. This affects the
previous ordering of answer displays
o Write commands changed from category Implementor to
Scripting
o When silent mode is enabled (with the command /silent
on), display prompt inputs on batch processing are not
displayed, thus behaving more similar to applying /silent
Input to each line in the batch file
o Each call to rand returns the same value along fixpoint
computation to avoid floundering (though different calls
return in general different values) -
Fixed bugs:
o Exception catching in /save_ddb
o Nulls were not ignored when imposing a foreign key
constraint
o Repeated column names in INSERT INTO did not raise an
error
o Exception in some cases of RA natural full join
o Dropping a table with a foreign key to itselft raised
unlimited warnings
o Some expressions involving SQL statements produced
unordered compiled goals
o Incompatible schemas in SQL/RA division involving
subqueries raised an exception instead of informing about
the actual error
o SELECT … INTO modified system variables instead of
user variables
o Missing relation renamings in the right operand of SQL
MINUS and INTERSECT
o Tuples causing constraint violations were not always
quoted
o The constant pi was not detected with its type in SQL
expressions
o Translation of nested full outer joins were incorrect
o Incorrect scoping in alias passing for SQL AND
conditions
o False positive in missing join condition for a
conjunctive condition
o Exception in corner cases of SQL autocasting, including
arithmetic constants
o Expressions in IN statements were not handled properly
o Functions iif and case were not correctly solved in
assumed contexts
o The system flag command_elapsed_time/2 was not deleted
for TAPI commands
o Tuples with expressions in the left side of IN / NOT IN
made parsing to fail
o Strings with the name of arithmetic constants were not
correctly handled
o Unhandled exception in group_by out of bounds for
propositional goals
o SQL debugger statistics were not shown with the command
/debug_sql_statistics after a debugging session
o Exception in run-time autocasting for unquoted atoms
o Some SQL remarks in multiline mode were not correctly
parsed
o Some nested top calls missed variables and solutions
o Applying top on comparison calls dealt no answer
o Arguments of /debug_dl were not read properly
o A bug in determining the stratum of a metapredicate goal
implied missing answers in some queries
//----------------------------//
// 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
top.
o Added the RDG (Relation Dependency Graph) to the PDG
panel.
o Lexicon configuration is kept after console reset.
o Views opened from the Database panel are updated on
opening.
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
databases.
o Fixed SQL text display for external databases when
modifying views.
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