diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2024-01-25 20:32:06 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2024-01-25 20:32:06 +0300 |
commit | 0d49ea1fe08cf1eab41a00149393a291c65a59d7 (patch) | |
tree | 0391eb09309ca95282e200516937e64d89f3e1bb /evolution/embedded/driver.cxx | |
parent | fc3fb39c90ab7fe5fccbe3f3bc0eb2645157bb96 (diff) |
Turn odb-tests repository into package for muti-package repositoryodb-tests
Diffstat (limited to 'evolution/embedded/driver.cxx')
-rw-r--r-- | evolution/embedded/driver.cxx | 181 |
1 files changed, 0 insertions, 181 deletions
diff --git a/evolution/embedded/driver.cxx b/evolution/embedded/driver.cxx deleted file mode 100644 index 1816a5c..0000000 --- a/evolution/embedded/driver.cxx +++ /dev/null @@ -1,181 +0,0 @@ -// file : evolution/embedded/driver.cxx -// license : GNU GPL v2; see accompanying LICENSE file - -// Test embedded schema migration. -// - -#include <memory> // std::auto_ptr -#include <cassert> -#include <iostream> - -#include <odb/database.hxx> -#include <odb/transaction.hxx> -#include <odb/schema-catalog.hxx> - -#include <common/config.hxx> // DATABASE_XXX -#include <common/common.hxx> - -#ifdef DATABASE_PGSQL -# include <odb/pgsql/connection.hxx> -#endif - -#include "test2.hxx" -#include "test3.hxx" -#include "test2-odb.hxx" -#include "test3-odb.hxx" - -using namespace std; -using namespace odb::core; - -int -main (int argc, char* argv[]) -{ - try - { - auto_ptr<database> db (create_database (argc, argv, false)); - - // 1 - base version - // 2 - migration - // 3 - current version - // - unsigned short pass (*argv[argc - 1] - '0'); - - switch (pass) - { - case 1: - { - using namespace v2; - - { - transaction t (db->begin ()); - schema_catalog::drop_schema (*db); - t.commit (); - } - - // PostgreSQL cannot continue a transaction after a query failed. We - // have a workaround but only for 9.4+. - // -#ifdef DATABASE_PGSQL - { - odb::connection_ptr c (db->connection ()); - int v (static_cast<odb::pgsql::connection&> (*c).server_version ()); - if (v < 90400) - assert (db->schema_version () == 0); - } -#endif - - { - transaction t (db->begin ()); - assert (db->schema_version () == 0); - - schema_catalog::create_schema (*db, "", false); - - assert (db->schema_version () == 1 && !db->schema_migration ()); - - schema_catalog::migrate_schema (*db, 2); - t.commit (); - } - - assert (db->schema_version () == 2 && !db->schema_migration ()); - - { - transaction t (db->begin ()); - object1 o1 (1); - o1.num = 123; - db->persist (o1); - t.commit (); - } - break; - } - case 2: - { - using namespace v2; - using namespace v3; - - // Check version information correctness. - // - assert (schema_catalog::base_version (*db) == 1); - assert (schema_catalog::current_version (*db) == 3); - assert (schema_catalog::next_version (*db, 0) == 3); - assert (schema_catalog::next_version (*db, 1) == 2); - assert (schema_catalog::next_version (*db) == 3); - assert (schema_catalog::next_version (*db, 3) == 4); - - { - assert (db->schema_version () == 2 && !db->schema_migration ()); - - transaction t (db->begin ()); - schema_catalog::migrate_schema_pre (*db, 3); - t.commit (); - } - - assert (db->schema_version () == 3 && db->schema_migration ()); - - { - transaction t (db->begin ()); - auto_ptr<object1> o1 (db->load<object1> (1)); - object2 o2 (1); - o2.num = o1->num; - db->persist (o2); - t.commit (); - } - - { - transaction t (db->begin ()); - schema_catalog::migrate_schema_post (*db, 3); - t.commit (); - - assert (db->schema_version () == 3 && !db->schema_migration ()); - } - break; - } - case 3: - { - using namespace v3; - - // In transaction. - // - { - transaction t (db->begin ()); - assert (db->schema_version () == 3 && !db->schema_migration ()); - t.commit (); - } - - { - transaction t (db->begin ()); - auto_ptr<object2> o2 (db->load<object2> (1)); - assert (o2->num == 123); - t.commit (); - } - - // Test the case where there is still no version table. - // - db->schema_version_migration (0, false); - - { - transaction t (db->begin ()); - -#ifdef DATABASE_ORACLE - db->execute ("DROP TABLE \"schema_version\""); -#else - db->execute ("DROP TABLE schema_version"); -#endif - t.commit (); - } - - assert (db->schema_version () == 0); - break; - } - default: - { - cerr << "unknown pass number '" << argv[argc - 1] << "'" << endl; - return 1; - } - } - } - catch (const odb::exception& e) - { - cerr << e.what () << endl; - return 1; - } -} |