use DBI;
use Data::Dumper;

$dad = DBI->connect('dbi:Pg:', '', '', {AutoCommit => 0, RaiseError => 1});
$kid = DBI->connect('dbi:Pg:', '', '', {AutoCommit => 0, RaiseError => 1});

# Cleanup...
$kid->do("DROP TABLE IF EXISTS foo");
$kid->do("CREATE TABLE foo AS VALUES (4)");
print "snap: ", $kid->selectrow_array("SELECT txid_current_snapshot()"), "\n";
$kid->commit();

# Dad opens a transaction...
$dad->do("SET bytea_output = 'escape'");
$dad->do('CREATE TEMP TABLE x ()'); # Get an xid
# Dad exports its snapshot for the kid to take it over...
($snap) = $dad->selectrow_array('SELECT pg_export_snapshot()');
print "snap: ", $dad->selectrow_array("SELECT txid_current_snapshot()"), "\n";


$kid->do("set default_transaction_isolation to serializable");
$kid->commit;

$kid->do('DROP TABLE foo');
print "snap: ", $kid->selectrow_array("SELECT txid_current_snapshot()"), "\n";
$kid->commit;

print "snap: ", $kid->selectrow_array("SELECT txid_current_snapshot()"), "\n";
$kid->do("SELECT pg_import_snapshot('$snap')");
print "snap: ", $kid->selectrow_array("SELECT txid_current_snapshot()"), "\n";
print "Kid catalog: " . Dumper($kid->selectall_arrayref("SELECT * FROM pg_class WHERE relname = 'foo'"));
print "Kid direct: " . Dumper($kid->selectall_arrayref("SELECT * FROM foo"));
$kid->rollback();
