From 9531a62d7dc0adb28cd1687ec5fe4b9480b83bf1 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 6 Sep 2011 16:52:28 +0200 Subject: View support customizations for PostgreSQL --- odb/relational/pgsql/header.cxx | 13 +++++++++++-- odb/relational/pgsql/source.cxx | 40 ++++++++++++++++++++++++++++++++-------- 2 files changed, 43 insertions(+), 10 deletions(-) diff --git a/odb/relational/pgsql/header.cxx b/odb/relational/pgsql/header.cxx index 1622aff..8a606bd 100644 --- a/odb/relational/pgsql/header.cxx +++ b/odb/relational/pgsql/header.cxx @@ -21,9 +21,9 @@ namespace relational class_ (base const& x): base (x) {} virtual void - object_public_extra_post (type& t) + object_public_extra_post (type& c) { - if (abstract (t)) + if (abstract (c)) return; // Statement names. @@ -50,6 +50,15 @@ namespace relational << endl; } + + virtual void + view_public_extra_post (type&) + { + // Statement names. + // + os << "static const char* const query_statement_name;" + << endl; + } }; entry class_entry_; diff --git a/odb/relational/pgsql/source.cxx b/odb/relational/pgsql/source.cxx index da9d0d7..e21e2f5 100644 --- a/odb/relational/pgsql/source.cxx +++ b/odb/relational/pgsql/source.cxx @@ -873,14 +873,14 @@ namespace relational } virtual void - object_extra (type& t) + object_extra (type& c) { - if (abstract (t)) + if (abstract (c)) return; - string const& tn (t.fq_name ()); - string traits ("access::object_traits< " + tn + " >::"); - string const& fn (flat_name (tn)); + string const& n (c.fq_name ()); + string traits ("access::object_traits< " + n + " >::"); + string const& fn (flat_name (n)); string name_decl ("const char* const " + traits); os << name_decl << endl @@ -912,7 +912,7 @@ namespace relational // Statement types. // string oid_decl ("const unsigned int " + traits); - semantics::data_member* id_m (id_member (t)); + semantics::data_member* id_m (id_member (c)); // persist_statement_types. // @@ -922,7 +922,7 @@ namespace relational << "{"; instance st; - st->traverse (t); + st->traverse (c); os << "};"; } @@ -948,7 +948,7 @@ namespace relational << "{"; instance st; - st->traverse (t); + st->traverse (c); st->traverse_column (*id_m, "", false); os << "};"; @@ -969,6 +969,19 @@ namespace relational } virtual void + view_extra (type& c) + { + string const& n (c.fq_name ()); + string traits ("access::view_traits< " + n + " >::"); + string const& fn (flat_name (n)); + string name_decl ("const char* const " + traits); + + os << name_decl << endl + << "query_statement_name = " << strlit (fn + "_query") << ";" + << endl; + } + + virtual void object_query_statement_ctor_args (type&) { os << "sts.connection ()," << endl @@ -991,6 +1004,17 @@ namespace relational << "q.parameters_binding ()"; } + virtual void + view_query_statement_ctor_args (type&) + { + os << "sts.connection ()," << endl + << "query_statement_name," << endl + << "query_statement + q.clause (\"\")," << endl + << "q.parameter_types ()," << endl + << "q.parameter_count ()," << endl + << "q.parameters_binding ()," << endl + << "imb"; + } virtual void post_query_ (type&) -- cgit v1.1