diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2013-12-04 11:30:33 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2013-12-04 11:30:33 +0200 |
commit | 4f22837bda784e29f17750c8f1d623b40c1093d4 (patch) | |
tree | 136b42d29c180fb52a1327ea61894025770d0f90 /common/relationship/driver.cxx | |
parent | 33a8e17efb8c622413a861047c5c4589a9828f62 (diff) |
Implement on_delete pragma for object pointers
Translates to the ON DELETE SQL clause.
Diffstat (limited to 'common/relationship/driver.cxx')
-rw-r--r-- | common/relationship/driver.cxx | 159 |
1 files changed, 0 insertions, 159 deletions
diff --git a/common/relationship/driver.cxx b/common/relationship/driver.cxx deleted file mode 100644 index 127a894..0000000 --- a/common/relationship/driver.cxx +++ /dev/null @@ -1,159 +0,0 @@ -// file : common/relationship/driver.cxx -// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC -// license : GNU GPL v2; see accompanying LICENSE file - -// Test object relationships. -// - -#include <memory> // std::auto_ptr -#include <cassert> -#include <iostream> - -#include <odb/database.hxx> -#include <odb/transaction.hxx> - -#include <common/common.hxx> - -#include "test.hxx" -#include "test-odb.hxx" - -using namespace std; -using namespace odb::core; - -int -main (int argc, char* argv[]) -{ - try - { - auto_ptr<database> db (create_database (argc, argv)); - - aggr a ("aggr"); - a.o1 = new obj1 ("o1", "obj1"); - a.o2.reset (new obj2 ("obj2")); - -#ifdef HAVE_CXX11 - a.v2.push_back (obj2_ptr (new obj2 ("v1 obj2 1"))); - a.v2.push_back (0); - a.v2.push_back (obj2_ptr (new obj2 ("v1 obj2 2"))); -#endif - -#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY) - a.o3.reset (new obj3 ("obj3")); - - a.c.num = 123; - a.c.o3.reset (new obj3 ("c")); - - a.cv.push_back (comp (234, obj3_ptr (new obj3 ("cv 0")))); - a.cv.push_back (comp (235, obj3_ptr ())); - a.cv.push_back (comp (236, obj3_ptr (new obj3 ("cv 2")))); -#endif - - a.v1.push_back (new obj1 ("v1 0", "v1 0")); - a.v1.push_back (0); - a.v1.push_back (new obj1 ("v1 2", "v1 2")); - - // Set cannot contain NULL pointers. - // - a.s1.insert (new obj1 ("s1 0", "s1 0")); - a.s1.insert (new obj1 ("s1 2", "s1 2")); - - a.m1[0] = new obj1 ("m1 0", "m1 0"); - a.m1[1] = 0; - a.m1[2] = new obj1 ("m1 2", "m1 2"); - - // persist - // - { - transaction t (db->begin ()); - db->persist (a.o1); - db->persist (a.o2); - -#ifdef HAVE_CXX11 - for (obj2_vec::iterator i (a.v2.begin ()); i != a.v2.end (); ++i) - if (*i) - db->persist (*i); -#endif - -#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY) - db->persist (a.o3); - - db->persist (a.c.o3); - - for (comp_vec::iterator i (a.cv.begin ()); i != a.cv.end (); ++i) - if (i->o3) - db->persist (i->o3); -#endif - - for (obj1_vec::iterator i (a.v1.begin ()); i != a.v1.end (); ++i) - if (*i) - db->persist (*i); - - for (obj1_set::iterator i (a.s1.begin ()); i != a.s1.end (); ++i) - if (*i) - db->persist (*i); - - for (obj1_map::iterator i (a.m1.begin ()); i != a.m1.end (); ++i) - if (i->second) - db->persist (i->second); - - db->persist (a); - t.commit (); - } - - // load & compare - // - { - transaction t (db->begin ()); - auto_ptr<aggr> a1 (db->load<aggr> (a.id)); - t.commit (); - - assert (*a1 == a); - } - - // query - // - typedef odb::query<aggr> query; - typedef odb::result<aggr> result; - - { - transaction t (db->begin ()); - - result r (db->query<aggr> (query::o1->str == "obj1")); - assert (!r.empty ()); - assert (r.begin ()->o1->id == a.o1->id); - assert (size (r) == 1); - - t.commit (); - } - - // Test NULL pointer. - // - delete a.o1; - a.o1 = 0; - a.o2.reset (); -#if defined(HAVE_CXX11) || defined(HAVE_TR1_MEMORY) - a.o3.reset (); -#endif - - { - transaction t (db->begin ()); - db->update (a); - t.commit (); - } - - // load & compare - // - { - transaction t (db->begin ()); - auto_ptr<aggr> a1 (db->load<aggr> (a.id)); - t.commit (); - - assert (*a1 == a); - } - } - catch (const odb::exception& e) - { - cerr << e.what () << endl; - return 1; - } -} |