summaryrefslogtreecommitdiff
path: root/lib/input/mysqlRecordSet.cpp
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2021-07-03 16:55:44 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2021-07-03 16:55:44 +0100
commita3c014b1c938fd16ff6d1f8eadeea3effd3a5a90 (patch)
treee94a7bbf4b9dd8280ffbe133c712489ce7c40e28 /lib/input/mysqlRecordSet.cpp
parentSupport stopping the event stream reading (diff)
downloadmygrate-a3c014b1c938fd16ff6d1f8eadeea3effd3a5a90.tar.bz2
mygrate-a3c014b1c938fd16ff6d1f8eadeea3effd3a5a90.tar.xz
mygrate-a3c014b1c938fd16ff6d1f8eadeea3effd3a5a90.zip
Split MySQLRecordSet data away from interface
Diffstat (limited to 'lib/input/mysqlRecordSet.cpp')
-rw-r--r--lib/input/mysqlRecordSet.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/input/mysqlRecordSet.cpp b/lib/input/mysqlRecordSet.cpp
index 9eec30f..33c5e6f 100644
--- a/lib/input/mysqlRecordSet.cpp
+++ b/lib/input/mysqlRecordSet.cpp
@@ -11,9 +11,8 @@
// IWYU pragma: no_include <ext/alloc_traits.h>
namespace MyGrate::Input {
- MySQLRecordSet::MySQLRecordSet(StmtPtr s) :
- stmt {std::move(s)}, stmtres {nullptr, nullptr}, fields(mysql_stmt_field_count(stmt.get())),
- extras(fields.size())
+ MySQLData::MySQLData(StmtPtr s) :
+ stmt {std::move(s)}, fields(mysql_stmt_field_count(stmt.get())), extras(fields.size())
{
auto getBind = [](const MYSQL_FIELD & f, MYSQL_BIND & b) -> std::unique_ptr<ResultData> {
switch (f.type) {
@@ -72,6 +71,16 @@ namespace MyGrate::Input {
extras[i] = getBind(fieldDefs[i], fields[i]);
}
verify<MySQLErr>(!mysql_stmt_bind_result(stmt.get(), fields.data()), "Store result error", stmt->mysql);
+ }
+
+ std::size_t
+ MySQLData::columns() const
+ {
+ return fields.size();
+ }
+
+ MySQLRecordSet::MySQLRecordSet(StmtPtr s) : MySQLData(std::move(s)), stmtres {nullptr, nullptr}
+ {
verify<MySQLErr>(!mysql_stmt_store_result(stmt.get()), "Store result error", stmt->mysql);
stmtres = {stmt.get(), mysql_stmt_free_result};
}
@@ -85,7 +94,7 @@ namespace MyGrate::Input {
std::size_t
MySQLRecordSet::columns() const
{
- return fields.size();
+ return MySQLData::columns();
}
DbValue