diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/CoreTypeMappings.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/CoreTypeMappings.java
index c0551e6..e2ebb06 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/CoreTypeMappings.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/CoreTypeMappings.java
@@ -173,7 +173,7 @@
       {
         return null;
       }
-      
+
       int pos = str.indexOf('-');
 
       byte[] id = HexUtil.hexToBytes(str.substring(0, pos));
@@ -225,7 +225,7 @@
       {
         return null;
       }
-      
+
       int pos = str.indexOf('-');
 
       byte[] id = HexUtil.hexToBytes(str.substring(0, pos));
@@ -689,6 +689,38 @@
   /**
    * @author Eike Stepper
    */
+  public static class TMBytesVarbinary extends AbstractTypeMapping
+  {
+    public static final Factory FACTORY = new Factory(TypeMappingUtil.createDescriptor(ID_PREFIX
+        + ".ByteArrayVarbinary", EcorePackage.eINSTANCE.getEByteArray(), DBType.VARBINARY));
+
+    @Override
+    public Object getResultSetValue(ResultSet resultSet) throws SQLException
+    {
+      return resultSet.getBytes(getField().getName());
+    }
+
+    /**
+     * @author Eike Stepper
+     */
+    public static class Factory extends AbstractTypeMappingFactory
+    {
+      public Factory(Descriptor descriptor)
+      {
+        super(descriptor);
+      }
+
+      @Override
+      public ITypeMapping create(String description) throws ProductCreationException
+      {
+        return new TMBytesVarbinary();
+      }
+    }
+  }
+
+  /**
+   * @author Eike Stepper
+   */
   public static class TMBoolean extends AbstractTypeMapping
   {
     public static final Factory FACTORY = new Factory(TypeMappingUtil.createDescriptor(ID_PREFIX + ".Boolean",
@@ -857,7 +889,7 @@
       {
         return null;
       }
-      
+
       EFactory factory = getFeature().getEType().getEPackage().getEFactoryInstance();
       return factory.convertToString((EDataType)getFeature().getEType(), defaultValue);
     }
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/TypeMappingRegistry.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/TypeMappingRegistry.java
index ccf5f6d..5a3f859 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/TypeMappingRegistry.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/TypeMappingRegistry.java
@@ -127,6 +127,7 @@
     container.registerFactory(CoreTypeMappings.TMByte.FACTORY);
     container.registerFactory(CoreTypeMappings.TMByte.FACTORY_OBJECT);
     container.registerFactory(CoreTypeMappings.TMBytes.FACTORY);
+    container.registerFactory(CoreTypeMappings.TMBytesVarbinary.FACTORY);
     container.registerFactory(CoreTypeMappings.TMCharacter.FACTORY);
     container.registerFactory(CoreTypeMappings.TMCharacter.FACTORY_OBJECT);
     container.registerFactory(CoreTypeMappings.TMCustom.FACTORY_VARCHAR);
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AttributeTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AttributeTest.java
index 7d57cba..802dfc7 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AttributeTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AttributeTest.java
@@ -100,7 +100,7 @@
   }
 
   // XXX disabled because of Bug 289445
-  @Skips("Postgresql")
+  // @Skips("Postgresql")
   @CleanRepositoriesBefore
   public void testByteArray() throws Exception
   {
@@ -144,7 +144,7 @@
   }
 
   // XXX disabled because of Bug 289445
-  @Skips("Postgresql")
+  // @Skips("Postgresql")
   @CleanRepositoriesBefore
   public void testByteArrayEmpty() throws Exception
   {
@@ -182,7 +182,7 @@
   }
 
   // XXX disabled because of Bug 289445
-  @Skips("Postgresql")
+  // @Skips("Postgresql")
   @CleanRepositoriesBefore
   public void testByteArrayNull() throws Exception
   {
diff --git a/plugins/org.eclipse.net4j.db.postgresql/src/org/eclipse/net4j/db/postgresql/PostgreSQLAdapter.java b/plugins/org.eclipse.net4j.db.postgresql/src/org/eclipse/net4j/db/postgresql/PostgreSQLAdapter.java
index 8f70a4e..5246985 100644
--- a/plugins/org.eclipse.net4j.db.postgresql/src/org/eclipse/net4j/db/postgresql/PostgreSQLAdapter.java
+++ b/plugins/org.eclipse.net4j.db.postgresql/src/org/eclipse/net4j/db/postgresql/PostgreSQLAdapter.java
@@ -99,6 +99,7 @@
     case VARCHAR:
     case CLOB:
       return "text"; //$NON-NLS-1$
+    case VARBINARY:
     case BLOB:
       return "bytea"; //$NON-NLS-1$
     case DOUBLE:
