summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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.