class TestPostgresTransaction < DBDConfig.testbase(:postgresql) def test_rollback dbh = get_dbh dbh["AutoCommit"] = false @sth = dbh.prepare('insert into names (name, age) values (?, ?)') @sth.execute("Foo", 51) dbh.rollback assert_equal 1, @sth.rows @sth.finish @sth = dbh.prepare('select name, age from names where name=?') @sth.execute("Foo") assert !@sth.fetch @sth.finish dbh.disconnect end def test_commit dbh = get_dbh dbh["AutoCommit"] = false @sth = dbh.prepare('insert into names (name, age) values (?, ?)') @sth.execute("Foo", 51) dbh.commit assert_equal 1, @sth.rows @sth.finish @sth = dbh.prepare('select name, age from names where name=?') @sth.execute("Foo") row = @sth.fetch assert row assert_equal "Foo", row[0] assert_equal 51, row[1] @sth.finish dbh.disconnect end def test_select_transaction # per bug #10466 dbh = get_dbh dbh["AutoCommit"] = false @sth = dbh.prepare('select * from test_insert(?, ?)'); @sth.execute("Foo", 51) dbh.rollback @sth.finish @sth = dbh.prepare('select name, age from names where name=?') @sth.execute("Foo") assert !@sth.fetch @sth.finish dbh.disconnect end def get_dbh config = DBDConfig.get_config DBI.connect("dbi:Pg:#{config['postgresql']['dbname']}", config['postgresql']['username'], config['postgresql']['password']) end end