When you check out a Splitgraph image into a schema, Splitgraph enables change tracking via PostgreSQL audit triggers. When any application writes to that schema, the audit triggers will capture the changes, allowing Splitgraph to package them into new images as a set of delta-compressed patches. This way, keeping track of table history is space efficient.
You can view changes to the current working checkout or between any two images
in a repository with the
sgr diff command.
You can view the history of all changes to an image with the
sgr log command.
This shows just the history following the parent chain of an image. Passing
-t will make
Splitgraph render the history of the whole repository as a tree.
Let's create another example repository and give the new image a tag:
$ sgr example generate example/repo_2 $ sgr sql --schema example/repo_2 "SELECT * FROM demo ORDER BY key" $ sgr tag example/repo_2 original_data
You can do the next step using any SQL client that can access the
PostgreSQL database backing the Splitgraph engine, but
sgr provides a
shorthand to alter the generated image:
$ sgr example alter example/repo_2 Deleting 2 rows... Updating 2 rows... Adding 2 rows...
Let's inspect the current state of the repository:
$ sgr sql --schema example/repo_2 "SELECT * FROM demo ORDER BY key"
You should see that the first two rows are now missing, the second two rows have been altered and two more rows have been added.
Let's compare the
demo table to its previous version:
$ sgr diff example/repo_2 -v Between 97900a827962 and the current working copy: demo: added 4 rows, removed 4 rows. - (0, '5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9') - (1, '6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b') - (2, 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35') - (3, '4e07408562bedb8b60ce05c1decfe3ad16b72230967de01f640b7e4729b49fce') + (2, 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35_UPDATED') + (3, '4e07408562bedb8b60ce05c1decfe3ad16b72230967de01f640b7e4729b49fce_UPDATED') + (10, '4a44dc15364204a80fe80e9039455cc1608281820fe2b24f1e5233ade6af1dd5') + (11, '4fc82b26aecb47d2868c4efbe3581732a3e7cbcc6c2efb32062c08170a05eeb8')