Index: src/main/org/h2/engine/Mode.java
===================================================================
--- src/main/org/h2/engine/Mode.java	(revision 3903)
+++ src/main/org/h2/engine/Mode.java	(working copy)
@@ -130,6 +130,7 @@
         mode = new Mode("Derby");
         mode.aliasColumnName = true;
         mode.uniqueIndexSingleNull = true;
+        mode.supportOffsetFetch = true;
         mode.sysDummy1 = true;
         add(mode);
 
@@ -164,6 +165,7 @@
         mode.aliasColumnName = true;
         mode.nullConcatIsNull = true;
         mode.roundWhenConvertToLong = true;
+        mode.supportOffsetFetch = true;
         mode.systemColumns = true;
         add(mode);
     }
Index: src/main/org/h2/command/Parser.java
===================================================================
--- src/main/org/h2/command/Parser.java	(revision 3903)
+++ src/main/org/h2/command/Parser.java	(working copy)
@@ -1606,7 +1606,9 @@
                 }
             }
             if (readIf("FETCH")) {
-                read("FIRST");
+                if(!readIf("FIRST")){
+                    read("NEXT");
+                }
                 if (readIf("ROW")) {
                     command.setLimit(ValueExpression.get(ValueInt.get(1)));
                 } else {
Index: src/test/org/h2/test/db/TestCompatibility.java
===================================================================
--- src/test/org/h2/test/db/TestCompatibility.java	(revision 3903)
+++ src/test/org/h2/test/db/TestCompatibility.java	(working copy)
@@ -243,12 +243,23 @@
         assertThrows(ErrorCode.SCHEMA_NOT_FOUND_1, conn.createStatement()).
                 executeQuery("SELECT 1 FROM sysibm.sysdummy1");
         conn.close();
+        conn = getConnection("compatibility;MODE=DB2");
+        Statement stmt = conn.createStatement();
+        stmt.execute("drop table test");
+        stmt.execute("create table test(id varchar)");
+        stmt.execute("insert into test values ('3'),('1'),('2')");
+        res = stmt.executeQuery("select id from test order by id fetch next 2 rows only");
         conn = getConnection("compatibility");
+        res.next();
+        assertEquals("1", res.getString(1));
+        res.next();
+        assertEquals("2", res.getString(1));
+        assertFalse(res.next());
     }
 
     private void testDerby() throws SQLException {
         conn = getConnection("compatibility;MODE=Derby");
-        ResultSet res = conn.createStatement().executeQuery("SELECT 1 FROM sysibm.sysdummy1");
+        ResultSet res = conn.createStatement().executeQuery("SELECT 1 FROM sysibm.sysdummy1 fetch next 1 row only");
         res.next();
         assertEquals("1", res.getString(1));
         conn.close();
