aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConstantin Michael <constantin@codesynthesis.com>2011-11-07 15:16:29 +0200
committerConstantin Michael <constantin@codesynthesis.com>2011-11-08 14:46:51 +0200
commit5b6382d1e83b69110f5b4a45abd433a48762aa22 (patch)
tree331ead6b0c6d7543f9d68ca368d9510da7c3381a
parent70492a2ffe88a8ba8393a895eee7716778bec84a (diff)
Pass LOB capacity using bind::capacity member instead of deriving at run-time
-rw-r--r--odb/relational/oracle/source.cxx17
1 files changed, 13 insertions, 4 deletions
diff --git a/odb/relational/oracle/source.cxx b/odb/relational/oracle/source.cxx
index c3d4f59..f362d5b 100644
--- a/odb/relational/oracle/source.cxx
+++ b/odb/relational/oracle/source.cxx
@@ -312,10 +312,19 @@ namespace relational
"callback;"
<< b << ".context = &" << arg << "." << mi.var << "context;"
<< "if (sk == statement_select)" << endl
+ << "{"
<< b << ".buffer = &" << arg << "." << mi.var << "lob;"
+ << b << ".capacity = sizeof (OCILobLocator*);"
+ << b << ".size = 0;"
+ << "}"
<< "else" << endl
+ << "{"
+ //@@ Modify to less than the total size to see what happens
+ //
+ << b << ".capacity = 4096;"
<< b << ".size = reinterpret_cast<ub2*> (&" << arg << "." <<
mi.var << "position_context);"
+ << "}"
<< endl;
}
@@ -838,13 +847,12 @@ namespace relational
os << traits << "::set_value (" << endl
<< member << "," << endl
<< "i." << mi.var << "value," << endl
- << "i." << mi.var << "size," << endl
<< "i." << mi.var << "indicator == -1);"
<< endl;
}
virtual void
- traverse_string (member_info& mi)
+ traverse_interval_ym (member_info& mi)
{
os << traits << "::set_value (" << endl
<< member << "," << endl
@@ -854,7 +862,7 @@ namespace relational
}
virtual void
- traverse_interval_ym (member_info& mi)
+ traverse_interval_ds (member_info& mi)
{
os << traits << "::set_value (" << endl
<< member << "," << endl
@@ -864,11 +872,12 @@ namespace relational
}
virtual void
- traverse_interval_ds (member_info& mi)
+ traverse_string (member_info& mi)
{
os << traits << "::set_value (" << endl
<< member << "," << endl
<< "i." << mi.var << "value," << endl
+ << "i." << mi.var << "size," << endl
<< "i." << mi.var << "indicator == -1);"
<< endl;
}