diff options
Diffstat (limited to 'evolution/combined/driver.cxx')
-rw-r--r-- | evolution/combined/driver.cxx | 54 |
1 files changed, 45 insertions, 9 deletions
diff --git a/evolution/combined/driver.cxx b/evolution/combined/driver.cxx index c87b14e..9cb2853 100644 --- a/evolution/combined/driver.cxx +++ b/evolution/combined/driver.cxx @@ -11,6 +11,7 @@ #include <odb/database.hxx> #include <odb/transaction.hxx> +#include <odb/schema-catalog.hxx> #include <common/common.hxx> @@ -27,7 +28,8 @@ main (int argc, char* argv[]) { try { - auto_ptr<database> db (create_database (argc, argv)); + auto_ptr<database> db (create_database (argc, argv, false)); + bool embedded (schema_catalog::exists (*db, "test2")); // 1 - base version // 2 - migration @@ -41,21 +43,35 @@ main (int argc, char* argv[]) { using namespace v2; + if (embedded) + { + transaction t (db->begin ()); + schema_catalog::create_schema (*db, "test2"); + schema_catalog::create_schema (*db, "test1"); + schema_catalog::migrate_schema (*db, 2, "test2"); + t.commit (); + } + object o ("1"); o.dui = 1; - o.dfk = new object1 (1); - o.acn = 1; o.anui = 1; o.dnui = 1; o.dt.push_back (1); + o.aui = 1; + +#ifndef DATABASE_SQLITE + o.dfk = new object1 (1); + o.acn = 1; o.dc = 1; o.acnn.reset (); o.afk = 1; - o.aui = 1; +#endif { transaction t (db->begin ()); +#ifndef DATABASE_SQLITE db->persist (o.dfk); +#endif db->persist (o); t.commit (); } @@ -65,26 +81,44 @@ main (int argc, char* argv[]) { using namespace v3; + if (embedded) + { + transaction t (db->begin ()); + schema_catalog::migrate_schema_pre (*db, 3, "test2"); + t.commit (); + } + { transaction t (db->begin ()); auto_ptr<object> p (db->load<object> ("1")); assert (p->ac1 == 999); assert (!p->ac2); - assert (!p->ac3); +#ifndef DATABASE_SQLITE + assert (!p->ac3); +#endif // Migrate. // - p->dfk = 999; p->at.push_back ("abc"); + +#ifndef DATABASE_SQLITE + p->dfk = 999; p->ac3 = 1; p->acn.reset (); p->acnn = 1; - +#endif db->update (*p); t.commit (); } + + if (embedded) + { + transaction t (db->begin ()); + schema_catalog::migrate_schema_post (*db, 3, "test2"); + t.commit (); + } break; } case 3: @@ -97,12 +131,14 @@ main (int argc, char* argv[]) // Check post-migration. // - assert (p->dfk == 999); assert (p->at[0] == "abc"); + +#ifndef DATABASE_SQLITE + assert (p->dfk == 999); assert (*p->ac3 == 1); assert (!p->acn); assert (*p->acnn == 1); - +#endif t.commit (); } break; |