ProvSQL SQL API
Adding support for provenance and uncertainty management to PostgreSQL databases
Loading...
Searching...
No Matches
provsql.sql File Reference

ProvSQL PL/pgSQL extension code. More...

Go to the source code of this file.

Types

TYPE  provsql.GATE_WITH_DESC
 Row type for sub_circuit_with_desc results. More...
 
TYPE  provsql.update_provenance
 Table recording the history of INSERT, UPDATE, DELETE, and UNDO operations. More...
 

Schemas

namespace  provsql
 provsql schema
 

Enumerations

ENUM  provsql.PROVENANCE_GATE {
  provsql.input , provsql.plus , provsql.times , provsql.monus ,
  provsql.project , provsql.zero , provsql.one , provsql.eq ,
  provsql.agg , provsql.semimod , provsql.cmp , provsql.delta ,
  provsql.value , provsql.mulinput , provsql.update
}
 Provenance circuit gate types. More...
 
ENUM  provsql.QUERY_TYPE_ENUM { provsql.INSERT , provsql.DELETE , provsql.UPDATE , provsql.UNDO }
 Types of update operations tracked for temporal provenance. More...
 

Functions

VOID provsql.create_gate (UUID token, PROVENANCE_GATE type, UUID[] children=NULL)
 Create a new gate in the provenance circuit.
 
PROVENANCE_GATE provsql.get_gate_type (UUID token)
 Return the gate type of a provenance token.
 
UUID[] provsql.get_children (UUID token)
 Return the children of a provenance gate.
 
VOID provsql.set_prob (UUID token, DOUBLE PRECISION p)
 Set the probability of an input gate.
 
DOUBLE PRECISION provsql.get_prob (UUID token)
 Get the probability associated with an input gate.
 
VOID provsql.set_infos (UUID token, INT info1, INT info2=NULL)
 Set additional INTEGER values on provenance circuit gate.
 
RECORD provsql.get_infos (UUID token, OUT INT info1, OUT INT info2)
 Get the INTEGER info values associated with a circuit gate.
 
VOID provsql.set_extra (UUID token, TEXT data)
 Set extra TEXT information on provenance circuit gate.
 
TEXT provsql.get_extra (UUID token)
 Get the TEXT-encoded extra data associated with a circuit gate.
 
BIGINT provsql.get_nb_gates ()
 Return the total number of gates in the provenance circuit.
 
TRIGGER provsql.add_gate_trigger ()
 Trigger function that creates an input gate for each newly inserted row.
 
TRIGGER provsql.delete_statement_trigger ()
 Trigger function for DELETE statement provenance tracking.
 
VOID provsql.add_provenance (REGCLASS _tbl)
 Enable provenance tracking on an existing table.
 
VOID provsql.remove_provenance (REGCLASS _tbl)
 Remove provenance tracking from a table.
 
VOID provsql.repair_key (REGCLASS _tbl, TEXT key_att)
 Set up provenance for a table with duplicate key values.
 
VOID provsql.create_provenance_mapping (TEXT newtbl, REGCLASS oldtbl, TEXT att, BOOL preserve_case='f')
 Create a provenance mapping table from an attribute.
 
UUID provsql.uuid_ns_provsql ()
 Return the ProvSQL UUID namespace (used for deterministic gate UUIDs)
 
UUID provsql.gate_zero ()
 Return the UUID of the semiring zero gate.
 
UUID provsql.gate_one ()
 Return the UUID of the semiring one gate.
 
DOUBLE PRECISION provsql.epsilon ()
 Return the epsilon threshold used for probability comparisons.
 
UUID provsql.provenance_times (UUID[] tokens)
 Create a times (product) gate from multiple provenance tokens.
 
UUID provsql.provenance_monus (UUID token1, UUID token2)
 Create a monus (difference) gate from two provenance tokens.
 
UUID provsql.provenance_project (UUID token, INT[] positions)
 Create a project gate for where-provenance tracking.
 
UUID provsql.provenance_eq (UUID token, INT pos1, INT pos2)
 Create an equijoin gate for where-provenance tracking.
 
UUID provsql.provenance_plus (UUID[] tokens)
 Create a plus (sum) gate from an array of provenance tokens.
 
UUID provsql.provenance_cmp (UUID left_token, OID comparison_op, UUID right_token)
 Create a comparison gate for HAVING clause provenance.
 
ANYELEMENT provsql.provenance_evaluate_compiled (UUID token, REGCLASS token2value, TEXT semiring, ANYELEMENT element_one)
 Evaluate provenance using a compiled (built-in) semiring.
 
ANYELEMENT provsql.provenance_evaluate (UUID token, REGCLASS token2value, ANYELEMENT element_one, REGTYPE value_type, REGPROC plus_function, REGPROC times_function, REGPROC monus_function, REGPROC delta_function)
 Evaluate provenance over a user-defined semiring (PL/pgSQL version)
 
ANYELEMENT provsql.aggregation_evaluate (UUID token, REGCLASS token2value, REGPROC agg_function_final, REGPROC agg_function, REGPROC semimod_function, ANYELEMENT element_one, REGTYPE value_type, REGPROC plus_function, REGPROC times_function, REGPROC monus_function, REGPROC delta_function)
 Evaluate aggregate provenance over a user-defined semiring (PL/pgSQL version)
 
ANYELEMENT provsql.provenance_evaluate (UUID token, REGCLASS token2value, ANYELEMENT element_one, REGPROC plus_function, REGPROC times_function, REGPROC monus_function=NULL, REGPROC delta_function=NULL)
 Evaluate provenance over a user-defined semiring (C version)
 
ANYELEMENT provsql.aggregation_evaluate (UUID token, REGCLASS token2value, REGPROC agg_function_final, REGPROC agg_function, REGPROC semimod_function, ANYELEMENT element_one, REGPROC plus_function, REGPROC times_function, REGPROC monus_function=NULL, REGPROC delta_function=NULL)
 Evaluate aggregate provenance over a user-defined semiring (C version)
 
SETOF GATE_WITH_DESC provsql.sub_circuit_with_desc (UUID token, REGCLASS token2desc)
 Return the sub-circuit reachable from a token, with descriptions.
 
VOID provsql.identify_token (UUID token, OUT REGCLASS table_name, OUT INTEGER nb_columns)
 Identify which table and how many columns a provenance token belongs to.
 
TABLE provsql.sub_circuit_for_where (UUID token)
 Return the sub-circuit for where-provenance computation.
 
AGG_TOKEN provsql.agg_token_in (CSTRING)
 Input function for the AGG_TOKEN type (parses TEXT representation)
 
CSTRING provsql.agg_token_out (AGG_TOKEN)
 Output function for the AGG_TOKEN type (produces TEXT representation)
 
TEXT provsql.agg_token_cast (AGG_TOKEN)
 Cast an AGG_TOKEN to its TEXT representation.
 
UUID provsql.agg_token_uuid (AGG_TOKEN aggtok)
 Extract the UUID from an AGG_TOKEN (implicit cast to UUID)
 
UUID provsql.CAST(AGG_TOKEN AS UUID) (AGG_TOKEN)
 Implicit PostgreSQL cast from AGG_TOKEN to UUID (delegates to agg_token_uuid())
 
BOOLEAN provsql.agg_token_comp_numeric (AGG_TOKEN a, NUMERIC b)
 Placeholder comparison of AGG_TOKEN with NUMERIC.
 
BOOLEAN provsql.numeric_comp_agg_token (NUMERIC a, AGG_TOKEN b)
 Placeholder comparison of NUMERIC with AGG_TOKEN.
 
BOOLEAN provsql.agg_token_lt_numeric (AGG_TOKEN left, NUMERIC right)
 SQL operator AGG_TOKEN < NUMERIC (placeholder rewritten by ProvSQL at plan time)
 
BOOLEAN provsql.numeric_lt_agg_token (NUMERIC left, AGG_TOKEN right)
 SQL operator NUMERIC < AGG_TOKEN (placeholder rewritten by ProvSQL at plan time)
 
BOOLEAN provsql.agg_token_le_numeric (AGG_TOKEN left, NUMERIC right)
 SQL operator AGG_TOKEN <= NUMERIC (placeholder rewritten by ProvSQL at plan time)
 
BOOLEAN provsql.numeric_le_agg_token (NUMERIC left, AGG_TOKEN right)
 SQL operator NUMERIC <= AGG_TOKEN (placeholder rewritten by ProvSQL at plan time)
 
BOOLEAN provsql.agg_token_eq_numeric (AGG_TOKEN left, NUMERIC right)
 SQL operator AGG_TOKEN = NUMERIC (placeholder rewritten by ProvSQL at plan time)
 
BOOLEAN provsql.numeric_eq_agg_token (NUMERIC left, AGG_TOKEN right)
 SQL operator NUMERIC = AGG_TOKEN (placeholder rewritten by ProvSQL at plan time)
 
BOOLEAN provsql.agg_token_ne_numeric (AGG_TOKEN left, NUMERIC right)
 SQL operator AGG_TOKEN <> NUMERIC (placeholder rewritten by ProvSQL at plan time)
 
BOOLEAN provsql.numeric_ne_agg_token (NUMERIC left, AGG_TOKEN right)
 SQL operator NUMERIC <> AGG_TOKEN (placeholder rewritten by ProvSQL at plan time)
 
BOOLEAN provsql.agg_token_ge_numeric (AGG_TOKEN left, NUMERIC right)
 SQL operator AGG_TOKEN >= NUMERIC (placeholder rewritten by ProvSQL at plan time)
 
BOOLEAN provsql.numeric_ge_agg_token (NUMERIC left, AGG_TOKEN right)
 SQL operator NUMERIC >= AGG_TOKEN (placeholder rewritten by ProvSQL at plan time)
 
BOOLEAN provsql.agg_token_gt_numeric (AGG_TOKEN left, NUMERIC right)
 SQL operator AGG_TOKEN > NUMERIC (placeholder rewritten by ProvSQL at plan time)
 
BOOLEAN provsql.numeric_gt_agg_token (NUMERIC left, AGG_TOKEN right)
 SQL operator NUMERIC > AGG_TOKEN (placeholder rewritten by ProvSQL at plan time)
 
UUID provsql.provenance_delta (UUID token)
 Create a δ-semiring gate wrapping a provenance token.
 
AGG_TOKEN provsql.provenance_aggregate (INTEGER aggfnoid, INTEGER aggtype, ANYELEMENT val, UUID[] tokens)
 Build an aggregate provenance gate from grouped tokens.
 
UUID provsql.provenance_semimod (ANYELEMENT val, UUID token)
 Create a semimodule scalar multiplication gate.
 
DOUBLE PRECISION provsql.probability_evaluate (UUID token, TEXT method=NULL, TEXT arguments=NULL)
 Compute the probability of a provenance token.
 
DOUBLE PRECISION provsql.expected (ANYELEMENT input, UUID prov=gate_one(), TEXT method=NULL, TEXT arguments=NULL)
 Compute the expected value of an aggregate expression.
 
DOUBLE PRECISION provsql.shapley (UUID token, UUID variable, TEXT method=NULL, TEXT arguments=NULL, BOOLEAN banzhaf='f')
 Compute the Shapley value of an input variable.
 
SETOF RECORD provsql.shapley_all_vars (UUID token, TEXT method=NULL, TEXT arguments=NULL, BOOLEAN banzhaf='f', OUT UUID variable, OUT DOUBLE PRECISIONvalue)
 Compute Shapley values for all input variables at once.
 
DOUBLE PRECISION provsql.banzhaf (UUID token, UUID variable, TEXT method=NULL, TEXT arguments=NULL)
 Compute the Banzhaf power index of an input variable.
 
SETOF RECORD provsql.banzhaf_all_vars (UUID token, TEXT method=NULL, TEXT arguments=NULL, OUT UUID variable, OUT DOUBLE PRECISIONvalue)
 Compute Banzhaf power indices for all input variables at once.
 
TEXT provsql.view_circuit (UUID token, REGCLASS token2desc, INT dbg=0)
 Return a DOT or TEXT visualization of the provenance circuit.
 
TEXT provsql.to_provxml (UUID token, REGCLASS token2desc=NULL)
 Return an XML representation of the provenance circuit.
 
UUID provsql.provenance ()
 Return the provenance token of the current query result tuple.
 
TEXT provsql.where_provenance (UUID token)
 Compute where-provenance for a result tuple.
 
VOID provsql.reset_constants_cache ()
 Reset the internal cache of OID constants used by the query rewriter.
 
VARCHAR provsql.sr_formula (ANYELEMENT token, REGCLASS token2value)
 Evaluate provenance as a symbolic formula (e.g., "a ⊗ b ⊕ c")
 
INT provsql.sr_counting (ANYELEMENT token, REGCLASS token2value)
 Evaluate provenance over the counting semiring (ℕ)
 
VARCHAR provsql.sr_why (ANYELEMENT token, REGCLASS token2value)
 Evaluate provenance as why-provenance (set of witness sets)
 
VARCHAR provsql.sr_boolexpr (ANYELEMENT token)
 Evaluate provenance as a Boolean expression.
 
BOOLEAN provsql.sr_boolean (ANYELEMENT token, REGCLASS token2value)
 Evaluate provenance over the Boolean semiring (true/false)
 
ANYELEMENT provsql.choose_function (ANYELEMENT state, ANYELEMENT data)
 Transition function for the choose aggregate (keeps first non-NULL value)
 
VOID provsql.choose (ANYELEMENT)
 Aggregate that returns an arbitrary non-NULL value from a group.
 
TRIGGER provsql.insert_statement_trigger ()
 Trigger function for INSERT statement provenance tracking.
 
TRIGGER provsql.update_statement_trigger ()
 Trigger function for UPDATE statement provenance tracking.
 
TSTZMULTIRANGE provsql.union_tstzintervals_plus_state (TSTZMULTIRANGE state, TSTZMULTIRANGE value)
 Transition function for temporal union (plus): merge multiranges.
 
TSTZMULTIRANGE provsql.union_tstzintervals_times_state (TSTZMULTIRANGE state, TSTZMULTIRANGE value)
 Transition function for temporal intersection (times): intersect multiranges.
 
VOID provsql.union_tstzintervals_plus (TSTZMULTIRANGE)
 Aggregate: union of TIMESTAMP multiranges (semiring plus)
 
VOID provsql.union_tstzintervals_times (TSTZMULTIRANGE)
 Aggregate: intersection of TIMESTAMP multiranges (semiring times)
 
TSTZMULTIRANGE provsql.union_tstzintervals_monus (TSTZMULTIRANGE state, TSTZMULTIRANGE value)
 Temporal monus: subtract one multirange from another.
 
TSTZMULTIRANGE provsql.union_tstzintervals (UUID token, REGCLASS token2value)
 Evaluate temporal provenance as a TIMESTAMP multirange.
 
VOID provsql.create_provenance_mapping_view (TEXT newview, REGCLASS oldtbl, TEXT att, BOOL preserve_case=false)
 Create a view mapping provenance tokens to attribute values.
 
SETOF RECORD provsql.timetravel (TEXT tablename, TIMESTAMPTZ at_time)
 Query a table as it was at a specific point in time.
 
SETOF RECORD provsql.timeslice (TEXT tablename, TIMESTAMPTZ from_time, TIMESTAMPTZ to_time)
 Query a table for rows valid during a time interval.
 
SETOF RECORD provsql.history (TEXT tablename, TEXT[] col_names, TEXT[] col_values)
 Query the full temporal history of specific rows.
 
TSTZMULTIRANGE provsql.get_valid_time (UUID token, TEXT tablename)
 Get the valid time range for a specific tuple.
 
UUID provsql.undo (UUID c)
 Undo a previously recorded update operation.
 
UUID provsql.replace_the_circuit (UUID x, UUID c, UUID u)
 Recursively rewrite a circuit to undo a specific operation.
 

Detailed Description

ProvSQL PL/pgSQL extension code.

This file contains the PL/pgSQL code of the ProvSQL extension. This extension requires the standard UUID-ossp extension.

Definition in file provsql.sql.