summaryrefslogtreecommitdiff
path: root/libpqpp
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2016-01-10 17:53:38 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2016-01-10 17:53:38 +0000
commit564d41222d8e4b3c147fb8ab3fa22ca5bbbf8391 (patch)
tree6e5fa9ca9f88749e24d7cc7369d25083ddc1510a /libpqpp
parentOnly open select transactions when the connection doesn't already have one (diff)
downloadlibdbpp-postgresql-564d41222d8e4b3c147fb8ab3fa22ca5bbbf8391.tar.bz2
libdbpp-postgresql-564d41222d8e4b3c147fb8ab3fa22ca5bbbf8391.tar.xz
libdbpp-postgresql-564d41222d8e4b3c147fb8ab3fa22ca5bbbf8391.zip
Close select tx after close cursor, add error checking
Diffstat (limited to 'libpqpp')
-rw-r--r--libpqpp/pq-selectcommand.cpp9
-rw-r--r--libpqpp/unittests/testpq.cpp9
2 files changed, 12 insertions, 6 deletions
diff --git a/libpqpp/pq-selectcommand.cpp b/libpqpp/pq-selectcommand.cpp
index 6c02fc4..55dc02c 100644
--- a/libpqpp/pq-selectcommand.cpp
+++ b/libpqpp/pq-selectcommand.cpp
@@ -21,15 +21,12 @@ PQ::SelectCommand::SelectCommand(Connection * conn, const std::string & sql, uns
PQ::SelectCommand::~SelectCommand()
{
+ if (executed) {
+ c->checkResultFree((PQexec(c->conn, s_close.c_str())), PGRES_COMMAND_OK);
+ }
if (txOpened) {
c->commitTx();
}
- if (executed) {
- PQclear(PQexec(c->conn, s_close.c_str()));
- if (execRes) {
- PQclear(execRes);
- }
- }
}
std::string
diff --git a/libpqpp/unittests/testpq.cpp b/libpqpp/unittests/testpq.cpp
index c49fa34..96e5611 100644
--- a/libpqpp/unittests/testpq.cpp
+++ b/libpqpp/unittests/testpq.cpp
@@ -160,6 +160,15 @@ BOOST_AUTO_TEST_CASE( bulkload )
delete ro;
}
+BOOST_AUTO_TEST_CASE( nofetch )
+{
+ auto ro = DB::MockDatabase::openConnectionTo("pqmock");
+ auto count = ro->newSelectCommand("SELECT * FROM bulktest");
+ count->execute();
+ delete count;
+ delete ro;
+}
+
BOOST_AUTO_TEST_CASE( bigIterate )
{
auto ro = DB::MockDatabase::openConnectionTo("pqmock");