ProvSQL Feature Coverage

This file cross-references every user-facing feature documented under doc/source/user/ against the introductory tutorial and the five case studies. It is meant as a maintenance aid: when adding a new feature, extend the tables below; when extending the tutorial or a case study, mark the additional cells.

Legend:

  • T: Tutorial (doc/source/user/tutorial.rst, Who Killed Daphine?)
  • 1: Case study 1 (casestudy1.rst, The Intelligence Agency)
  • 2: Case study 2 (casestudy2.rst, The Open Science Database)
  • 3: Case study 3 (casestudy3.rst, Île-de-France Public Transit)
  • 4: Case study 4 (casestudy4.rst, Government Ministers Over Time)
  • 5: Case study 5 (casestudy5.rst, The Wildlife Photo Archive)
  • : feature is exercised
  • (✓): feature is mentioned in passing but not actually executed
  • empty cell: feature is not covered

Setup and basics

Feature T 1 2 3 4 5
add_provenance
remove_provenance
provenance() SELECT-list function
create_provenance_mapping (table)
create_provenance_mapping_view
Hand-built mapping table
provsql.active GUC

Supported SQL constructs

Feature T 1 2 3 4 5
SELECT-FROM-WHERE / inner JOIN
Self-join
Subqueries in FROM / nested
GROUP BY
SELECT DISTINCT
EXCEPT (monus)
UNION / UNION ALL
HAVING
VALUES
CTE (WITH)
LATERAL
Window functions
FILTER clause on aggregates
CREATE TABLE AS SELECT
Provenance-bearing VIEW
INSERT … SELECT (provenance propagation)

Aggregation

Feature T 1 2 3 4 5
COUNT / SUM / MIN / MAX / AVG
string_agg / array_agg
COUNT(DISTINCT …)
Arithmetic / cast on aggregate result
choose aggregate

Circuit inspection

Feature T 1 2 3 4 5
get_gate_type
get_children
identify_token
get_nb_gates
get_infos
get_extra

Semiring evaluation

Feature T 1 2 3 4 5
sr_boolean
sr_boolexpr
sr_formula
sr_counting
sr_why
sr_how
sr_which
sr_tropical
sr_viterbi
sr_lukasiewicz
sr_minmax
sr_maxmin
sr_temporal
sr_interval_num
sr_interval_int
Custom semiring via provenance_evaluate
aggregation_evaluate

Probabilities

Feature T 1 2 3 4 5
set_prob
get_prob
probability_evaluate (default fallback)
'independent' method
'possible-worlds' method
'monte-carlo' method (✓)
'tree-decomposition' method (✓)
'compilation' (d4 / c2d / dsharp / minic2d) (✓)
'weightmc' method
expected(COUNT/SUM/MIN/MAX)
repair_key (block-independent, mulinput)

Shapley and Banzhaf values

Feature T 1 2 3 4 5
shapley
shapley_all_vars
banzhaf
banzhaf_all_vars

Where-provenance

Feature T 1 2 3 4 5
provsql.where_provenance GUC
where_provenance(col)

Data-modification tracking

Feature T 1 2 3 4 5
provsql.update_provenance GUC
INSERT / UPDATE / DELETE tracked
update_provenance log table
undo

Temporal features

Feature T 1 2 3 4 5
union_tstzintervals
timeslice
timetravel
history
time_validity_view extension
get_valid_time

Export and visualisation

Feature T 1 2 3 4 5
to_provxml
view_circuit (graph-easy)
provsql.verbose_level