SourceForge.net Logo
Release Notes

Version 6.8 of DES adds to previous version (6.7):

  • Enhancements:
    • Enhanced SQL semantic analysis with functional dependencies to uncover common pitfalls
    • Added the value loose for the command /sql_semantic_check, which includes more probabilities for false positives, though with more error detections
    • Avoided some rechecking in SQL semantic warnings
    • Experimental semi-naïve optimization for linear recursive predicates
    • Intermediate files from a Datalog debugging session are removed. Via TAPI, an ad-hoc command is used for this purpose
    • Enhanced full Datalog debugger by avoiding some subset questions derived from former user answers
    • Reduced set of automatic questions in the full Datalog debugger
    • Included dealing with an abort answer in the command /debug_dl
    • Updated help for /debug_dl
    • Wrong and missing data can be specified in the command /debug_dl_set_node
    • New semantics for non-deterministic functions and impure deterministic functions (and counterpart function predicates)
    • Setting fuzzy mode disables non-Datalog languages. As well, setting a non-Datalog language in fuzzy mode selects (crisp-)Datalog
    • Commands /ls and /dir accepts a filename as argument. Also, extended help provided for these commands
    • New predicate and function substr with no length
    • Added support for the ALL and ANY quantifiers in the HAVING clause
    • Syntax of PostgreSQL simplified recursive views is supported (the same as already provided by DES but adding a RECURSIVE keyword)
    • SQL IS NULL operation extended to deal with expressions
    • The function cast can receive an expression as its first argument
    • Added exception to show internal errors when processing SQL queries
    • Uppercase ODBC connection names in commands do not need to be enclosed between single quotes (unless they contain a blank space)
    • ODBC connections become case-insensitive
    • Only one pass in the extensional table for fetching completed entries during fixpoint computation
    • Top-level goals which have been previously completed are not reprocessed (no fixpoint computation for them)
    • Completed top-N goals become cached in the extension table
    • Along user inputs, the extension table is only cleared for affected predicates
    • Function rand/1 is solved once for each call, avoiding resetting the seed along fixpoint computation
    • The command /fp_info also displays statistics at each fixpoint iteration if they are enabled
    • 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
    • Host safety (sandboxing) extended to files out of the start path, which are not allowed to be accessed
    • 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
  • Changes:
    • The commands /drop_all_relations and /drop_all_tables apply the CASCADE option
    • The command /get_relation renders null internal representation as null for non-TAPI invocations. Otherwise, it displays null internal representations
    • Predicates depending on non-deterministic functions (such as rand and current_time) are not cached along user inputs
    • 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
    • Modified semantics of top-N queries: results are not affected by literal ordering
  • Fixed bugs:
    • The file des_pchr.pl was not located where expected and the debugging session could not proceed
    • Some functions incorrectly propagated semantic bindings, leading to false positives for inconsistent conditions in SQL semantic checking
    • Some false positives in semantic warnings for EXCEPT, UNION, DIVISION and IN SQL operators
    • False positive in semantic warnings with COUNT DISTINCT when several relations were joined
    • False positive in semantic warnings  for columns without aggregates in the HAVING conditions
    • False positive in semantic warnings for conditions over grouped columns occurring in the HAVING clause without an aggregate
    • Expressions in disjunctive bodies were not translated
    • 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
    • Some relations enclosed between parentheses were not parsed
    • Some built-in predicate calls were not reordered to avoid instantiation exceptions. Some corner cases led to incomplete answers
    • Some uses of string casting yield to type errors
    • ODBC connections to Oracle failed
    • With ALTER TABLE it was possible to add existing column names
    • Type errors in expressions as arguments of built-in infix operators
    • The command /current_flag failed when applied to a user flag
    • Dropping delimited tables in Oracle would fail
    • Datalog constant e (Euler number) raised an exception in comparison queries (bug introduced in version 6.7)
    • Selecting a string matching a built-in in SQL might fail
    • Open answers led exceptions
    • Non-ground goals in a top-n call might return incomplete answers for recursive predicates in the goal solving path
    • Incorrect pending choice point led /fp_info on to display spurious text
    • The extension table was not cleared when disabling duplicates
    • Some statistics related to the extension table were not updated when inserting, deleting and updating in SQL statements
    • Under TAPI listings, an exception was raised for foreign keys with more than one attribute

Previous versions