summaryrefslogtreecommitdiff
path: root/odb/relational/oracle/schema.cxx
diff options
context:
space:
mode:
authorConstantin Michael <constantin@codesynthesis.com>2011-10-20 10:30:16 +0200
committerConstantin Michael <constantin@codesynthesis.com>2011-10-21 11:47:14 +0200
commit7191726588c8ac90294e22fdc6a1a13b472919cd (patch)
treee01b36cceb3b53c9ebad72b39df24888366d6965 /odb/relational/oracle/schema.cxx
parent794541ef3899a614f1d3ecdcd20204073ab9ae03 (diff)
Specify all VARCHAR2 and NVARCHAR2 columns as nullable
Oracle interprets empty VARCHAR2 and NVARCHAR2 strings as NULL. As an empty string is always valid within the C++ context, VARCHAR2 and NVARCHAR2 columns are always specified as nullable.
Diffstat (limited to 'odb/relational/oracle/schema.cxx')
-rw-r--r--odb/relational/oracle/schema.cxx13
1 files changed, 13 insertions, 0 deletions
diff --git a/odb/relational/oracle/schema.cxx b/odb/relational/oracle/schema.cxx
index 8115f2f..045084a 100644
--- a/odb/relational/oracle/schema.cxx
+++ b/odb/relational/oracle/schema.cxx
@@ -112,6 +112,19 @@ namespace relational
object_columns (base const& x): base (x) {}
virtual void
+ null (semantics::data_member& m)
+ {
+ sql_type::core_type t (column_sql_type (m, prefix_).type);
+
+ // Oracle interprets empty VARCHAR2 and NVARCHAR2 strings as NULL. As
+ // an empty string is always valid within the C++ context, VARCHAR2
+ // and NVARCHAR2 columns are always specified as nullable.
+ //
+ if (t != sql_type::VARCHAR2 && t != sql_type::NVARCHAR2)
+ base::null (m);
+ }
+
+ virtual void
default_enum (semantics::data_member& m, tree en, string const&)
{
// Make sure the column is mapped to Oracle NUMBER.