summaryrefslogtreecommitdiff
path: root/lib/input
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2021-07-04 12:39:48 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2021-07-04 12:39:48 +0100
commit7d8dae0ec07f35fd0c0a67d39bb31e3f9513ad91 (patch)
tree129c6cd2ccf4a95fd8064c06426440f3be0c29a2 /lib/input
parentSplit MySQLRecordSet data away from interface (diff)
downloadmygrate-7d8dae0ec07f35fd0c0a67d39bb31e3f9513ad91.tar.bz2
mygrate-7d8dae0ec07f35fd0c0a67d39bb31e3f9513ad91.tar.xz
mygrate-7d8dae0ec07f35fd0c0a67d39bb31e3f9513ad91.zip
Get mysql statement errors from the statement, not connection
Diffstat (limited to 'lib/input')
-rw-r--r--lib/input/mysqlConn.cpp3
-rw-r--r--lib/input/mysqlConn.h1
-rw-r--r--lib/input/mysqlRecordSet.cpp8
3 files changed, 8 insertions, 4 deletions
diff --git a/lib/input/mysqlConn.cpp b/lib/input/mysqlConn.cpp
index 99c2891..305d638 100644
--- a/lib/input/mysqlConn.cpp
+++ b/lib/input/mysqlConn.cpp
@@ -12,6 +12,9 @@
namespace MyGrate::Input {
MySQLErr::MySQLErr(const std::string & when, MYSQL * c) : std::runtime_error(when + ": " + mysql_error(c)) { }
+ MySQLErr::MySQLErr(const std::string & when, MYSQL_STMT * s) : std::runtime_error(when + ": " + mysql_stmt_error(s))
+ {
+ }
MySQLConn::MySQLConn(const char * const host, const char * const user, const char * const pass, unsigned short port,
const char * const db) :
diff --git a/lib/input/mysqlConn.h b/lib/input/mysqlConn.h
index bd53616..3e775c1 100644
--- a/lib/input/mysqlConn.h
+++ b/lib/input/mysqlConn.h
@@ -13,6 +13,7 @@ namespace MyGrate::Input {
class MySQLErr : public std::runtime_error {
public:
MySQLErr(const std::string & when, MYSQL *);
+ MySQLErr(const std::string & when, MYSQL_STMT *);
};
class MySQLConn : public MYSQL, public DbConn {
diff --git a/lib/input/mysqlRecordSet.cpp b/lib/input/mysqlRecordSet.cpp
index 33c5e6f..1585052 100644
--- a/lib/input/mysqlRecordSet.cpp
+++ b/lib/input/mysqlRecordSet.cpp
@@ -66,11 +66,11 @@ namespace MyGrate::Input {
throw std::logic_error("Unsupported column type");
};
ResPtr meta {mysql_stmt_result_metadata(stmt.get()), mysql_free_result};
- const auto fieldDefs = verify<MySQLErr>(mysql_fetch_fields(meta.get()), "Fetch fields", stmt->mysql);
+ const auto fieldDefs = verify<MySQLErr>(mysql_fetch_fields(meta.get()), "Fetch fields", stmt.get());
for (std::size_t i = 0; i < fields.size(); i += 1) {
extras[i] = getBind(fieldDefs[i], fields[i]);
}
- verify<MySQLErr>(!mysql_stmt_bind_result(stmt.get(), fields.data()), "Store result error", stmt->mysql);
+ verify<MySQLErr>(!mysql_stmt_bind_result(stmt.get(), fields.data()), "Bind result error", stmt.get());
}
std::size_t
@@ -81,7 +81,7 @@ namespace MyGrate::Input {
MySQLRecordSet::MySQLRecordSet(StmtPtr s) : MySQLData(std::move(s)), stmtres {nullptr, nullptr}
{
- verify<MySQLErr>(!mysql_stmt_store_result(stmt.get()), "Store result error", stmt->mysql);
+ verify<MySQLErr>(!mysql_stmt_store_result(stmt.get()), "Store result error", stmt.get());
stmtres = {stmt.get(), mysql_stmt_free_result};
}
@@ -102,7 +102,7 @@ namespace MyGrate::Input {
{
if (currentRow != row) {
mysql_stmt_data_seek(stmt.get(), row);
- verify<MySQLErr>(!mysql_stmt_fetch(stmt.get()), "Fetch", stmt->mysql);
+ verify<MySQLErr>(!mysql_stmt_fetch(stmt.get()), "Fetch", stmt.get());
currentRow = row;
}
if (extras[col]->null) {