Index: /branches/release-33/lib/MT/ObjectDriverFactory.pm
===================================================================
--- /branches/release-33/lib/MT/ObjectDriverFactory.pm (revision 1456)
+++ /branches/release-33/lib/MT/ObjectDriverFactory.pm (revision 1771)
@@ -94,4 +94,5 @@
         }
         $MT::Object::DRIVER = undef;
+        $MT::Object::DBI_DRIVER = undef;
     }
 }
Index: /branches/release-33/lib/MT/Object.pm
===================================================================
--- /branches/release-33/lib/MT/Object.pm (revision 1757)
+++ /branches/release-33/lib/MT/Object.pm (revision 1771)
@@ -220,4 +220,10 @@
         $class->add_trigger( pre_save  => get_date_translator(\&ts2db, 1) );
         $class->add_trigger( post_load => get_date_translator(\&db2ts, 0) );
+    }
+
+    if ( exists($props->{cacheable}) && !$props->{cacheable} ) {
+        no warnings 'redefine';
+        no strict 'refs'; ## no critic
+        *{$class . '::driver'} = sub { $_[0]->dbi_driver(@_) };
     }
 
@@ -727,4 +733,17 @@
 }
 
+# ref to the fallback driver for non-cacheable classes
+our $DBI_DRIVER;
+sub dbi_driver {
+    unless ($DBI_DRIVER) {
+        my $driver = driver(@_);
+        if ( my $fb_driver = $driver->fallback ) {
+            $driver = $fb_driver;
+        }
+        $DBI_DRIVER = $driver;
+    }
+    return $DBI_DRIVER;
+}
+
 sub table_name {
     my $obj = shift;
