aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2013-04-05 12:27:59 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2013-04-10 18:46:46 +0200
commit0429c7b008594a874696f91c29b17ae4ee40efff (patch)
treec98c34dc43e32f4fa2589daea0acc9e2e83d3227
parentf0a8672c2128041001d6badba42ff672126581bb (diff)
Add NOT NULL column without default value initially as NULL
-rw-r--r--evolution/alter-column/driver.cxx15
-rw-r--r--evolution/alter-column/model.hxx9
2 files changed, 20 insertions, 4 deletions
diff --git a/evolution/alter-column/driver.cxx b/evolution/alter-column/driver.cxx
index 28e6e7c..193289f 100644
--- a/evolution/alter-column/driver.cxx
+++ b/evolution/alter-column/driver.cxx
@@ -63,11 +63,13 @@ main (int argc, char* argv[])
assert (!p->str);
assert (p->num && *p->num == 123);
+ assert (!p->num1);
// Migration.
//
p->str = "abc";
p->num.reset ();
+ p->num1 = 123;
db->update (*p);
t.commit ();
@@ -93,12 +95,25 @@ main (int argc, char* argv[])
try
{
object o2 (2);
+ o2.num1 = 234; // str is NULL
transaction t (db->begin ());
db->persist (o2);
assert (false);
}
catch (const odb::exception& ) {}
+
+ try
+ {
+ object o3 (3);
+ o3.str = "bcd"; // num1 is NULL
+
+ transaction t (db->begin ());
+ db->persist (o3);
+ assert (false);
+ }
+ catch (const odb::exception& ) {}
+
break;
}
default:
diff --git a/evolution/alter-column/model.hxx b/evolution/alter-column/model.hxx
index c244eb0..0b31e1c 100644
--- a/evolution/alter-column/model.hxx
+++ b/evolution/alter-column/model.hxx
@@ -30,9 +30,6 @@ namespace MODEL_NAMESPACE(MODEL_VERSION)
odb::nullable<std::string> str;
unsigned long num;
-
- #pragma db null
- unsigned long dummy; // Test multiple ALTER COLUMN clauses.
#else
// Use nullable to be able to access during migration.
//
@@ -41,7 +38,11 @@ namespace MODEL_NAMESPACE(MODEL_VERSION)
odb::nullable<unsigned long> num;
- unsigned long dummy;
+ // Test adding NOT NULL column. It should be added NULL in pre
+ // and then converted to NOT NULL in post.
+ //
+ #pragma db not_null
+ odb::nullable<unsigned long> num1;
#endif
};
}