diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2013-04-03 11:22:42 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2013-04-10 18:46:44 +0200 |
commit | b0391e168b489811708ca7ba5f71a0eb67b46ffe (patch) | |
tree | ce15fb5ce0998ec27696152054609bb5dd4f45c3 /odb/relational/pgsql/schema.cxx | |
parent | e356a9112750e836197a8545bcf6cedad0c1ebe1 (diff) |
Generate add/drop table migration statements
Diffstat (limited to 'odb/relational/pgsql/schema.cxx')
-rw-r--r-- | odb/relational/pgsql/schema.cxx | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/odb/relational/pgsql/schema.cxx b/odb/relational/pgsql/schema.cxx index 0a2b82d..efe9b40 100644 --- a/odb/relational/pgsql/schema.cxx +++ b/odb/relational/pgsql/schema.cxx @@ -28,10 +28,10 @@ namespace relational drop_table (base const& x): base (x) {} virtual void - drop (sema_rel::qname const& table) + drop (sema_rel::qname const& table, bool migration) { - os << "DROP TABLE IF EXISTS " << quote_id (table) << - " CASCADE" << endl; + os << "DROP TABLE " << (migration ? "" : "IF EXISTS ") << + quote_id (table) << " CASCADE" << endl; } }; entry<drop_table> drop_table_; @@ -146,7 +146,10 @@ namespace relational { if (pass_ == 1) { - tables_.insert (t.name ()); // Add it before to cover self-refs. + // In migration we always add foreign keys on pass 2. + // + if (!t.is_a<sema_rel::add_table> ()) + tables_.insert (t.name ()); // Add it before to cover self-refs. base::traverse (t); return; } |