mirror of
https://github.com/rbock/sqlpp11.git
synced 2024-11-16 12:51:13 +08:00
Single column select has a value type
This commit is contained in:
parent
6c1d59ffc4
commit
2d2f08007a
@ -54,7 +54,7 @@ namespace sqlpp
|
|||||||
template <typename Column>
|
template <typename Column>
|
||||||
struct select_traits<Column>
|
struct select_traits<Column>
|
||||||
{
|
{
|
||||||
using _traits = make_traits<value_type_of_t<remove_optional_t<Column>>,
|
using _traits = make_traits<value_type_of_t<Column>,
|
||||||
tag::is_select_column_list,
|
tag::is_select_column_list,
|
||||||
tag::is_return_value,
|
tag::is_return_value,
|
||||||
tag::is_expression,
|
tag::is_expression,
|
||||||
@ -228,6 +228,9 @@ namespace sqlpp
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template <typename Column>
|
||||||
|
struct value_type_of<select_column_list_t<Column>> : public value_type_of<Column> {};
|
||||||
|
|
||||||
namespace detail
|
namespace detail
|
||||||
{
|
{
|
||||||
template <typename... Columns>
|
template <typename... Columns>
|
||||||
|
@ -264,6 +264,9 @@ namespace sqlpp
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<typename... Policies>
|
||||||
|
struct value_type_of<statement_t<Policies...>> : value_type_of<typename detail::statement_policies_t<Policies...>> {};
|
||||||
|
|
||||||
template <typename Context, typename... Policies>
|
template <typename Context, typename... Policies>
|
||||||
Context& serialize(const statement_t<Policies...>& t, Context& context)
|
Context& serialize(const statement_t<Policies...>& t, Context& context)
|
||||||
{
|
{
|
||||||
|
@ -46,24 +46,25 @@ void test_in_expression(Value v)
|
|||||||
auto v_not_null = sqlpp::value(v);
|
auto v_not_null = sqlpp::value(v);
|
||||||
auto v_maybe_null = sqlpp::value(sqlpp::compat::make_optional(v));
|
auto v_maybe_null = sqlpp::value(sqlpp::compat::make_optional(v));
|
||||||
|
|
||||||
#warning : Need to support in with select
|
|
||||||
// in(v_not_null, select(v_not_null.as(sqlpp::alias::a)));
|
|
||||||
|
|
||||||
// Compare non-nullable with non-nullable.
|
// Compare non-nullable with non-nullable.
|
||||||
static_assert(is_bool<decltype(in(v_not_null, std::make_tuple(v_not_null, v_not_null)))>::value, "");
|
static_assert(is_bool<decltype(in(v_not_null, std::make_tuple(v_not_null, v_not_null)))>::value, "");
|
||||||
static_assert(is_bool<decltype(in(v_not_null, std::vector<Value>{}))>::value, "");
|
static_assert(is_bool<decltype(in(v_not_null, std::vector<Value>{}))>::value, "");
|
||||||
|
static_assert(is_bool<decltype(in(v_not_null, select(v_not_null.as(sqlpp::alias::a))))>::value, "");
|
||||||
|
|
||||||
// Compare non-nullable with nullable.
|
// Compare non-nullable with nullable.
|
||||||
static_assert(is_maybe_bool<decltype(in(v_not_null, std::make_tuple(v_not_null, v_maybe_null)))>::value, "");
|
static_assert(is_maybe_bool<decltype(in(v_not_null, std::make_tuple(v_not_null, v_maybe_null)))>::value, "");
|
||||||
static_assert(is_maybe_bool<decltype(in(v_not_null, std::vector<OptValue>{}))>::value, "");
|
static_assert(is_maybe_bool<decltype(in(v_not_null, std::vector<OptValue>{}))>::value, "");
|
||||||
|
static_assert(is_maybe_bool<decltype(in(v_not_null, select(v_maybe_null.as(sqlpp::alias::a))))>::value, "");
|
||||||
|
|
||||||
// Compare nullable with non-nullable.
|
// Compare nullable with non-nullable.
|
||||||
static_assert(is_maybe_bool<decltype(in(v_maybe_null, std::make_tuple(v_not_null, v_not_null)))>::value, "");
|
static_assert(is_maybe_bool<decltype(in(v_maybe_null, std::make_tuple(v_not_null, v_not_null)))>::value, "");
|
||||||
static_assert(is_maybe_bool<decltype(in(v_maybe_null, std::vector<Value>{}))>::value, "");
|
static_assert(is_maybe_bool<decltype(in(v_maybe_null, std::vector<Value>{}))>::value, "");
|
||||||
|
static_assert(is_maybe_bool<decltype(in(v_maybe_null, select(v_not_null.as(sqlpp::alias::a))))>::value, "");
|
||||||
|
|
||||||
// Compare nullable with nullable.
|
// Compare nullable with nullable.
|
||||||
static_assert(is_maybe_bool<decltype(in(v_maybe_null, std::make_tuple(v_not_null, v_maybe_null)))>::value, "");
|
static_assert(is_maybe_bool<decltype(in(v_maybe_null, std::make_tuple(v_not_null, v_maybe_null)))>::value, "");
|
||||||
static_assert(is_maybe_bool<decltype(in(v_maybe_null, std::vector<OptValue>{}))>::value, "");
|
static_assert(is_maybe_bool<decltype(in(v_maybe_null, std::vector<OptValue>{}))>::value, "");
|
||||||
|
static_assert(is_maybe_bool<decltype(in(v_maybe_null, select(v_maybe_null.as(sqlpp::alias::a))))>::value, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename Value>
|
template<typename Value>
|
||||||
|
Loading…
Reference in New Issue
Block a user