From 4df6fc2a6ee361899e351259db53cf1a863f1cf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kirill=20M=C3=BCller?= Date: Mon, 30 Aug 2021 04:37:15 +0200 Subject: [PATCH 1/2] Promote log message --- src/MariaBinding.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/MariaBinding.cpp b/src/MariaBinding.cpp index 45402288..c8717085 100644 --- a/src/MariaBinding.cpp +++ b/src/MariaBinding.cpp @@ -177,10 +177,10 @@ bool MariaBinding::bind_next_row() { is_null[j] = missing; } - LOG_VERBOSE << "Binding"; + LOG_DEBUG << "Binding"; mysql_stmt_bind_param(statement, &bindings[0]); - LOG_VERBOSE << "Done binding row" << i; + LOG_DEBUG << "Done binding row " << i; i++; return true; } From 8e9700483dd5e69989bdb3eeddf9d5e9b07320ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kirill=20M=C3=BCller?= Date: Sun, 5 Sep 2021 05:42:13 +0200 Subject: [PATCH 2/2] Support binding multiple rows --- src/MariaBinding.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/MariaBinding.cpp b/src/MariaBinding.cpp index c8717085..b598c5ac 100644 --- a/src/MariaBinding.cpp +++ b/src/MariaBinding.cpp @@ -57,10 +57,10 @@ void MariaBinding::init_binding(const List& params_) { binding_update(j, MYSQL_TYPE_TINY, 1); break; case MY_INT32: - binding_update(j, MYSQL_TYPE_LONG, 4); + binding_update(j, MYSQL_TYPE_LONG, 4 * n_rows); break; case MY_DBL: - binding_update(j, MYSQL_TYPE_DOUBLE, 8); + binding_update(j, MYSQL_TYPE_DOUBLE, 8 * n_rows); break; case MY_DATE: binding_update(j, MYSQL_TYPE_DATE, sizeof(MYSQL_TIME)); @@ -89,6 +89,8 @@ bool MariaBinding::bind_next_row() { if (i >= n_rows) return false; + R_xlen_t delta = n_rows - i; + for (int j = 0; j < p; ++j) { LOG_VERBOSE << j << " -> " << type_name(types[j]); @@ -180,8 +182,10 @@ bool MariaBinding::bind_next_row() { LOG_DEBUG << "Binding"; mysql_stmt_bind_param(statement, &bindings[0]); - LOG_DEBUG << "Done binding row " << i; - i++; + mysql_stmt_attr_set(statement, STMT_ATTR_ARRAY_SIZE, &delta); + + LOG_DEBUG << "Done binding row " << i << " (" << delta << ")"; + i += delta; return true; }