diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2014-11-19 13:54:39 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2014-11-19 13:54:39 +0200 |
commit | 164e70a313ffd245d2760c838a5a30475b7b75ff (patch) | |
tree | a3f54abbea691e4a7f7d5f73af70576dd7613d28 /odb/relational/validator.cxx | |
parent | d59e3c27450747e5a04585ee9e943376b5bcfa41 (diff) |
Allow empty runtime and execute views
Use them to handle INSERT/UPDATE SQL Server stored procedures.
Diffstat (limited to 'odb/relational/validator.cxx')
-rw-r--r-- | odb/relational/validator.cxx | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/odb/relational/validator.cxx b/odb/relational/validator.cxx index 9705121..3c8c327 100644 --- a/odb/relational/validator.cxx +++ b/odb/relational/validator.cxx @@ -431,11 +431,30 @@ namespace relational virtual void traverse_view (type& c) { + const view_query& vq (c.get<view_query> ("query")); + // Make sure we don't have any containers or object pointers. // view_members_.traverse (c); names (c, data_member_names_); + + // Allow certain kinds of empty views. + // + if (vq.kind != view_query::runtime && + vq.kind != view_query::complete_execute) + { + // Allow all the members to be deleted. + // + column_count_type const& cc (column_count (c)); + + if (cc.total == 0) + { + os << c.file () << ":" << c.line () << ":" << c.column () << ":" + << " error: no persistent data members in the class" << endl; + valid_ = false; + } + } } virtual void |