| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #include <pqxx/nontransaction>
- #include "test_helpers.hxx"
- using namespace pqxx;
- // Test: nontransaction changes are committed immediately.
- namespace
- {
- int BoringYear{1977};
- void test_039()
- {
- connection conn;
- nontransaction tx1{conn};
- test::create_pqxxevents(tx1);
- std::string const Table{"pqxxevents"};
- // Verify our start condition before beginning: there must not be a 1977
- // record already.
- result R(tx1.exec(
- "SELECT * FROM " + Table +
- " "
- "WHERE year=" +
- to_string(BoringYear)));
- PQXX_CHECK_EQUAL(
- std::size(R), 0,
- "Already have a row for " + to_string(BoringYear) + ", cannot test.");
- // (Not needed, but verify that clear() works on empty containers)
- R.clear();
- PQXX_CHECK(std::empty(R), "Result is non-empty after clear().");
- // OK. Having laid that worry to rest, add a record for 1977.
- tx1.exec0(
- "INSERT INTO " + Table +
- " VALUES"
- "(" +
- to_string(BoringYear) +
- ","
- "'Yawn'"
- ")");
- // Abort tx1. Since tx1 is a nontransaction, which provides only the
- // transaction class interface without providing any form of transactional
- // integrity, this is not going to undo our work.
- tx1.abort();
- // Verify that our record was added, despite the Abort()
- nontransaction tx2(conn, "tx2");
- R = tx2.exec(
- "SELECT * FROM " + Table +
- " "
- "WHERE year=" +
- to_string(BoringYear));
- PQXX_CHECK_EQUAL(std::size(R), 1, "Unexpected result size.");
- PQXX_CHECK(R.capacity() >= std::size(R), "Result's capacity is too small.");
- R.clear();
- PQXX_CHECK(std::empty(R), "result::clear() is broken.");
- // Now remove our record again
- tx2.exec0(
- "DELETE FROM " + Table +
- " "
- "WHERE year=" +
- to_string(BoringYear));
- tx2.commit();
- // And again, verify results
- nontransaction tx3(conn, "tx3");
- R = tx3.exec(
- "SELECT * FROM " + Table +
- " "
- "WHERE year=" +
- to_string(BoringYear));
- PQXX_CHECK_EQUAL(std::size(R), 0, "Record is not gone as expected.");
- }
- PQXX_REGISTER_TEST(test_039);
- } // namespace
|