From e00bc68eb5eb8070c8799275f73345a27f7abc60 Mon Sep 17 00:00:00 2001 From: Constantin Michael Date: Thu, 10 Nov 2011 13:07:20 +0200 Subject: Test large Oracle LOBs --- oracle/types/driver.cxx | 22 ++++++++++++++++++++++ oracle/types/test.hxx | 23 +++++++++++++++++++++++ 2 files changed, 45 insertions(+) (limited to 'oracle') diff --git a/oracle/types/driver.cxx b/oracle/types/driver.cxx index b786cec..aac636a 100644 --- a/oracle/types/driver.cxx +++ b/oracle/types/driver.cxx @@ -169,6 +169,28 @@ main (int argc, char* argv[]) assert (bui3 == *buil3); } + // Test large BLOBs. + // + blob b (1, 50000); + + // Persist. + // + { + transaction t (db->begin ()); + db->persist (b); + t.commit (); + } + + // Load. + // + { + transaction t (db->begin ()); + auto_ptr bl (db->load (1)); + t.commit (); + + assert (b == *bl); + } + // Test descriptor management in TIMESTAMP and INTERVAL images. // { diff --git a/oracle/types/test.hxx b/oracle/types/test.hxx index 907d310..be49b82 100644 --- a/oracle/types/test.hxx +++ b/oracle/types/test.hxx @@ -252,4 +252,27 @@ struct big_int } }; +#pragma db object +struct blob +{ + blob (): id_ (0) {} + + blob (unsigned int id, std::size_t n) + : id_ (id), value_ ('b', n) + { + } + + #pragma db id + unsigned int id_; + + #pragma db type ("BLOB") + std::vector value_; + + bool + operator== (const blob& y) const + { + return id_ == y.id_ && value_ == y.value_; + } +}; + #endif // TEST_HXX -- cgit v1.1