diff --git a/lib/Doctrine/Record.php b/lib/Doctrine/Record.php
index c4a669719a28c9ce7c836872c25b7542b62bd792..73465ae00cf72cf9e65ef79069135d8290dbec5c 100644
--- a/lib/Doctrine/Record.php
+++ b/lib/Doctrine/Record.php
@@ -523,10 +523,16 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite
                 unset($vars['_data'][$k]);
             } else {
                 switch ($this->_table->getTypeOf($k)) {
-                    case "array":
-                    case "object":
+                    case 'array':
+                    case 'object':
                         $vars['_data'][$k] = serialize($vars['_data'][$k]);
                         break;
+                    case 'gzip':
+                        $vars['_data'][$k] = gzcompress($vars['_data'][$k]);
+                        break;
+                    case 'enum':
+                        $vars['_data'][$k] = $this->_table->enumIndex($k, $vars['_data'][$k]);
+                        break;
                 }
             }
         }