From 5ecb61d9ee61a53ddbba6b9dea93e7a4adc448b8 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 10 Sep 2013 14:09:54 +0200 Subject: Schema versioning support for rest of database --- odb/relational/source.cxx | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) (limited to 'odb/relational/source.cxx') diff --git a/odb/relational/source.cxx b/odb/relational/source.cxx index 796fc13..7a0627d 100644 --- a/odb/relational/source.cxx +++ b/odb/relational/source.cxx @@ -668,7 +668,7 @@ traverse_object (type& c) statement_kind sk (statement_insert); // Imperfect forwarding. instance ct (sk, sc); ct->traverse (c); - process_statement_columns (sc, statement_insert); + process_statement_columns (sc, statement_insert, versioned); } bool dv (sc.empty ()); // The DEFAULT VALUES syntax. @@ -757,7 +757,7 @@ traverse_object (type& c) object_section* s (&main_section); // Imperfect forwarding. instance t (qtable, sk, sc, d, s); t->traverse (c); - process_statement_columns (sc, statement_select); + process_statement_columns (sc, statement_select, versioned); find_column_counts[poly_depth - d] = sc.size (); } @@ -863,7 +863,7 @@ traverse_object (type& c) if (opt != 0) t->traverse (*opt); - process_statement_columns (sc, statement_select); + process_statement_columns (sc, statement_select, false); } os << "const char " << traits << "::" << endl @@ -910,7 +910,7 @@ traverse_object (type& c) object_section* s (&main_section); // Imperfect forwarding. instance t (sk, sc, p, s); t->traverse (c); - process_statement_columns (sc, statement_update); + process_statement_columns (sc, statement_update, versioned); } os << "const char " << traits << "::update_statement[] =" << endl @@ -1022,15 +1022,6 @@ traverse_object (type& c) { // query_statement // - statement_columns sc; - { - statement_kind sk (statement_select); //@@ Imperfect forwarding. - object_section* s (&main_section); //@@ Imperfect forwarding. - instance oc (qtable, sk, sc, poly_depth, s); - oc->traverse (c); - process_statement_columns (sc, statement_select); - } - strings joins; if (poly_depth != 1) { @@ -1054,6 +1045,16 @@ traverse_object (type& c) query_optimize = !joins.empty (); + statement_columns sc; + { + statement_kind sk (statement_select); //@@ Imperfect forwarding. + object_section* s (&main_section); //@@ Imperfect forwarding. + instance oc (qtable, sk, sc, poly_depth, s); + oc->traverse (c); + process_statement_columns ( + sc, statement_select, versioned || query_optimize); + } + string sep (versioned || query_optimize ? "\n" : " "); os << "const char " << traits << "::query_statement[] =" << endl @@ -4318,13 +4319,6 @@ traverse_view (type& c) } else // vq.kind == view_query::condition { - statement_columns sc; - { - instance t (sc); - t->traverse (c); - process_statement_columns (sc, statement_select); - } - // Generate the from-list. // strings from; @@ -4828,6 +4822,14 @@ traverse_view (type& c) } } // End JOIN-generating for-loop. + statement_columns sc; + { + instance t (sc); + t->traverse (c); + process_statement_columns ( + sc, statement_select, versioned || query_optimize); + } + string sep (versioned || query_optimize ? "\n" : " "); os << "query_base_type r (" << endl -- cgit v1.1