0
0
mirror of https://github.com/rbock/sqlpp11.git synced 2024-11-15 20:31:16 +08:00

A few FIXME's regarding remaining stuff for with clauses and ctes

This commit is contained in:
rbock 2015-02-07 14:42:29 +01:00
parent 2adf529445
commit aa9c8dcfce
2 changed files with 9 additions and 2 deletions

View File

@ -69,7 +69,7 @@ namespace sqlpp
using make_cte_t = typename make_cte_impl<AliasProvider, Statement, get_result_row_t<Statement>>::type;
template<typename AliasProvider, typename Statement, typename... ColumnSpecs>
struct cte_t: public member_t<ColumnSpecs, column_t<AliasProvider, ColumnSpecs>>... // FIXME
struct cte_t: public member_t<ColumnSpecs, column_t<AliasProvider, ColumnSpecs>>...
{
using _traits = make_traits<no_value_t, tag::is_cte, tag::is_table>;
struct _recursive_traits
@ -84,6 +84,9 @@ namespace sqlpp
using _tags = detail::type_set<>;
};
// FIXME: need a union_distinct and union_all here
// unions can depend on the cte itself In that case the cte is recursive.
using _alias_t = typename AliasProvider::_alias_t;
cte_t(Statement statement): _statement(statement){}
@ -124,6 +127,8 @@ namespace sqlpp
-> make_cte_t<AliasProvider, Statement>
{
// FIXME: Need to check stuff here.
// e.g. make sure that the statement does not require this a cte of this name (other ctes are allowed)
// make sure that the statement does not depend on external tables
return { statement };
}
};

View File

@ -144,7 +144,8 @@ namespace sqlpp
auto operator()(Statement statement)
-> new_statement_t<true, typename Statement::_policies_t, no_with_t, with_t<Database, Expressions...>>
{
// FIXME need checks here, e.g. if there is recursion
// FIXME need checks here
// check that no cte refers to any of the ctes to the right
return { statement, _data };
}
};
@ -158,6 +159,7 @@ namespace sqlpp
static Context& _(const T& t, Context& context)
{
// FIXME: If there is a recursive CTE, add a "RECURSIVE" here
context << " WITH ";
interpret_tuple(t._expressions, ',', context);
return context;