Fixed serialization of multi-row inserts

This commit is contained in:
rbock
2014-01-27 12:48:24 +01:00
parent dda4fc2586
commit a9cfe534ef
3 changed files with 9 additions and 3 deletions

View File

@@ -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);
}

View File

@@ -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>

View File

@@ -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 << ')';