summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConstantin Michael <constantin@codesynthesis.com>2011-10-17 09:04:27 +0200
committerConstantin Michael <constantin@codesynthesis.com>2011-10-21 11:47:14 +0200
commit33590ff77d991763d8dc6394a98c271bab19f56e (patch)
tree2abd34c14cc73e782377692eb64770cd3035f895
parentfdc9f349c4c9aa79d1a29b23f95fa439bff18498 (diff)
Do not allocate a buffer for LOB images as connections now maintain one
-rw-r--r--odb/relational/oracle/header.cxx1
-rw-r--r--odb/relational/oracle/source.cxx15
2 files changed, 6 insertions, 10 deletions
diff --git a/odb/relational/oracle/header.cxx b/odb/relational/oracle/header.cxx
index 539498d..9e4bb1c 100644
--- a/odb/relational/oracle/header.cxx
+++ b/odb/relational/oracle/header.cxx
@@ -175,7 +175,6 @@ namespace relational
"lob;"
<< "mutable oracle::lob_context " << mi.var << "context;"
<< "ub4 " << mi.var << "position_context;"
- << "char " << mi.var << "buffer[4096];"
<< endl;
}
diff --git a/odb/relational/oracle/source.cxx b/odb/relational/oracle/source.cxx
index e591234..25e3bc1 100644
--- a/odb/relational/oracle/source.cxx
+++ b/odb/relational/oracle/source.cxx
@@ -225,18 +225,15 @@ namespace relational
{
os << b << ".type = " <<
lob_buffer_types[mi.st->type - sql_type::BLOB] << ";"
+ << b << ".indicator = &" << arg << "." << mi.var << "indicator;"
<< b << ".callback = &" << arg << "." << mi.var <<
"callback;"
- << b << ".indicator = &" << arg << "." << mi.var << "indicator;"
- << b << ".size = " << "out" << endl
- << "? reinterpret_cast<ub2*> (&" << arg << "." << mi.var <<
- "lob)" << endl
- << ": reinterpret_cast<ub2*> (&" << arg << "." << mi.var <<
- "position_context);"
<< b << ".context = &" << arg << "." << mi.var << "context;"
- << b << ".buffer = " << arg << "." << mi.var << "buffer;"
- << b << ".capacity = static_cast<ub4> (sizeof (" << arg << "." <<
- mi.var << "buffer));"
+ << "if (out)" << endl
+ << b << ".buffer = &" << arg << "." << mi.var << "lob;"
+ << "else" << endl
+ << b << ".size = reinterpret_cast<ub2*> (&" << arg << "." <<
+ mi.var << "position_context);"
<< endl;
}