diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 <!-- -*- Markdown -*- -->
 
+## 0.10.0.1
+
+- backport fix of fromMaybe record width.
+
 ## 0.10.0.0
 
 - switch namespace to Database.Relational
diff --git a/relational-query.cabal b/relational-query.cabal
--- a/relational-query.cabal
+++ b/relational-query.cabal
@@ -1,5 +1,5 @@
 name:                relational-query
-version:             0.10.0.0
+version:             0.10.0.1
 synopsis:            Typeful, Modular, Relational, algebraic query engine
 description:         This package contiains typeful relation structure and
                      relational-algebraic query building DSL which can
diff --git a/src/Database/Relational/Projectable.hs b/src/Database/Relational/Projectable.hs
--- a/src/Database/Relational/Projectable.hs
+++ b/src/Database/Relational/Projectable.hs
@@ -306,7 +306,7 @@
 
 unsafeCastProjectable :: SqlContext c
                       => Record c a -> Record c b
-unsafeCastProjectable = unsafeProjectSql' . unsafeShowSql'
+unsafeCastProjectable = Syntax.record . Syntax.untypeRecord
 
 -- | Number fromIntegral uni-operator.
 fromIntegral' :: (SqlContext c, Integral a, Num b)
diff --git a/test/sqlsEq.hs b/test/sqlsEq.hs
--- a/test/sqlsEq.hs
+++ b/test/sqlsEq.hs
@@ -415,6 +415,15 @@
 
   return $ fromMaybe (value 1) (a ?! intA0') >< b
 
+maybeY :: Relation () (SetA, SetB)
+maybeY =  relation $ do
+  a <- queryMaybe setA
+  b <- query setB
+
+  wheres $ a ?! strA2' .=. b ! mayStrB1'
+
+  return $ fromMaybe (SetA |$| value 1 |*| value "foo" |*| value "var") a >< b
+
 notX :: Relation () (Maybe Bool)
 notX = relation $
   return $ not' valueFalse
@@ -438,6 +447,12 @@
   , eqProp "fromMaybe" maybeX
     "SELECT ALL CASE WHEN (T0.int_a0 IS NULL) THEN 1 ELSE T0.int_a0 END AS f0, \
     \           T1.int_b0 AS f1, T1.may_str_b1 AS f2, T1.str_b2 AS f3 \
+    \  FROM TEST.set_a T0 RIGHT JOIN TEST.set_b T1 ON (0=0) WHERE (T0.str_a2 = T1.may_str_b1)"
+  , eqProp "fromMaybe record" maybeY
+    "SELECT ALL CASE WHEN (T0.int_a0 IS NULL) THEN 1 ELSE T0.int_a0 END AS f0, \
+    \           CASE WHEN (T0.int_a0 IS NULL) THEN 'foo' ELSE T0.str_a1 END AS f1, \
+    \           CASE WHEN (T0.int_a0 IS NULL) THEN 'var' ELSE T0.str_a2 END AS f2, \
+    \           T1.int_b0 AS f3, T1.may_str_b1 AS f4, T1.str_b2 AS f5 \
     \  FROM TEST.set_a T0 RIGHT JOIN TEST.set_b T1 ON (0=0) WHERE (T0.str_a2 = T1.may_str_b1)"
   , eqProp "not" notX
     "SELECT ALL (NOT (0=1)) AS f0"
