The provenance of query is represented as a single relation that contains the original query results augmented with provenance information.
Perm uses an SQL language extension called SQL-PLE to enable a user to issue provenance queries (e.g. SELECT PROVENANCE).
Perm rewrites provenance queries to normal SQL queries inside PostgresSQL (between parser and planner).
shop
name | numEmpl |
---|---|
Merdies | 3 |
Joba | 14 |
sales
sName | itemId |
---|---|
Merdies | 1 |
Merdies | 2 |
Merdies | 2 |
Joba | 3 |
Joba | 3 |
items
id | price |
---|---|
1 | 100 |
2 | 10 |
3 | 25 |
SELECT name, sum(price) FROM shop, sales, items WHERE name=sName AND itemID=id GROUP BY name
name | sum(price) |
---|---|
Merdies | 120 |
Joba | 50 |
SELECT PROVENANCE name, sum(price) FROM shop, sales, items WHERE name=sName AND itemID=id GROUP BY name
name | sum(price) | pName | pNumEmpl | pSName | pItemId | pId | pPrice |
---|---|---|---|---|---|---|---|
Merdies | 120 | Merdies | 3 | Merdies | 1 | 1 | 100 |
Merdies | 120 | Merdies | 3 | Merdies | 2 | 2 | 10 |
Merdies | 120 | Merdies | 3 | Merdies | 2 | 2 | 10 |
Joba | 50 | Joba | 14 | Joba | 3 | 3 | 25 |
Joba | 50 | Joba | 14 | Joba | 3 | 3 | 25 |