mirror of
https://github.com/rbock/sqlpp11.git
synced 2026-01-01 10:41:22 -06:00
Fixed serialization of multi-row inserts
This commit is contained in:
@@ -125,7 +125,7 @@ namespace sqlpp
|
||||
return {
|
||||
_table,
|
||||
_insert_list,
|
||||
{std::tuple<Column...>{columns...}},
|
||||
{std::tuple<vendor::simple_column_t<Column>...>{{columns}...}},
|
||||
vendor::insert_value_list_t<vendor::insert_value_t<Column>...>{},
|
||||
};
|
||||
}
|
||||
@@ -151,7 +151,7 @@ namespace sqlpp
|
||||
template<typename Db>
|
||||
std::size_t run(Db& db) const
|
||||
{
|
||||
static_assert(not vendor::is_noop<InsertList>::value, "calling set() or default_values()");
|
||||
static_assert(not (vendor::is_noop<InsertList>::value and vendor::is_noop<ColumnList>::value) , "calling set() or default_values()");
|
||||
static_assert(_get_static_no_of_parameters() == 0, "cannot run insert directly with parameters, use prepare instead");
|
||||
return db.insert(*this);
|
||||
}
|
||||
|
||||
3
include/sqlpp11/vendor/column_list.h
vendored
3
include/sqlpp11/vendor/column_list.h
vendored
@@ -30,6 +30,7 @@
|
||||
#include <sqlpp11/type_traits.h>
|
||||
#include <sqlpp11/detail/set.h>
|
||||
#include <sqlpp11/vendor/interpret_tuple.h>
|
||||
#include <sqlpp11/vendor/simple_column.h>
|
||||
|
||||
namespace sqlpp
|
||||
{
|
||||
@@ -55,7 +56,7 @@ namespace sqlpp
|
||||
using _prohibited_column_set = typename ::sqlpp::detail::make_set_if<must_not_insert_t, Columns...>::type;
|
||||
static_assert(_prohibited_column_set::size::value == 0, "at least one column argument has a must_not_insert flag in its definition");
|
||||
|
||||
_parameter_tuple_t _columns;
|
||||
std::tuple<simple_column_t<Columns>...> _columns;
|
||||
};
|
||||
|
||||
template<typename Context, typename... Columns>
|
||||
|
||||
5
include/sqlpp11/vendor/insert_value_list.h
vendored
5
include/sqlpp11/vendor/insert_value_list.h
vendored
@@ -87,8 +87,13 @@ namespace sqlpp
|
||||
static Context& _(const T& t, Context& context)
|
||||
{
|
||||
context << " VALUES ";
|
||||
bool first = true;
|
||||
for (const auto& row : t._insert_values)
|
||||
{
|
||||
if (not first)
|
||||
context << ',';
|
||||
else
|
||||
first = false;
|
||||
context << '(';
|
||||
interpret_tuple(row, ",", context);
|
||||
context << ')';
|
||||
|
||||
Reference in New Issue
Block a user