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 |
|
|
|
|
|
|