aboutsummaryrefslogtreecommitdiff
path: root/oracle
diff options
context:
space:
mode:
authorConstantin Michael <constantin@codesynthesis.com>2011-11-15 16:35:47 +0200
committerConstantin Michael <constantin@codesynthesis.com>2011-11-16 11:25:33 +0200
commit076a61b6c19044a38de8c17b0fefbc74074491f4 (patch)
tree8e6e0e2ee69f4ccdc5757e866ddab1b39cbd4dcb /oracle
parent7b6ace8f265e12704cc1d7e0c6f26dfe51ea2809 (diff)
Test containers of Oracle LOB types
Diffstat (limited to 'oracle')
-rw-r--r--oracle/types/driver.cxx5
-rw-r--r--oracle/types/test.hxx16
2 files changed, 19 insertions, 2 deletions
diff --git a/oracle/types/driver.cxx b/oracle/types/driver.cxx
index aac636a..fa056ff 100644
--- a/oracle/types/driver.cxx
+++ b/oracle/types/driver.cxx
@@ -65,6 +65,11 @@ main (int argc, char* argv[])
o.raw_.assign (long_str.data (), long_str.data () + long_str.size ());
o.blob_.assign (vlong_str.data (), vlong_str.data () + vlong_str.size ());
+ o.strs_.push_back (short_str);
+ o.strs_.push_back (medium_str);
+ o.strs_.push_back (long_str);
+ o.strs_.push_back (vlong_str);
+
// Persist.
//
{
diff --git a/oracle/types/test.hxx b/oracle/types/test.hxx
index be49b82..b496114 100644
--- a/oracle/types/test.hxx
+++ b/oracle/types/test.hxx
@@ -8,7 +8,7 @@
#include <string>
#include <vector>
-#include <iostream>
+#include <memory> // std::auto_ptr
#include <odb/core.hxx>
@@ -96,6 +96,9 @@ struct time_interval
int nanosecond;
};
+typedef std::auto_ptr<std::string> string_ptr;
+typedef std::vector<std::string> strings;
+
#pragma db object
struct object
{
@@ -181,8 +184,15 @@ struct object
#pragma db type ("NCLOB")
std::string nclob_;
+ // Test containers of LOBs
+ //
+ #pragma db value_type ("CLOB")
+ strings strs_;
+
// Test NULL value.
//
+ #pragma db type ("VARCHAR(32)") null
+ string_ptr null_;
bool
operator== (const object& y) const
@@ -208,7 +218,9 @@ struct object
raw_ == y.raw_ &&
blob_ == y.blob_ &&
clob_ == y.clob_ &&
- nclob_ == y.nclob_;
+ nclob_ == y.nclob_ &&
+ strs_ == y.strs_ &&
+ ((null_.get () == 0 && y.null_.get () == 0) || *null_ == *y.null_);
}
};