test89.cxx 1022 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include <iostream>
  2. #include <pqxx/subtransaction>
  3. #include <pqxx/transaction>
  4. #include "test_helpers.hxx"
  5. // Test program for libpqxx. Attempt to perform nested queries on various
  6. // types of connections.
  7. namespace
  8. {
  9. void test_089()
  10. {
  11. pqxx::connection C;
  12. // Trivial test: create subtransactions, and commit/abort
  13. pqxx::work T0(C, "T0");
  14. T0.exec1("SELECT 'T0 starts'");
  15. pqxx::subtransaction T0a(T0, "T0a");
  16. T0a.commit();
  17. pqxx::subtransaction T0b(T0, "T0b");
  18. T0b.abort();
  19. T0.exec1("SELECT 'T0 ends'");
  20. T0.commit();
  21. // Basic functionality: perform query in subtransaction; abort, continue
  22. pqxx::work T1(C, "T1");
  23. T1.exec1("SELECT 'T1 starts'");
  24. pqxx::subtransaction T1a(T1, "T1a");
  25. T1a.exec1("SELECT ' a'");
  26. T1a.commit();
  27. pqxx::subtransaction T1b(T1, "T1b");
  28. T1b.exec1("SELECT ' b'");
  29. T1b.abort();
  30. pqxx::subtransaction T1c(T1, "T1c");
  31. T1c.exec1("SELECT ' c'");
  32. T1c.commit();
  33. T1.exec1("SELECT 'T1 ends'");
  34. T1.commit();
  35. }
  36. } // namespace
  37. PQXX_REGISTER_TEST(test_089);