summaryrefslogtreecommitdiff
path: root/libpqpp/pq-command.cpp
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2017-01-06 02:11:57 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2017-01-08 19:33:31 +0000
commite9ecbccaa6547cb067653e7240947a76cc60d8ed (patch)
tree99531b2014984151cf2f3dfc7bdc8ca5e234a600 /libpqpp/pq-command.cpp
parentFix bug where prepared statement cache wasn't cleared on connection reset lea... (diff)
downloadlibdbpp-postgresql-e9ecbccaa6547cb067653e7240947a76cc60d8ed.tar.bz2
libdbpp-postgresql-e9ecbccaa6547cb067653e7240947a76cc60d8ed.tar.xz
libdbpp-postgresql-e9ecbccaa6547cb067653e7240947a76cc60d8ed.zip
Use SQL hash for prepared statement names, increases reuse and avoids random reuse
Diffstat (limited to 'libpqpp/pq-command.cpp')
-rw-r--r--libpqpp/pq-command.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/libpqpp/pq-command.cpp b/libpqpp/pq-command.cpp
index a6259df..5ff83f0 100644
--- a/libpqpp/pq-command.cpp
+++ b/libpqpp/pq-command.cpp
@@ -5,10 +5,11 @@
#include <compileTimeFormatter.h>
#include <boost/date_time/posix_time/posix_time.hpp>
-AdHocFormatter(PQCommondStatement, "pStatement_%?_%?");
-PQ::Command::Command(Connection * conn, const std::string & sql, unsigned int no) :
+AdHocFormatter(PQCommondStatement, "pStatement_id%?");
+PQ::Command::Command(Connection * conn, const std::string & sql, const DB::CommandOptions * opts) :
DB::Command(sql),
- stmntName(PQCommondStatement::get(no, this)),
+ hash(opts && opts->hash ? *opts->hash : std::hash<std::string>()(sql)),
+ stmntName(PQCommondStatement::get(hash)),
c(conn)
{
}